<?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>205107</bug_id>
          
          <creation_ts>2019-12-11 02:17:11 -0800</creation_ts>
          <short_desc>Put all generated JSCells in WebCore into IsoSubspace</short_desc>
          <delta_ts>2020-03-07 16:21:30 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208711</see_also>
          <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>
          <dependson>208704</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597550</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-11 02:17:11 -0800</bug_when>
    <thetext>Do it via CodeGeneratorJS.pm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625426</commentid>
    <comment_count>1</comment_count>
      <attachid>392377</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-03 23:02:22 -0800</bug_when>
    <thetext>Created attachment 392377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625818</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-04 15:37:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/60060068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625824</commentid>
    <comment_count>3</comment_count>
      <attachid>392497</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-04 15:47:01 -0800</bug_when>
    <thetext>Created attachment 392497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625835</commentid>
    <comment_count>4</comment_count>
      <attachid>392504</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-04 16:24:16 -0800</bug_when>
    <thetext>Created attachment 392504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625842</commentid>
    <comment_count>5</comment_count>
      <attachid>392507</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-04 16:41:38 -0800</bug_when>
    <thetext>Created attachment 392507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625884</commentid>
    <comment_count>6</comment_count>
      <attachid>392521</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-04 17:40:21 -0800</bug_when>
    <thetext>Created attachment 392521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625900</commentid>
    <comment_count>7</comment_count>
      <attachid>392521</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-03-04 18:44:49 -0800</bug_when>
    <thetext>Comment on attachment 392521
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4679
&gt; +        push(@implContent, &quot;    else\n&quot;);
&gt; +        push(@implContent, &quot;        spaces.m_subspaceFor${interfaceName} = makeUnique&lt;IsoSubspace&gt; ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), ${className});\n&quot;);

can we also assert here that the object is not destructible. Maybe even static assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625902</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-03-04 18:45:02 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625960</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-04 23:18:24 -0800</bug_when>
    <thetext>Committed r257905: &lt;https://trac.webkit.org/changeset/257905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626150</commentid>
    <comment_count>10</comment_count>
    <who name="Jason Lawrence">Lawrence.j</who>
    <bug_when>2020-03-05 10:02:24 -0800</bug_when>
    <thetext>Reverted r257905 for reason:

This commit caused crashes on Mac wk2 Debug.

Committed r257922: &lt;https://trac.webkit.org/changeset/257922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626317</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-05 15:01:27 -0800</bug_when>
    <thetext>Committed r257950: &lt;https://trac.webkit.org/changeset/257950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626581</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 02:50:20 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 208704</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626588</commentid>
    <comment_count>13</comment_count>
      <attachid>392521</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-06 02:59:55 -0800</bug_when>
    <thetext>Comment on attachment 392521
Patch

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

&gt; Source/WebCore/bindings/js/WebCoreJSClientData.h:72
&gt; +    Vector&lt;JSC::IsoSubspace*&gt; outputConstraintSpaces() { return m_outputConstraintSpaces; }

This is the bug. We should return Vector&lt;JSC::IsoSubspace*&gt;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626591</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-06 03:10:45 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; Comment on attachment 392521 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392521&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/WebCoreJSClientData.h:72
&gt; &gt; +    Vector&lt;JSC::IsoSubspace*&gt; outputConstraintSpaces() { return m_outputConstraintSpaces; }
&gt; 
&gt; This is the bug. We should return Vector&lt;JSC::IsoSubspace*&gt;&amp;.

I&apos;ve ensured this fixes the debug assertion problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626592</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-06 03:11:47 -0800</bug_when>
    <thetext>Committed r257975: &lt;https://trac.webkit.org/changeset/257975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626988</commentid>
    <comment_count>16</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-03-06 17:00:08 -0800</bug_when>
    <thetext>Do you want to put WebCoreTestSupport objects into IsoSubspace?
It seems a layer violation that WebCore depends on WebCoreTestSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627210</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-07 08:07:24 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #16)
&gt; Do you want to put WebCoreTestSupport objects into IsoSubspace?
&gt; It seems a layer violation that WebCore depends on WebCoreTestSupport.

In Apple ports, all IDL files are preprocessed first, and at this point, we are generating IsoSubspaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627215</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-03-07 08:16:59 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; (In reply to Fujii Hironori from comment #16)
&gt; &gt; Do you want to put WebCoreTestSupport objects into IsoSubspace?
&gt; &gt; It seems a layer violation that WebCore depends on WebCoreTestSupport.
&gt; 
&gt; In Apple ports, all IDL files are preprocessed first, and at this point, we
&gt; are generating IsoSubspaces.

Currently, in Apple ports, preprocess-idls.pl phase does not have layering between support ones and WebCore ones. All IDLs are preprocessed at once. So IsoSubspaces are generated at this point. That’s why IsoSubspaces for testing things are also generated here for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627351</commentid>
    <comment_count>19</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-03-07 16:21:30 -0800</bug_when>
    <thetext>It makes WebCore can&apos;t build without WebCoreTestSupport&apos;s IDL files.
There is no actual problem. It&apos;s just a layer matter.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392377</attachid>
            <date>2020-03-03 23:02:22 -0800</date>
            <delta_ts>2020-03-04 15:47:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205107-20200303230221.patch</filename>
            <type>text/plain</type>
            <size>14486</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdiMzA4ODQ2YzlmM2Q5
NWQ4NGViNzg2ZmQ4ZDFmYTcwMDAwNWE0OC4uNDgzMzA0MTA2MzczMzE1YWE3ZDc0ODVjN2NlMTJj
MTQyZDMwNGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAzLTAzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgUHV0IGFsbCBnZW5lcmF0
ZWQgSlNDZWxscyBpbiBXZWJDb3JlIGludG8gSXNvU3Vic3BhY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTEwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om91dHB1dENvbnN0cmFpbnRTdWJzcGFjZUZvcik6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1dlYkNvcmVKU0NsaWVudERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRh
Ojpmb3JFYWNoT3V0cHV0Q29uc3RyYWludFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1D
bGllbnREYXRhOjpzdWJzcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6
Om91dHB1dENvbnN0cmFpbnRTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbDoKKwogMjAyMC0wMy0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBCYXRjaCBvYnNlcnZhdGlvbnMgYW5kIGNvbXBsZXRpb25z
IG9mIHRleHQgbWFuaXB1bGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzN2NiMWJlZTQ5
YzdlOTU1YTcxMjRkMWUyZDZhZTljZDE1NWMwNzliLi43ZmFkMDc0M2JhNjczYWU4MTY2OTQ1MTRh
MzdmMjY3OWJjZjA3MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTYzNiw2ICsxNjM2LDcg
QEAgc2V0KE1BS0VfTkFNRVNfREVQRU5ERU5DSUVTCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGlu
Z3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KICkKIHNldChTVVBQTEVNRU5UQUxfREVQRU5ERU5D
WV9GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9zdXBwbGVtZW50YWxfZGVwZW5k
ZW5jeS50bXApCitzZXQoSVNPX1NVQlNQQUNFU19IRUFERVJfRklMRSAke1dlYkNvcmVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vRE9NSXNvU3Vic3BhY2VzLmgpCiBzZXQoV0lORE9XX0NPTlNUUlVDVE9S
U19GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9ET01XaW5kb3dDb25zdHJ1Y3Rv
cnMuaWRsKQogc2V0KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwp
CiBzZXQoREVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtXZWJD
b3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbCkKQEAgLTE4MTEsOCArMTgxMiw5IEBAIEdFTkVSQVRFX0JJTkRJTkdTKFdlYkNv
cmVCaW5kaW5ncwogICAgIEdFTkVSQVRPUiBKUwogICAgIFNVUFBMRU1FTlRBTF9ERVBGSUxFICR7
U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRX0KICAgICBQUF9FWFRSQV9PVVRQVVQKLSAgICAg
ICAgJHtXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEV9ICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RS
VUNUT1JTX0ZJTEV9ICR7REVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEV9CisgICAgICAgICR7SVNPX1NVQlNQQUNFU19IRUFERVJfRklMRX0gJHtXSU5ET1dfQ09OU1RS
VUNUT1JTX0ZJTEV9ICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9ICR7REVE
SUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgUFBfRVhUUkFf
QVJHUworICAgICAgICAtLWlzb1N1YnNwYWNlc0hlYWRlckZpbGUgJHtJU09fU1VCU1BBQ0VTX0hF
QURFUl9GSUxFfQogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09O
U1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNG
aWxlICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4ZDAyNzY1MGYyYTFjZWVjODgwMTRhYzc2NTk0ZTNj
MzhiMWQyMGQ3Li4xMzk5Njc2NTNiYzk3MmI1MjBkNmZhODIyNGQ1YzAzYzM2NDVlZmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTQ0LDExICs0
NCw2IEBAIEpTRE9NT2JqZWN0OjpKU0RPTU9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSB8fCBnbG9iYWxPYmplY3QuY2xhc3NJbmZvKGdsb2JhbE9iamVjdC52bSgpKSA9
PSBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpKTsKIH0KIAotSlNDOjpDb21wbGV0ZVN1YnNwYWNl
KiBvdXRwdXRDb25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi17Ci0gICAgcmV0dXJu
ICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5vdXRwdXRDb25z
dHJhaW50U3BhY2UoKTsKLX0KLQogSlNDOjpKU1ZhbHVlIGNsb25lQWNyb3NzV29ybGRzKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTRE9NT2JqZWN0JiBv
d25lciwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChpc1dvcmxkQ29tcGF0aWJsZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCmluZGV4IGExNDE2MGZlMDEwNjIwM2IyZjRiYTkxNzMxZmI2ODc3ZjU0Y2E5
YzQuLmI1MzEyMzg3NGUwYjY4Y2I5MTE5MDJmNTAxMmE4MWE2YTg0Y2ExZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC02Niw4ICs2Niw2IEBAIGNsYXNz
IEpTRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFdF
QkNPUkVfRVhQT1JUIEpTRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNDOjpKU0dsb2JhbE9i
amVjdCYpOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRw
dXRDb25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bXBsZW1lbnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01PYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggNzM3
NjIyYTkwNmEzZWE3ODNkZGMwNGU2MmY3ZWQwYjY2YmVjMzA5Yi4uM2FhN2Y2ZmE0MjM2NTQ0NTc0
NzcxY2U2ZjliNjA0NmVhYTYxNzQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAKICNpbmNsdWRlICJET01HQ091dHB1dENvbnN0cmFp
bnQuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaCIKICNpbmNsdWRl
ICJKU0RPTVdpbmRvdy5oIgpAQCAtODgsNyArODksNyBAQCBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNs
aWVudERhdGEoVk0mIHZtKQogICAgICwgbV9zdWJzcGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmdldCgpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKQogICAg
ICwgbV9zdWJzcGFjZUZvckpTV29ya2xldEdsb2JhbFNjb3BlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCksIEpTV29y
a2xldEdsb2JhbFNjb3BlKQogI2VuZGlmCi0gICAgLCBtX291dHB1dENvbnN0cmFpbnRTcGFjZSgi
V2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKSAvLyBIYXNoOjB4NzcyNGMyZTQKKyAgICAsIG1fc3BhY2VzKG1ha2VVbmlxdWU8RE9NSXNv
U3Vic3BhY2VzPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggM2VkMjFlNDMwYmIwZTk5ZGVjOTkzMTBiODAwNDMy
NTJkYTc5Mzg4OS4uYzI4YWI2ZGQ1ZmQ4YjY4ODgwOTA5ZmI2ZTBhY2RlNDgwNTZhMjFjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaApA
QCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTUlzb1N1
YnNwYWNlczsKKwogY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50
RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNWTUNsaWVudERhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgVk1Xb3JsZEl0ZXJhdG9yOwpAQCAt
NjcsNyArNjksNyBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGll
bnREYXRhIHsKICAgICBKU0M6Oklzb1N1YnNwYWNlJiBydW50aW1lT2JqZWN0U3BhY2UoKSB7IHJl
dHVybiBtX3J1bnRpbWVPYmplY3RTcGFjZTsgfQogICAgIEpTQzo6SXNvU3Vic3BhY2UmIHdpbmRv
d1Byb3h5U3BhY2UoKSB7IHJldHVybiBtX3dpbmRvd1Byb3h5U3BhY2U7IH0KICAgICAKLSAgICBK
U0M6OkNvbXBsZXRlU3Vic3BhY2UmIG91dHB1dENvbnN0cmFpbnRTcGFjZSgpIHsgcmV0dXJuIG1f
b3V0cHV0Q29uc3RyYWludFNwYWNlOyB9CisgICAgVmVjdG9yPEpTQzo6SXNvU3Vic3BhY2UqPiBv
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkgeyByZXR1cm4gbV9vdXRwdXRDb25zdHJhaW50U3BhY2Vz
OyB9CiAKICAgICBKU0M6Oklzb1N1YnNwYWNlJiBzdWJzcGFjZUZvckpTRE9NV2luZG93KCkgeyBy
ZXR1cm4gbV9zdWJzcGFjZUZvckpTRE9NV2luZG93OyB9CiAgICAgSlNDOjpJc29TdWJzcGFjZSYg
c3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9zdWJz
cGFjZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7IH0KQEAgLTg0LDcgKzg2LDYgQEAg
Y2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hPdXRwdXRDb25zdHJhaW50
U3BhY2UoY29uc3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAgICAgIGZ1bmMobV9vdXRwdXRDb25z
dHJhaW50U3BhY2UpOwogICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdyk7CiAg
ICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdyk7CkBAIC05Niw4ICs5
NywxMiBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRh
IHsKICAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk7
CiAgICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKTsKICNlbmRp
ZgorICAgICAgICBmb3IgKGF1dG8qIHNwYWNlIDogbV9vdXRwdXRDb25zdHJhaW50U3BhY2VzKQor
ICAgICAgICAgICAgZnVuYygqc3BhY2UpOwogICAgIH0KIAorICAgIERPTUlzb1N1YnNwYWNlcyYg
c3Vic3BhY2VzKCkgeyByZXR1cm4gKm1fc3Vic3BhY2VzLmdldCgpOyB9CisKIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxET01XcmFwcGVyV29ybGQqPiBtX3dvcmxkU2V0OwogICAgIFJlZlB0cjxET01X
cmFwcGVyV29ybGQ+IG1fbm9ybWFsV29ybGQ7CkBAIC0xNDAsOCArMTQ1LDkgQEAgY2xhc3MgSlNW
TUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgSlNDOjpJc29T
dWJzcGFjZSBtX3N1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICAgICBKU0M6
Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgot
ICAgIAotICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxET01Jc29TdWJzcGFjZXM+IG1fc3Vic3BhY2VzOworICAg
IFZlY3RvcjxJc29TdWJzcGFjZSo+IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjdjZDFmY2E0Mzk5Y2U4OTk2YWFhNmVjYTc5
NTA3MzZjMDUzMjM5ZS4uNGQxYWZiYmZkODFmZTk5ODNiMGFmM2VhZDg0ODliODkxYTFkZWJiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTI3OTUsMTIgKzI3OTUsMTMgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAjIEZJWE1FOiBXZSBwdXQgdGhpcyB1bmNvbmRpdGlvbmFsbHkgdG8g
cHV0IGFsbCB0aGUgV2ViQ29yZSBKUyB3cmFwcGVycyBpbiBlYWNoIElzb1N1YnNwYWNlLgotICAg
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTEwNwotICAgIGlm
IChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7IH1cbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
O1xuIik7Ci0gICAgfQorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBpZiAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpXG4iKTsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7XG4iKTsKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsgfVxuIik7
CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pO1xuIik7CiAKICAgICAjIHZpc2l0IGZ1bmN0aW9uCiAgICAgaWYgKCRuZWVkc1Zp
c2l0Q2hpbGRyZW4pIHsKQEAgLTI4MjEsOSArMjgyMiw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICAgICAgIyBwcm9ncmFtIHJlc3VtZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0byB2aXNp
dENoaWxkcmVuIG9yIHZpc2l0T3V0cHV0Q29uc3RyYWludHMuIFNpbmNlCiAgICAgICAgICAgICAj
IHRoaXMganVzdCBjYWxscyB2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbiwgeW91IHVzdWFsbHkgZG9u
J3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzLgogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgdm9pZCB2aXNpdE91dHB1dENvbnN0cmFpbnRzKEpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKTtcbiIpOwotICAgICAgICAgICAgaWYgKCFJc0RPTUdsb2JhbE9iamVj
dCgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+IHN0YXRpYyBKU0M6OkNv
bXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBvdXRwdXRD
b25zdHJhaW50U3Vic3BhY2VGb3Iodm0pOyB9XG4iKTsKLSAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIApAQCAtNDY2MiwxMyArNDY2MCwyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgIEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9uKCRpbnRlcmZhY2UpIGlmICRpbnRl
cmZhY2UtPml0ZXJhYmxlOwogICAgIEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24oJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSkgaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOwogCi0gICAgaWYg
KElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU0M6Oklzb1N1YnNwYWNlKiAke2NsYXNzTmFtZX06OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPnN1YnNwYWNlRm9yJHtjbGFzc05hbWV9KCk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KKyAgICBBZGRUb0ltcGxJbmNs
dWRlcygiRE9NSXNvU3Vic3BhY2VzLmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6Oklzb1N1YnNw
YWNlKiAke2NsYXNzTmFtZX06OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSlcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5n
ZXQoKSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7
aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksICR7Y2xh
c3NOYW1lfSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKTtcbiIpOworICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbU1hcmtGdW5jdGlvbn0p
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gc3BhY2U7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CiAKICAgICBpZiAoJG5lZWRzVmlzaXRDaGlsZHJlbikgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggYTE0NGE1MWI4OTEwYzk4
YTY5MjgzNTc5M2EyMmU1OWY0NDY2MGYzOC4uOTE0NGYyYzA0Y2M1NTk4MjJlNDM3NDhjMTU4NTAy
MGRjMzNiODBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9w
cmVwcm9jZXNzLWlkbHMucGwKQEAgLTMzLDYgKzMzLDcgQEAKIG15ICRpZGxGaWxlc0xpc3Q7CiBt
eSAkdGVzdEdsb2JhbENvbnRleHROYW1lOwogbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
OworbXkgJGlzb1N1YnNwYWNlc0hlYWRlckZpbGU7CiBteSAkd2luZG93Q29uc3RydWN0b3JzRmls
ZTsKIG15ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CiBteSAkZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwpAQCAtNDcsNiArNDgsNyBAQAogICAg
ICAgICAgICAnaWRsRmlsZXNMaXN0PXMnID0+IFwkaWRsRmlsZXNMaXN0LAogICAgICAgICAgICAn
dGVzdEdsb2JhbENvbnRleHROYW1lPXMnID0+IFwkdGVzdEdsb2JhbENvbnRleHROYW1lLAogICAg
ICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4gXCRzdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZSwKKyAgICAgICAgICAgJ2lzb1N1YnNwYWNlc0hlYWRlckZpbGU9cycgPT4g
XCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlLAogICAgICAgICAgICAnd2luZG93Q29uc3RydWN0b3Jz
RmlsZT1zJyA9PiBcJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICd3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yc0ZpbGU9cycgPT4gXCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
c0ZpbGUsCkBAIC02OCw2ICs3MCw3IEBACiBkaWUoJ011c3Qgc3BlY2lmeSB0aGUgZmlsZSBsaXN0
aW5nIGFsbCBJRExzIHVzaW5nIC0taWRsRmlsZXNMaXN0LicpIHVubGVzcyBkZWZpbmVkKCRpZGxG
aWxlc0xpc3QpOwogCiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgPSBDeWd3aW5QYXRoSWZO
ZWVkZWQoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKKyRpc29TdWJzcGFjZXNIZWFkZXJG
aWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlKTsKICR3aW5k
b3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3aW5kb3dDb25zdHJ1Y3Rv
cnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRo
SWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CiAkZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRk
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwpAQCAtOTMsNiArOTYs
MTMgQEAKIG15ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsK
IG15ICR0ZXN0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiAKK215ICRpc29TdWJz
cGFjZXNIZWFkZXJDb2RlID0gPDxFTkQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERP
TUlzb1N1YnNwYWNlcyB7CitwdWJsaWM6CitFTkQKKwogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMg
aW4gaWRsRmlsZXMgYXJyYXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxG
aWxlczsKIApAQCAtMTM0LDYgKzE0NCwxMCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KCFpc0NhbGxiYWNrSW50ZXJmYWNlRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKSkgeworICAgICAg
ICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAiICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Oklz
b1N1YnNwYWNlPiBtX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfTtcbiIKKyAgICB9CisKICAg
ICAjIEZvciBldmVyeSBpbnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNj
cmlwdCBnbG9iYWwgZW52aXJvbm1lbnQgYW5kOgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVy
ZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCiAgICAgIyAtIGlzIGEg
bm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9J
bnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCkBAIC0x
ODksNiArMjAzLDEyIEBACiAgICAgZGVsZXRlICRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfTsKIH0K
IAoraWYgKCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlKSB7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRl
ckNvZGUgLj0gIn07XG4iOworICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlXG4iOworICAgIFdyaXRlRmlsZUlmQ2hhbmdlZCgkaXNvU3Vic3BhY2Vz
SGVhZGVyRmlsZSwgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUpOworfQorCiAjIE91dHB1dHMgdGhl
IGRlcGVuZGVuY3kuCiAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBm
aWxlOgogIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392497</attachid>
            <date>2020-03-04 15:47:01 -0800</date>
            <delta_ts>2020-03-04 16:24:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205107-20200304154700.patch</filename>
            <type>text/plain</type>
            <size>282347</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uYWU5MWIwNzUxODcwMTUxYjYyNzBiNmJjZDNjZTkx
YmZjMjEyNTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMCBAQAorMjAyMC0wMy0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFB1dCBhbGwgZ2VuZXJh
dGVkIEpTQ2VsbHMgaW4gV2ViQ29yZSBpbnRvIElzb1N1YnNwYWNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVzIElzb1N1YnNwYWNlIHBlciBXZWJDb3JlIERPTSBvYmplY3QgdHlwZS4KKyAgICAg
ICAgSW4gcHJlcHJvY2Vzcy1pZGxzLnBsLCB3ZSBjb2xsZWN0IGFsbCB0aGUgRE9NIG9iamVjdCB0
eXBlcyBhbmQgZ2VuZXJhdGUgRE9NSXNvU3Vic3BhY2VzIGNsYXNzLAorICAgICAgICB3aGljaCBj
b250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBJc29TdWJzcGFjZXMuIEFuZCBpdCBpcyBoZWxkIGJ5
IFdlYkNvcmVKU0NsaWVudERhdGEuCisKKyAgICAgICAgQ29kZUdlbmVyYXRvckpTLnBtIHN0YXJ0
cyBwdXR0aW5nIGBzdWJzcGFjZUZvcmAgYW5kIGBzdWJzcGFjZUZvckltcGxgIGZvciBlYWNoIEpT
IERPTSB3cmFwcGVyIGNsYXNzZXMuCisgICAgICAgIEFuZCB3ZSBkeW5hbWljYWxseSBjcmVhdGUg
SXNvU3Vic3BhY2UgYW5kIHNldCBpdCB0byBXZWJDb3JlSlNDbGllbnREYXRhJ3MgRE9NSXNvU3Vi
c3BhY2VzLiBBdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB3ZSByZWdpc3RlciBJc29TdWJzcGFj
ZSB0byBtX291dHB1dENvbnN0cmFpbnRTcGFjZXMgaWYgdGhlIGNsYXNzIGhhcyBvdXRwdXQgY29u
c3RyYWl0cyBjYWxsYmFjay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om91dHB1dENvbnN0cmFpbnRTdWJzcGFjZUZvcik6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0
YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpmb3JFYWNoT3V0cHV0
Q29uc3RyYWludFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJz
cGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6Om91dHB1dENvbnN0cmFp
bnRTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6c3Vi
c3BhY2VGb3JKU0RPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xp
ZW50RGF0YTo6c3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJzcGFjZUZvckpTUmVtb3Rl
RE9NV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpz
dWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9y
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U1ZNQ2xpZW50RGF0YTo6c3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ludGVyZmFjZU5hbWU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFwTGlrZTo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNN
YXBMaWtlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01hcExpa2U6OnN1YnNwYWNlRm9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNSZWFkT25seU1hcExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5TWFwTGlrZTo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5U2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlTZXRMaWtlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NldExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2V0TGlrZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNTZXRMaWtlOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rp
b25zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlv
bnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVQ6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RE9NSklUOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNl
cHRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9u
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEdsb2JhbE9iamVjdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SXRlcmFibGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNl
Rm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpz
dWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE9iajo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJp
YWxpemF0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
ZXJpYWxpemF0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWw6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U3RyaW5naWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpzdWJzcGFjZUZvcik6CisKIDIwMjAtMDMtMDQgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gU1BJIHRvIGFs
bG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZp
ZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzdjYjFiZWU0OWM3ZTk1NWE3MTI0ZDFlMmQ2YWU5
Y2QxNTVjMDc5Yi4uN2ZhZDA3NDNiYTY3M2FlODE2Njk0NTE0YTM3ZjI2NzliY2YwNzE4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MzYsNiArMTYzNiw3IEBAIHNldChNQUtFX05BTUVTX0RF
UEVOREVOQ0lFUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtCiApCiBzZXQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wKQorc2V0KElTT19T
VUJTUEFDRVNfSEVBREVSX0ZJTEUgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0RPTUlz
b1N1YnNwYWNlcy5oKQogc2V0KFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCkKIHNldChXT1JLRVJH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCkBAIC0xODEx
LDggKzE4MTIsOSBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlQmluZGluZ3MKICAgICBHRU5F
UkFUT1IgSlMKICAgICBTVVBQTEVNRU5UQUxfREVQRklMRSAke1NVUFBMRU1FTlRBTF9ERVBFTkRF
TkNZX0ZJTEV9CiAgICAgUFBfRVhUUkFfT1VUUFVUCi0gICAgICAgICR7V0lORE9XX0NPTlNUUlVD
VE9SU19GSUxFfSAke1dPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAke0lTT19T
VUJTUEFDRVNfSEVBREVSX0ZJTEV9ICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfSAke1dPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RFRElDQVRFRFdPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgIFBQX0VYVFJBX0FSR1MKKyAgICAgICAgLS1pc29T
dWJzcGFjZXNIZWFkZXJGaWxlICR7SVNPX1NVQlNQQUNFU19IRUFERVJfRklMRX0KICAgICAgICAg
LS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfQogICAg
ICAgICAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1dPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgICAgICAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSAke0RFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCA2MGExMTMxM2EwZDQwZGQ4YmVmMjRmZTcxZDc1MmMxNjEzNWQ3MmU0Li43
MGNmYWVhNzMxMTBkNGNjZjEzMTVlZjI4ZmEwMThlNzY0MzZiOWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOSw2ICs5LDcgQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3
b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xv
ckRhdGEuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUlzb1N1YnNwYWNlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNWJhMjZiODA4MmRlNjg5
MDFjMmUxMjY2MmY2NDc0YTg2NzA3MjQyMy4uNGQ5ZWRhZjFhNjZiNmRhZDk1NzE1MGFiYzY0OWQz
ZWVkMjFmNzY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzE4LDYgKzE3
MTgsNyBAQCBKU19CSU5ESU5HU19TQ1JJUFRTID0gJChDT01NT05fQklORElOR1NfU0NSSVBUUykg
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySgogCiBTVVBQTEVNRU5UQUxfREVQRU5ERU5D
WV9GSUxFID0gU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLnR4dAogU1VQUExFTUVOVEFMX01BS0VG
SUxFX0RFUFMgPSBTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCitJU09fU1VCU1BBQ0VTX0hF
QURFUl9GSUxFID0gRE9NSXNvU3Vic3BhY2VzLmgKIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9
IERPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9S
U19GSUxFID0gV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBERURJQ0FURURXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMTczOCw2ICsxNzM5LDcgQEAgZW5kZWYKIElETF9JTlRF
Uk1FRElBVEVfRklMRVMgPSBcCiAgICAgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgXAog
ICAgICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgXAorICAgICQoSVNPX1NVQlNQQUNF
U19IRUFERVJfRklMRSkgXAogICAgICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAgICAg
JChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoREVESUNBVEVE
V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKQEAgLTE3NDksNyArMTc1MSw3
IEBAIElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMgPSAkKHN1YnN0IC4sJSwkKElETF9JTlRFUk1F
RElBVEVfRklMRVMpKQogCiAkKElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMpIDogJChQUkVQUk9D
RVNTX0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9E
RUZJTkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lE
TFMpLEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRV
UkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VB
R0VfSkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5k
b3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9S
U19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERF
RElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAk
KFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJV
Q1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJChTVVBQTEVNRU5UQUxfTUFL
RUZJTEVfREVQUykKKwkkKFBFUkwpICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9j
ZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQo
QURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1pZGxGaWxlc0xp
c3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExF
TUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS1pc29TdWJzcGFjZXNIZWFkZXJGaWxlICQoSVNPX1NV
QlNQQUNFU19IRUFERVJfRklMRSkgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NP
TlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNU
UlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUg
JChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlO
VFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtl
ZmlsZURlcHMgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCiBKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoSURMX0lOVEVSTUVESUFURV9GSUxFUykgJChQTEFU
Rk9STV9GRUFUVVJFX0RFRklORVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmNwcAppbmRleCA4ZDAyNzY1MGYyYTFjZWVjODgwMTRhYzc2NTk0ZTNjMzhiMWQyMGQ3
Li4xMzk5Njc2NTNiYzk3MmI1MjBkNmZhODIyNGQ1YzAzYzM2NDVlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTQ0LDExICs0NCw2IEBAIEpT
RE9NT2JqZWN0OjpKU0RPTU9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSB8fCBnbG9iYWxPYmplY3QuY2xhc3NJbmZvKGdsb2JhbE9iamVjdC52bSgpKSA9PSBKU1JlbW90
ZURPTVdpbmRvdzo6aW5mbygpKTsKIH0KIAotSlNDOjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRwdXRD
b25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi17Ci0gICAgcmV0dXJuICZzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5vdXRwdXRDb25zdHJhaW50U3Bh
Y2UoKTsKLX0KLQogSlNDOjpKU1ZhbHVlIGNsb25lQWNyb3NzV29ybGRzKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTRE9NT2JqZWN0JiBvd25lciwgSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChpc1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oCmluZGV4IGExNDE2MGZlMDEwNjIwM2IyZjRiYTkxNzMxZmI2ODc3ZjU0Y2E5YzQuLmI1MzEy
Mzg3NGUwYjY4Y2I5MTE5MDJmNTAxMmE4MWE2YTg0Y2ExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC02Niw4ICs2Niw2IEBAIGNsYXNzIEpTRE9NT2Jq
ZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFdFQkNPUkVfRVhQ
T1JUIEpTRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOwog
fTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRwdXRDb25zdHJh
aW50U3Vic3BhY2VGb3IoSlNDOjpWTSYpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRh
dGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01PYmplY3QgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggNzM3NjIyYTkwNmEz
ZWE3ODNkZGMwNGU2MmY3ZWQwYjY2YmVjMzA5Yi4uMmQ4MGFkNDZlODg2ZTE4ODdiNWQ4YzgyYWFj
MTA2ZjQzMGM4YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAKICNpbmNsdWRlICJET01HQ091dHB1dENvbnN0cmFpbnQuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgpAQCAtNzcsMTggKzc4LDcgQEAgSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRh
KFZNJiB2bSkKICAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6
MHhmNzBjNGE4NQogICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0KQogICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2luZG93UHJv
eHkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNET01XaW5kb3cgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdy5nZXQoKSwgSlNET01XaW5kb3cpCi0g
ICAgLCBtX3N1YnNwYWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuZ2V0KCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNw
YWNlRm9ySlNSZW1vdGVET01XaW5kb3cgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFw
Q2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdy5nZXQoKSwgSlNSZW1vdGVET01XaW5kb3cpCi0g
ICAgLCBtX3N1YnNwYWNlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTV29y
a2VyR2xvYmFsU2NvcGUpCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICwgbV9zdWJz
cGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuZ2V0KCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNw
YWNlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9o
ZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSwgSlNXb3JrbGV0R2xvYmFs
U2NvcGUpCi0jZW5kaWYKLSAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdy
YXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhh
c2g6MHg3NzI0YzJlNAorICAgICwgbV9zdWJzcGFjZXMobWFrZVVuaXF1ZTxET01Jc29TdWJzcGFj
ZXM+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAppbmRleCAzZWQyMWU0MzBiYjBlOTlkZWM5OTMxMGI4MDA0MzI1MmRhNzkz
ODg5Li5kNGU5MmY2M2U4OGRmNjk5Zjk0YjI3ZTUxYjY1MmFjMzg0NTEzODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yOSw2
ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NSXNvU3Vic3BhY2Vz
OworCiBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1ZNQ2xpZW50RGF0YSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBWTVdvcmxkSXRlcmF0b3I7CkBAIC02NywzNyAr
NjksMTcgQEAgY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0
YSB7CiAgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVudGltZU9iamVjdFNwYWNlKCkgeyByZXR1cm4g
bV9ydW50aW1lT2JqZWN0U3BhY2U7IH0KICAgICBKU0M6Oklzb1N1YnNwYWNlJiB3aW5kb3dQcm94
eVNwYWNlKCkgeyByZXR1cm4gbV93aW5kb3dQcm94eVNwYWNlOyB9CiAgICAgCi0gICAgSlNDOjpD
b21wbGV0ZVN1YnNwYWNlJiBvdXRwdXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX291dHB1
dENvbnN0cmFpbnRTcGFjZTsgfQorICAgIFZlY3RvcjxKU0M6Oklzb1N1YnNwYWNlKj4gb3V0cHV0
Q29uc3RyYWludFNwYWNlcygpIHsgcmV0dXJuIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlczsgfQog
Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3BhY2VGb3JKU0RPTVdpbmRvdygpIHsgcmV0dXJu
IG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdzsgfQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNw
YWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VG
b3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOyB9Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYg
c3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdygpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1Jl
bW90ZURPTVdpbmRvdzsgfQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNXb3Jr
ZXJHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1dvcmtlckdsb2JhbFNjb3Bl
OyB9Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1
YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSB7IHJldHVybiBtX3N1YnNwYWNl
Rm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7IH0KLSNlbmRpZgotI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlOyB9Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3BhY2VGb3JKU1dvcmtsZXRH
bG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsg
fQotI2VuZGlmCi0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZv
ckVhY2hPdXRwdXRDb25zdHJhaW50U3BhY2UoY29uc3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAg
ICAgIGZ1bmMobV9vdXRwdXRDb25zdHJhaW50U3BhY2UpOwotICAgICAgICBmdW5jKG1fc3Vic3Bh
Y2VGb3JKU0RPTVdpbmRvdyk7Ci0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU1JlbW90ZURP
TVdpbmRvdyk7Ci0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUp
OwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9y
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCi0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSk7
Ci0jZW5kaWYKKyAgICAgICAgZm9yIChhdXRvKiBzcGFjZSA6IG1fb3V0cHV0Q29uc3RyYWludFNw
YWNlcykKKyAgICAgICAgICAgIGZ1bmMoKnNwYWNlKTsKICAgICB9CiAKKyAgICBET01Jc29TdWJz
cGFjZXMmIHN1YnNwYWNlcygpIHsgcmV0dXJuICptX3N1YnNwYWNlcy5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldvcmxkKj4gbV93b3JsZFNldDsKICAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX25vcm1hbFdvcmxkOwpAQCAtMTA4LDcgKzkwLDcgQEAgY2xh
c3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZU9iamVj
dEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1f
d2luZG93UHJveHlIZWFwQ2VsbFR5cGU7Ci0KK3B1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3c7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxU
eXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OwpAQCAtMTIwLDcgKzEwMiw3
IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6Vk06OkNsaWVudERhdGEgewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBD
ZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgot
Citwcml2YXRlOgogICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9kb21CdWlsdGluQ29uc3RydWN0b3JT
cGFjZTsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fZG9tQ29uc3RydWN0b3JTcGFjZTsKICAgICBK
U0M6Oklzb1N1YnNwYWNlIG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlOwpAQCAtMTI4LDIwICsx
MTAsOCBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRh
IHsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGltZU1ldGhvZFNwYWNlOwogICAgIEpTQzo6
SXNvU3Vic3BhY2UgbV9ydW50aW1lT2JqZWN0U3BhY2U7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBt
X3dpbmRvd1Byb3h5U3BhY2U7Ci0KLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JK
U0RPTVdpbmRvdzsKLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOwotICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpT
UmVtb3RlRE9NV2luZG93OwotICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTV29y
a2VyR2xvYmFsU2NvcGU7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEpTQzo6SXNv
U3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotI2VuZGlm
Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgSlNDOjpJc29TdWJzcGFjZSBtX3N1
YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKLSAgICBKU0M6Oklzb1N1YnNwYWNl
IG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKLSNlbmRpZgotICAgIAotICAgIEpT
Qzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RE9NSXNvU3Vic3BhY2VzPiBtX3N1YnNwYWNlczsKKyAgICBWZWN0b3I8SlNDOjpJ
c29TdWJzcGFjZSo+IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYjdjZDFmY2E0Mzk5Y2U4OTk2YWFhNmVjYTc5NTA3MzZjMDUz
MjM5ZS4uOTMwMGRkMGM0NDNlNGQyZDQzMmE5ZjgwNTc2ZjVlYjFlMDI0NjI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTI3OTUsMTIgKzI3OTUsMTMgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAjIEZJWE1FOiBXZSBwdXQgdGhpcyB1bmNvbmRpdGlvbmFsbHkgdG8gcHV0IGFsbCB0
aGUgV2ViQ29yZSBKUyB3cmFwcGVycyBpbiBlYWNoIElzb1N1YnNwYWNlLgotICAgICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTEwNwotICAgIGlmIChJc0RPTUds
b2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7IH1cbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pO1xuIik7Ci0g
ICAgfQorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4i
KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KVxuIik7CisgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBudWxscHRyO1xuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7XG4iKTsK
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOworICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7XG4iKTsKIAogICAgICMgdmlzaXQgZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzVmlz
aXRDaGlsZHJlbikgewpAQCAtMjgyMSw5ICsyODIyLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgICAgICAjIHByb2dyYW0gcmVzdW1lZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvIHZpc2l0
Q2hpbGRyZW4gb3IgdmlzaXRPdXRwdXRDb25zdHJhaW50cy4gU2luY2UKICAgICAgICAgICAgICMg
dGhpcyBqdXN0IGNhbGxzIHZpc2l0QWRkaXRpb25hbENoaWxkcmVuLCB5b3UgdXN1YWxseSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMuCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpO1xuIik7Ci0gICAgICAgICAgICBpZiAoIUlzRE9NR2xvYmFsT2JqZWN0
KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6Q29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIG91dHB1dENv
bnN0cmFpbnRTdWJzcGFjZUZvcih2bSk7IH1cbiIpOwotICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCkBAIC00NjYyLDEzICs0NjYwLDMxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24oJGludGVyZmFjZSkgaWYgJGludGVy
ZmFjZS0+aXRlcmFibGU7CiAgICAgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbigkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKSBpZiAkaW50ZXJmYWNlLT5zZXJpYWxpemFibGU7CiAKKyAgICBBZGRU
b0ltcGxJbmNsdWRlcygiRE9NSXNvU3Vic3BhY2VzLmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRl
cygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPiIpOworICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Iik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6Oklzb1N1YnNwYWNlKiAke2NsYXNzTmFtZX06OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpO1xuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKSlcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01H
bG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldl
YkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6
SXNvU3Vic3BhY2UqICR7Y2xhc3NOYW1lfTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKVxu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+c3Vic3BhY2VGb3Ike2NsYXNzTmFtZX0oKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ZWxzZVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNz
TmFtZX0pO1xuIik7CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpO1xuIik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJs
ZS1jb2RlXCIpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiBjb25zdGV4cHIg
KCYke2NsYXNzTmFtZX06OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7XG4i
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19FTkRcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzcGFjZTtcbiIpOworICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgIGlmICgkbmVlZHNWaXNpdENoaWxkcmVuKSB7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCBhMTQ0
YTUxYjg5MTBjOThhNjkyODM1NzkzYTIyZTU5ZjQ0NjYwZjM4Li40ODUyYzUzNTYzZGY5OGNkZTky
ZDAwZmFkM2NmMWM0NGY2ZTA2MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbApAQCAtMzMsNiArMzMsNyBAQAogbXkgJGlkbEZp
bGVzTGlzdDsKIG15ICR0ZXN0R2xvYmFsQ29udGV4dE5hbWU7CiBteSAkc3VwcGxlbWVudGFsRGVw
ZW5kZW5jeUZpbGU7CitteSAkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZTsKIG15ICR3aW5kb3dDb25z
dHJ1Y3RvcnNGaWxlOwogbXkgJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsKIG15
ICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7CkBAIC00Nyw2ICs0
OCw3IEBACiAgICAgICAgICAgICdpZGxGaWxlc0xpc3Q9cycgPT4gXCRpZGxGaWxlc0xpc3QsCiAg
ICAgICAgICAgICd0ZXN0R2xvYmFsQ29udGV4dE5hbWU9cycgPT4gXCR0ZXN0R2xvYmFsQ29udGV4
dE5hbWUsCiAgICAgICAgICAgICdzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZT1zJyA9PiBcJHN1
cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlLAorICAgICAgICAgICAnaXNvU3Vic3BhY2VzSGVhZGVy
RmlsZT1zJyA9PiBcJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUsCiAgICAgICAgICAgICd3aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkd2luZG93Q29uc3RydWN0b3JzRmlsZSwKICAgICAgICAg
ICAgJ3dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSwKICAgICAgICAgICAgJ2RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSwKQEAgLTY4LDYgKzcwLDcgQEAKIGRpZSgnTXVzdCBzcGVjaWZ5IHRo
ZSBmaWxlIGxpc3RpbmcgYWxsIElETHMgdXNpbmcgLS1pZGxGaWxlc0xpc3QuJykgdW5sZXNzIGRl
ZmluZWQoJGlkbEZpbGVzTGlzdCk7CiAKICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSA9IEN5
Z3dpblBhdGhJZk5lZWRlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUpOworJGlzb1N1YnNw
YWNlc0hlYWRlckZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZp
bGUpOwogJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdpbmRv
d0NvbnN0cnVjdG9yc0ZpbGUpOwogJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9
IEN5Z3dpblBhdGhJZk5lZWRlZCgkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsK
ICRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgPSBDeWd3aW5QYXRo
SWZOZWVkZWQoJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSk7CkBA
IC05Myw2ICs5NiwyMSBAQAogbXkgJHBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
Q29kZSA9ICIiOwogbXkgJHRlc3RHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIAor
bXkgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUgPSA8PEVORDsKKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01Jc29TdWJzcGFjZXMgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERPTUlzb1N1YnNwYWNlcyk7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoRE9NSXNvU3Vic3BhY2VzKTsKK3B1YmxpYzoKKyAgICBET01Jc29TdWJzcGFjZXMoKSA9
IGRlZmF1bHQ7CitFTkQKKwogIyBHZXQgcmlkIG9mIGR1cGxpY2F0ZXMgaW4gaWRsRmlsZXMgYXJy
YXkuCiBteSAlaWRsRmlsZUhhc2ggPSBtYXAgeyAkXywgMSB9IEBpZGxGaWxlczsKIApAQCAtMTM0
LDYgKzE1MiwxMCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCFpc0NhbGxiYWNrSW50
ZXJmYWNlRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKSkgeworICAgICAgICAkaXNvU3Vic3BhY2Vz
SGVhZGVyQ29kZSAuPSAiICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6Oklzb1N1YnNwYWNlPiBtX3N1
YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfTtcbiIKKyAgICB9CisKICAgICAjIEZvciBldmVyeSBp
bnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwgZW52
aXJvbm1lbnQgYW5kOgogICAgICMgLSBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBj
b25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCiAgICAgIyAtIGlzIGEgbm9uLWNhbGxiYWNrIGlu
dGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZSwgYSBjb3JyZXNwb25kaW5nCkBAIC0xODksNiArMjExLDEyIEBA
CiAgICAgZGVsZXRlICRzdXBwbGVtZW50YWxzeyRpZGxGaWxlfTsKIH0KIAoraWYgKCRpc29TdWJz
cGFjZXNIZWFkZXJGaWxlKSB7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUgLj0gIn07XG4i
OworICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
XG4iOworICAgIFdyaXRlRmlsZUlmQ2hhbmdlZCgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSwgJGlz
b1N1YnNwYWNlc0hlYWRlckNvZGUpOworfQorCiAjIE91dHB1dHMgdGhlIGRlcGVuZGVuY3kuCiAj
IFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxlOgogIwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNl
TmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmNwcAppbmRleCBmYzM5YjIyNWViNmE4OWU3N2NmNDU2Y2ZkZDhjNWNjYjVjMDMy
NWE2Li4xZTg4OGEzMDljNGExMWUxOGMyMjcxNjUxOGEwODBlOTNlMmMxNjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmNwcApAQCAtMjIsMTQgKzIyLDE4IEBACiAjaW5jbHVkZSAiSlNJbnRlcmZhY2VO
YW1lLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xNjEsNiArMTY1LDI0IEBAIGJv
b2wgc2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU0ludGVyZmFjZU5hbWU6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvckludGVyZmFjZU5hbWUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTSW50ZXJmYWNlTmFtZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJm
YWNlTmFtZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNJbnRlcmZhY2VO
YW1lKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJmYWNlTmFt
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTSW50ZXJmYWNlTmFtZSk7CisgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckludGVyZmFjZU5hbWUuZ2V0KCk7CitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTSW50
ZXJmYWNlTmFtZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTSW50ZXJmYWNlTmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgKaW5kZXggNTA2OTEz
ZGEzZmY0NjlmMzEzODAyOTJhZjgxMjQzMmYyYWRiNDcwMS4uMWYzZDE3ZjVmNmZiMmVjOGNkMmNm
ZTFlZDYzYjk3MjYyMzMyZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaApAQCAtNTAsNiArNTAsMTMg
QEAgY2xhc3MgSlNJbnRlcmZhY2VOYW1lIDogcHVibGljIEpTRE9NV3JhcHBlcjxJbnRlcmZhY2VO
YW1lPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRv
ciYpOwogCiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5h
bHl6ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggOWY4MGFlMWQ1YmJlMTIzOGVkNmFjZjgzMzQxYzQ0YTUx
NmEwMjhhOS4uNWRkNmQ2NTk3NTQ0NTllYTIzOWMzN2JlNzViNjM1MmQwZWIyZTZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlr
ZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU01hcExpa2UuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMyLDEwICszMywx
MyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5O
YW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzU0LDYgKzM1
OCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBsZQogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZGVsZXRlIik7CiB9CiAKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTTWFwTGlrZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAg
IGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yTWFwTGlrZS5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNNYXBMaWtlPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U01hcExpa2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JNYXBMaWtl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNYXBMaWtlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yTWFwTGlrZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNNYXBMaWtlOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNN
YXBMaWtlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01hcExpa2UqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExp
a2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2Uu
aAppbmRleCA4ZWVlYzNkMWIyZGIzMDAyNzc1NTgwNmI3YjA1OGZkNDVmMGMwY2IwLi40OWEwMGEz
ZjgwNTg5OTFkZDEwZWUxMWE4OWM3ODI5MWI5OGYwMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5oCkBAIC00OSw2ICs0OSwx
MyBAQCBjbGFzcyBKU01hcExpa2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPE1hcExpa2U+IHsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3Rl
Y3RlZDoKICAgICBKU01hcExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYs
IFJlZjxNYXBMaWtlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCmluZGV4IGQ5NDMxNjc3
OGRjMjJjMTNlMjQ0ZGI1NWJjYzAzMmUzYzgzZTcyZmEuLjc5NjhlOWRiYjViNDkyMDNmNzg0MDhi
NDk0YjczZmUzZWYyYmQzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgIkpTUmVhZE9ubHlNYXBMaWtlLmgiCiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMiwxMCArMzMsMTMgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI5OCw2ICszMDIsMjQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRm9yRWFjaChKU0dsb2JhbE8KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9u
bHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZm9yRWFjaCIpOwogfQog
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1JlYWRPbmx5TWFwTGlrZTo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
UmVhZE9ubHlNYXBMaWtlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Jl
YWRPbmx5TWFwTGlrZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlNYXBM
aWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1JlYWRPbmx5TWFwTGlr
ZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlr
ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUmVhZE9ubHlNYXBMaWtlKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlNYXBMaWtlLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZK
U1JlYWRPbmx5TWFwTGlrZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0
dXJuIHNwYWNlOworfQorCiB2b2lkIEpTUmVhZE9ubHlNYXBMaWtlOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1JlYWRPbmx5TWFwTGlrZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
aAppbmRleCAyNjQwNzkyZWMwMGEyZGYzZTgxMDUyMTQ1ODk3Yjc0MDg2NjQwMjFhLi4yMmQzMGJl
Njk3NWYyMmZhYzc4ODM2MWQ1OTMxMGQ4YTdkNjY4OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
aApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNSZWFkT25seU1hcExpa2UgOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFJlYWRPbmx5TWFwTGlrZT4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTUmVhZE9ubHlNYXBM
aWtlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8UmVhZE9ubHlNYXBM
aWtlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuY3BwCmluZGV4IDQ1YzJkZGRjNWIxYTYyMGQw
ODI1ZTY5MmU5NDFkNTU3YmY4YzMxMjEuLmJlZGIwNDYyN2Y0MWQ2OGE0NTMzMDZhYzE5OTFmMzQ0
ODY1MmQzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTUmVhZE9ubHlTZXRMaWtlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJp
YnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMiwxMCArMzMsMTMgQEAKICNpbmNsdWRlICJK
U0RPTVNldExpa2UuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNzksNiArMjgzLDI0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVh
Y2goSlNHbG9iYWxPCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5U2V0TGlrZT46
OmNhbGw8anNSZWFkT25seVNldExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNSZWFkT25seVNldExpa2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkK
K3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5U2V0
TGlrZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNSZWFkT25seVNldExp
a2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5U2V0TGlrZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNSZWFkT25seVNldExpa2UpOworICAgIGVs
c2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JSZWFkT25seVNldExpa2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1JlYWRPbmx5U2V0TGlrZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5U2V0TGlrZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNSZWFkT25seVNl
dExpa2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1JlYWRPbmx5U2V0TGlrZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNSZWFkT25seVNldExpa2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmgKaW5kZXggZDMx
MWJlNDBiMDdjNzg0NDNlODZlYjE3NTNiZWUzMTA1MTc3NzVhYi4uN2Y1MDc3OWM4YzVjNWU4NzA5
OGE5M2RlOTllODA0NmMxNTdjNDI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmgKQEAgLTQ5LDYg
KzQ5LDEzIEBAIGNsYXNzIEpTUmVhZE9ubHlTZXRMaWtlIDogcHVibGljIEpTRE9NV3JhcHBlcjxS
ZWFkT25seVNldExpa2U+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1JlYWRPbmx5U2V0TGlrZShKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFJlYWRPbmx5U2V0TGlrZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRM
aWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExp
a2UuY3BwCmluZGV4IGRhMjRhNWIwMzU5ZTY5NzVlMzNiYTI5ZWZjNzQ3ZGMwNTQ3MmQyODYuLmRm
ZDBiNzI4ZTUxZjgxNDI2ZWNkZTZjYWNiNzJkZGM3YmRmM2IzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNTZXRMaWtlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RP
TUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMiwxMCArMzMsMTMgQEAKICNpbmNs
dWRlICJKU0RPTVNldExpa2UuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMzMsNiArMzM3LDI0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUo
SlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1NldExpa2U+Ojpj
YWxsPGpzU2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJkZWxldGUiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNT
ZXRMaWtlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXRMaWtlLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1NldExpa2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNl
dExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTU2V0TGlrZSk7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNldExpa2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1NldExpa2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JTZXRMaWtlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1NldExpa2U6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGll
bnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1NldExpa2U6OmFuYWx5
emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0TGlrZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5oCmluZGV4IDBiMmZm
NDU4MmM4OGE3NzM5OTQzY2Y0ZWU4ZDBkODg0YzRmNWI2NDAuLmExYTE1NTM2NmZmODBiM2RjMDU1
MGQxYWI5NmVjY2IzOGUyNWFiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpT
U2V0TGlrZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8U2V0TGlrZT4gewogICAgIH0KIAogICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFs
eXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpT
U2V0TGlrZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFNldExpa2U+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCAxMjQzNzk2MmMyZGI0
MjY4OGZjMDIyY2UwMDRlYmI0OGIxMWJiY2JhLi4wNGRiNjcxZTE1YmIxZWM4NzkzMTFhNTYxYzE3
ZGU0NjM4MGRiODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZ1NlY3VyaXR5LmgiCkBAIC0zNSw5ICszNiwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMxMCw2ICszMTQs
MjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXQKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEFjdGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kT3ZlcmxvYWREaXNwYXRjaGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0QWN0
aXZlRE9NT2JqZWN0LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RBY3RpdmVE
T01PYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEFjdGl2
ZURPTU9iamVjdCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RB
Y3RpdmVET01PYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RBY3RpdmVET01PYmpl
Y3QpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0QWN0aXZlRE9N
T2JqZWN0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAg
ICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdO
T1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RBY3Rp
dmVET01PYmplY3Q6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IDFmNTY2MTQ3
ZGQ4ZGM5NzM2OGIyY2U5Mzg2NTRlNjU2YTJmYjM0YzMuLjJmYzlmMDY4OWE0N2I3YmMxMzFlZWEw
M2M4ODU2MzU1MmRmZTU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTUw
LDYgKzUwLDEzIEBAIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdEFjdGl2ZURPTU9iamVjdD4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFz
UHV0UHJvcGVydHlTZWN1cml0eUNoZWNrIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggZGM2MTBmNzBhNDcwODUzZDE2OWU3ZjdkMGEz
NTEzZjY5ZTNhZDVhNC4uMWIzYWRmYWU5N2E3ZDE2NTRjMWMwOTQ0Nzk1OTNmYTJmMmNmYzBmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CkBAIC0zNSw5ICszNiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NDIsNiArNDQ2LDI0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDRVJlYWN0CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0
aW9ucz46OmNhbGw8anNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhD
RVJlYWN0aW9uc05vdE5lZWRlZEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAibWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkIik7CiB9CiAKK0pTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdENFUmVhY3Rpb25zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMu
Z2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICBlbHNlCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0Q0VSZWFjdGlvbnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdENFUmVhY3Rpb25z
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisK
IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dENFUmVhY3Rpb25zKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCmluZGV4IDk4OTNhMTI1
YjhiMDAxOTFiMDMyOTc4NTNiZjMzYTE3YTllMDg0ZmYuLjRmNjdhNzBjOTBmNTVhNDVkMjc2Y2Fi
MDBiZTY0Yzc5ZGU4ODFkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCkBAIC00OSw2ICs0OSwx
MyBAQCBjbGFzcyBKU1Rlc3RDRVJlYWN0aW9ucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENF
UmVhY3Rpb25zPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q0VSZWFjdGlvbnMoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q0VSZWFjdGlvbnM+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IDEzZDY5MGE5MzQ4
ZGMzMWI5MTk0NDAzZDhhMmQzOWQyM2VjMTA1NDIuLmRjNTI2Mzk3ZDkyMGUxNDk2YmU1NTk2NTRi
MzRiNzA3MjYyZGFiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgpAQCAtMzEsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI2Niw2ICsyNzAsMjQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXI+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmlu
ZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4p
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmFuYWx5emVIZWFw
KEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oCmluZGV4IGUwNjA1YzkwN2M5
ZWRhNTI2ZDY2MmY3MDVlN2I0NWZjYTM0OTg2MjMuLjgzYzIyY2FjMmZkMWZlNTZlN2VkNmQzOTJi
YzJhZWQzMGMxN2U4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENFUmVhY3Rpb25zU3RyaW5naWYKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoK
ICAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QmLCBSZWY8VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxUcmFjZXIuY3BwCmluZGV4IDk5NTU4NGY1OWI4NDdlODZhOTAzZGYyMTE4MTY4Njk3Yjkz
ODE3YmMuLmRjOGUxZjI1MTJlNjU0NzM0NGFiNjlhZWExMjZkOGE0NWRkNGFiOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJh
Y2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKKyNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBA
IC0zOCw5ICszOSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTUwNiw2ICs1MTAsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aEQKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENhbGxUcmFjZXI+OjpjYWxsPGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvblRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdE9wZXJhdGlvbldp
dGhEZWZhdWx0VmFyaWFudEFyZ3VtZW50Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dENhbGxUcmFjZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBj
bGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyLmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDYWxsVHJhY2VyPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0Q2FsbFRyYWNlcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDYWxsVHJhY2VyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Q2FsbFRyYWNlcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RD
YWxsVHJhY2VyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RDYWxsVHJhY2VyOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0Q2FsbFRy
YWNlcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q2FsbFRyYWNlcio+KGNlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxUcmFjZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsVHJhY2VyLmgKaW5kZXggOTJjNmVlODgxODc5MmJmYjc4ODM5ZGRkNzcyYmEw
MzU5MzliY2YwNS4uYTc3MmJmMzlmYzY0NzY5NzM2OGM1YTM1MTA3OWM3NDVlNDdhZDY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxUcmFjZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbFRyYWNlci5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RDYWxsVHJh
Y2VyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0Q2FsbFRyYWNlcj4gewogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAg
IEpTVGVzdENhbGxUcmFjZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0Q2FsbFRyYWNlcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA2NmYyMDhkYTM5NTNkZWY3NjBlYjFlNWVi
OTA2ZGMxNjIxOGQwYmM1Li45NzI0ZDY4MjA2Mzk4NDRkNmUxNGNmNGU5ZjFmOGI3M2RmYzc4ZGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKQEAgLTIyLDE1ICsyMiwxOSBAQAogI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE2Nyw2ICsxNzEsMjQg
QEAgYm9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2wKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0
byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYg
KGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAg
ICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3I6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IDI3MDM1ZTdiOThiM2UyMjAwMGJjMTEzZTAz
N2E0YWM3MzNkOTdlYzQuLmNjNjYwNDk1YjY2YzQ3MmIwOGFiODIxMTdiZDE5N2IxODk1ODU4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENsYXNzV2l0aEpTQgogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9p
ZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgog
ICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggNmYzZTM0ZWM5MTRkODMzZGU2ZDhjMGUxNDQ5YTVh
M2QwOTlkZWRkMS4uYWQxZWY0YzJmNDYwN2VhN2FiNmNlNGM1YTUxZjRjZjM2MWJhMWFmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERP
TUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RET01KSVQu
aCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNw
YWNlcy5oIgogI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNs
dWRlICJET01KSVRJRExDb252ZXJ0LmgiCiAjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgpAQCAt
NDIsOSArNDMsMTIgQEAKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNl
cnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0x
Mjg1LDYgKzEyODksMjQgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFt
ZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
RE9NSklUOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dERPTUpJVCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01K
SVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RET01KSVQpOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RET01K
SVQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3RET01KSVQ6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdERP
TUpJVCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCmluZGV4IDlhNWQwNWQ2NmUxNTUwZWE1Yzk0YTBmODkw
MGI2ZGY3N2I4MTljMGMuLmNiZjMzYzJjYTBmMWM4OGVkZmFhZDQxMzVhYmRlYWVlNmFmNWUxY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdERPTUpJVCA6IHB1
YmxpYyBKU05vZGUgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4
cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwor
ICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBB
bmFseXplciYpOwogICAgIFRlc3RET01KSVQmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCBlNjMzMjM5ZGFlZmNlZjA0MDljOGI0
NjNiODcwZjY2YjgxMDVkNzVlLi45Nzc2YjlmOTE5MTc2M2YwYWFhZDM0YzI3MmE5ZTVjN2YwMDY3
ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBAIC0yMiw2ICsyMiw3
IEBACiAjaW5jbHVkZSAiSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oIgogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgpAQCAtMzYsNiArMzcsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzExLDYgKzMxNCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldAogCiAj
ZW5kaWYKIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICBlbHNlCisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRCeVNldHRpbmcuZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEVuYWJs
ZWRCeVNldHRpbmc6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRCeVNldHRpbmcuaAppbmRleCA5MGY4NjA3YWQyZDIyYjdhYjU5ZWQzYzIyMjdiZDFkZWNl
MTUzNTJiLi5jNDc2MjE5OTBkYjMwOThiOTgzM2ViYmI1YzE2ZWQ5YTIyYjFhODFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RFbmFibGVkQnlTZXR0
aW5nPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRGb3JDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKaW5kZXggYWU4ZWI5MWRmOGFmZjEz
YzUzNTk0NWFmZjdkOGQxMWYwODc1YzY1OC4uMjY4YzNhODE3OGViNTI1ODhhNTdkODQzNWZjYmRj
YTc4MjVhMDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaCIKIAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM1LDYgKzM2LDggQEAKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIwMCw2ICsyMDMsMjQgQEAgYm9vbCBzZXRKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dFRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKEpTR2xv
YmFsT2IKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Pjo6
c2V0PHNldEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0VGVzdFN1Yk9iakVuYWJsZWRGb3JDb250ZXh0
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3RTdWJPYmpFbmFibGVkRm9yQ29udGV4dCIpOwogfQogCitKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVu
YWJsZWRGb3JDb250ZXh0LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dD4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVu
YWJsZWRGb3JDb250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGws
IEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQuaAppbmRleCBjMDVmYzdiZTRmZDRmNTE4YzQxNzM2ZDZlNmY3OTVmMmEzNTdkOWRm
Li41ZjhlOTQ2MTEyYzY3MjNlZDlkNzYxZDVhMmQzZGQ3NTdjNTZkMzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHQuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0RW5h
YmxlZEZvckNvbnRleHQgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RFbmFibGVkRm9yQ29udGV4
dD4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBmY2ZjMDQ1YWM2MDQ5NDY4NDQy
MGYxMTkyMWE2MjYzMzkxOTYzMTNkLi44Y2Q1Mjk1OTRjMzM0MjE4NGE2NzM4ODBlZTMzZDg0YTdi
ZjY0NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yLmgiCkBAIC0zMSw4ICszMiwxMSBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtMzE0LDYgKzMxOCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9y
QXR0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAKICNlbmRpZgogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3IpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCmluZGV4IDVlMGJlZGQyZDMxOTAzNDBlYmMyMzJmY2NjMzBmNDRiOTg5NzNkOWMuLjli
MTNlNmM1YTRkMjU2ODU4NThkOGQ3YTc3YmMwYmQ3NDRmZDllZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvciA6IHB1YmxpYyBKU0V2ZW50IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VG
b3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgd3JhcHBl
ZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggYzRjZWQ1MDkw
MDY0ZTM2NmUzNTIzZTk2MzZkYWM0NDhhMzdmZTgwNi4uYjUzY2YzNTI1NzYzZGEyNzJkM2NlNzNj
ZmEzYTdmZDc1MDk4YjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpT
RE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMzLDkgKzM0LDEy
IEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjU2
LDYgKzI2MCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEpTR2xvYmFsT2JqZQogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0RXZlbnRUYXJnZXQ+OjpjYWxsPGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBl
RnVuY3Rpb25JdGVtQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpdGVt
Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdEV2ZW50VGFyZ2V0PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RXZlbnRUYXJnZXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2
ZW50VGFyZ2V0KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2
ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXZlbnRUYXJnZXQpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRUYXJnZXQuZ2V0KCk7
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0
ZXhwciAoJkpTVGVzdEV2ZW50VGFyZ2V0Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXQ6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5oCmluZGV4IDk1MWU0NmRlNjRhYjAyNWFhZjFmZjA4ZDJhZDNjMzllMGE0YjM3Y2Eu
LjFmYWZiNDYwOTliMTVkNDYyZmUzOTg1NzRiMzBmY2Y4NjVkMWVkNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5oCkBAIC01Myw2ICs1MywxMyBAQCBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldCA6IHB1
YmxpYyBKU0V2ZW50VGFyZ2V0IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0RXZlbnRUYXJnZXQmIHdyYXBwZWQoKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggYWM3NDExMmVlZDQxN2I2NTUyNGMyMmE1
NjY3NDFhNzk0NjRmMTVhOS4uZGYyYzk2ODE2Yzc3MTM1ZTE0NGUxOWE4ZDdlOTQ4MGU5MTU2M2Yx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJK
U1Rlc3RFeGNlcHRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4NCw2ICsxODgsMjQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEV4
Y2VwdGlvbj46OmdldDxqc1Rlc3RFeGNlcHRpb25OYW1lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibmFtZSIp
OwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFeGNlcHRpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdEV4Y2VwdGlvbj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXhjZXB0aW9uKTsK
KyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbiA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24uZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEV4Y2Vw
dGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0RXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKaW5kZXggOWMyNmRhYWQxMTZj
NGZiNDhkNTBiZjU2MWIyYmM0ODA5MTYwMzYyMi4uNjMxNjJkOTAyYjk1M2IxMDFkMThlMDcyYjFi
ODJlMjIzYTljYjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaApAQCAtNTAsNiArNTAsMTMgQEAgY2xh
c3MgSlNUZXN0RXhjZXB0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RXhjZXB0aW9uPiB7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0RXhjZXB0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QmLCBSZWY8VGVzdEV4Y2VwdGlvbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZWY2NjAzMzRlMzE4MWI2N2RlNTI0YjNkMzVkZjE2NTY0
ZjY1NmFmNS4uNTQ5OWUwODYzNWY4NmY3M2FhZTIzNDgzODA5MzRmOTQ3OWZmNWQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpT
RE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTE5NCw2ICsxOTgsMjQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUFTZWNyZXRBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWwKICAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+OjpnZXQ8anNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZUFTZWNyZXRBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhU2VjcmV0QXR0
cmlidXRlIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7
CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmgKaW5kZXggODBiZDE4MjgzMmFiZmRkNDVlMjc4OWZjOGNiMGUzYWM1OTUwY2IzYy4uM2Fl
ZTRmMzgzY2NkNGYzNTc3ODkxOGMyMGMxOTJhZjMwMzMwZmQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZT4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IDY2NjMzYjI2OTFjNjQ4YWRhNmJl
MWJiZmMzNmQyYTM1MDIyMTFmMjguLjliMjM1MmRhNGM0ZDgyYmNlZjcyMzc3NTA4MWNlZmZhOWE5
NTgxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAj
aW5jbHVkZSAiSlNUZXN0R2xvYmFsT2JqZWN0LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgpAQCAtMTAwLDYgKzEwMSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CkBAIC0yNzc5LDcgKzI3ODIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWMKIAog
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0R2xvYmFsT2JqZWN0OjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCiB7Ci0gICAgcmV0dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5zdWJzcGFjZUZvckpTVGVzdEdsb2JhbE9iamVjdCgpOworICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2JhbE9iamVjdC5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdsb2Jh
bE9iamVjdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIGNsaWVudERhdGEubV9oZWFwQ2VsbFR5cGVGb3JKU1Rlc3RHbG9iYWxPYmplY3QuZ2V0KCks
IEpTVGVzdEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEdsb2JhbE9iamVjdDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwogfQogCiB2b2lk
IEpTVGVzdEdsb2JhbE9iamVjdDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCmluZGV4IDU4ZjczNjg0NzJlOWI0
NTc5YzBkMTUxNGY0MWQxYmQ0MTczNTcyYmUuLmUyZmFhMDNhYmI0Mjg0NjI0ZDE1ODZmMWI5ODQ5
NDM5ZTk1NDNjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKQEAgLTQ5LDcgKzQ5LDEyIEBA
IGNsYXNzIEpTVGVzdEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEdsb2Jh
bE9iamVjdD4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOyB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBkNWE5ZmFiOWUwYjY3ZjE1NjA3OWYwODg3
MWJkYWRlMDVlMWEyM2ViLi5hNzhjM2U1NWYyZjlhNDBmNWI4Mzk2YTZhZWI3YzM2ZGZiY2QyODI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
CkBAIC0yMiwxNiArMjIsMjAgQEAKICNpbmNsdWRlICJKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0
cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0yNTMsNiArMjU3LDI0IEBAIGJvb2wgc2V0SlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4
IDFhMDIzYzdmMTViZmMzNDgyN2Y4MDI1YjgwZGZlNGZmOGMwYjE2NjguLjc5NTNiMGVlOGViMzZi
NDM1NTFmZDJkY2MxZjY2ODU5Yjc0OWU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEluZGV4ZWRT
ZXR0ZXJOb0kKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5k
ZXggNzUwNGFlMjA5YTUxYjI3NTA2ZDY5ZjQwNjA4MDMxNjJlN2RiNmRiNy4uZWNlZWFkODBjMzI1
MTI5Yzk1Y2ZhNTdlOGVkYWJlMDY3MGVhMjY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTIyLDE2ICsyMiwyMCBA
QAogI2luY2x1ZGUgIkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjUzLDYg
KzI1NywyNCBAQCBib29sIHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsRwogICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7
CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7
CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4
cHIgKCZKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAg
ICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdO
T1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IGUzNjgz
ZWZkZTZkYmUzYjczODA2OTkxMGVkMGY2Y2I1YWE4YWI1YWQuLjFjZDU1NjhmZDlkMDNlZjFlODBi
YzczMzM2ZDdjNWJlMTc3ZTI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dEluZGV4ZWRTZXR0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4
IDk2OWZiMDFmMWM1NDBkMWJkMzQ1MGZhYWIwYTZjZDQwNjFjOTBiMTAuLjMyNGYxMzY4NDkwZmYx
MDUzMTE2NzM0YWE0MTcwNjQ3N2EwMzI0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk
ZSAiSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKQEAgLTMwLDEwICszMSwxMyBA
QAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yODYsNiAr
MjkwLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JCiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAg
ICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0
KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNv
bnN0ZXhwciAoJkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJ
R05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggMDVhOTJmOWRhN2FlOGU4
ZTMzZmIzMTRmMjE2NzEyNjllZGJiNjMzNi4uZmZmMTUyNmM1NWI2YmNiMTlhMmJiZWVhMTkwMjAy
MGFjNGIzYjIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW5kZXhlZFNldHRlclcKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
aW5kZXggMDc3YTkxZTBlMjcyYWE4NzNkMjExZGIxMTk3YTVkYTA5MDhmZWY3Zi4uYTljYzQ5OGM5
NWM0ZDJlOGM1Y2E1NmUxMWJlNzhhYjM2NjE4YmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RJbnRlcmZhY2UuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zOCwxMCArMzksMTMgQEAKICNpbmNsdWRlICJKU1Rlc3RP
YmouaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGVz
dFN1cHBsZW1lbnRhbC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBB
bmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KQEAgLTExMTAsNiArMTExNCwyNCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpT
Qzo6SgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAiZm9yRWFjaCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RJbnRlcmZhY2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEludGVyZmFjZT4pCisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdElu
dGVyZmFjZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2UuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQor
ICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEludGVyZmFjZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FS
TklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEludGVyZmFjZTo6
YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgKaW5kZXggMzU2ODk3MTQ5NDRjYWI5OTZmNDk2ZTMwOWEwZGM3MjZjYmZhNGQ3
Ni4uYTZlYTgzYzZkNGFiZWE4OGNmM2ZjMzZmNzA5Yzc5ZDdmYmJkZmNkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuaApAQCAtNTMsNiArNTMsMTMgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50
ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAKICAgICAvLyBDdXN0
b20gYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAKaW5kZXggNjVmMjE5MTk3ZjQyZmUwNTY2MzU5ZWI0NTFkOWY5NjBkYzMzYjkx
NC4uZmQ4NDA4Y2RjZDFiYzc0NjVjMWRiYTU3MGU2YmJjMjkzNGE4YmMwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSAiSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaCIKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkg
KzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBB
bmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4NCw2ICsxODgsMjQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEcKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJyZWFkb25seSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjphbmFseXplSGVh
cChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KGNlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaAppbmRl
eCBhMGYwY2VmYzFhYzYyNTAwY2Q3NzUwMzcyMWI3ZjNjNDExZjQwNTZjLi5iMTlmMzg1NTIzMDQ1
YmU3NDVkYzZjNTY4NmM4M2FhN2QyMjU0MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbnRl
cmZhY2VMZWFkaW4KICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
IChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAg
ICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5h
bHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAppbmRleCAyYTZiODZhZmQw
OWJjMjJiNzYyY2U3NzY3ZTBhNWRiNTMwMDU3NDU3Li5hY2E4NTNmN2JmN2VjNjczNjdiYjJlZDFm
YmU4ZmMxYmE5NmEwNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAK
ICNpbmNsdWRlICJKU1Rlc3RJdGVyYWJsZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAgLTMxLDEwICszMiwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMzksNiArMjQzLDI0IEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
Rm9yRWFjaChKU0M6OkpTCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46
OmNhbGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZm9yRWFjaCIpOwogfQogCitKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZT4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0ZXJhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dEl0ZXJhYmxlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEl0
ZXJhYmxlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RJdGVyYWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FS
TklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEl0ZXJhYmxlOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJdGVyYWJsZSo+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJh
YmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuaAppbmRleCBmNzI3YmExYjA1YjM4OTU5OGVmZGM4ZWFiMWI4NDZmMDg5NGFmYjI1Li4w
ZjM3ODA2NmM1NGUzZjAwYmY0OTZmNTdmOTgwZjkxZjMxODMyMTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUu
aApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0SXRlcmFibGUgOiBwdWJsaWMgSlNET01X
cmFwcGVyPFRlc3RJdGVyYWJsZT4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdEl0ZXJhYmxlKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEl0ZXJhYmxlPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDhlY2UxZjQ2YmYx
NWRiMGYzMmVhZjVlZWFkYjhiY2JkYWMyYzgzNGQuLmRmNTEzNTMzZGIzNDNmZmE1MmQzN2YzMzA0
ODE5Nzc3ZjVmNjNlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgiCkBAIC0yOCw4ICsyOSwxMSBA
QAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgogCkBAIC0yMzMsNSArMjM3LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0CiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhbGw8anNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidGVzdEN1c3RvbUZ1bmN0aW9u
Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPikKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKTsK
KyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ip
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCAwMGZhMjNiMjY5YzA1YWE3
ZjNhNzIwMjI1YmQ3NmYwNDc3MzM1OTE1Li5hNDI5YmNkMDk2YTE0MTBlYjkwZTliZGI3ZWU2MmQz
MDk3ZTA1Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAt
NDYsNiArNDYsMTMgQEAgY2xhc3MgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgOiBwdWJsaWMg
SlNET01PYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4
cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwor
ICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKTsKIAogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIHRl
c3RBdHRyaWJ1dGVDdXN0b20oSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGI2ZGQwYjFiYzE1Mjlh
N2Q1YzI5MGY4YjI5Yjc1ODc4YmQyYTY4NjMuLjIwOTA2ZDA0YjhiYjFkNTBjMGQ1ODk3NGZjMzgz
MGUxN2VjNjQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENh
bGxiYWNrcy5oIgpAQCAtMzEsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xOTQsNiArMTk4LDI0IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPjo6Y2FsbDxqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgIm1ldGhvZCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpK
U0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0
Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4
IGZmMTg4MGQ4NDc2NmNjZDBlNWMzMGQ3Zjk3MzRkNDAyOWU2ZWYxYmMuLmYzOTBkMDU3Yzg1NmM1
MTZlMDdmOWU2OTA2ZDMwYWQ2YjNjNzdhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGUKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09
IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcAppbmRleCBiNTNiOThkNDA0MzE0NWUwODMxYzAwYWM1YzY1ZTM1MjY2
MDUwMjcxLi5hYTg1YWFiMDkzNjIxZTA3ZmYzNmI5ODk2N2RmYTRhYjYwNDcxNDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksMTAgKzMwLDEzIEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzIxLDYgKzMyNSwy
NCBAQCBib29sIHNldEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpYwogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmFuYWx5
emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4IGZkZDdiMDNlYzJmZTVhMTFkZTMyOWQ2ZTM1YzIz
ZjI4OGFjMWMxNWIuLmU0YTIyODZjZmNjNDllZWQzNDFiNzNjOWE4NWFhNGQwYTBjZTVjZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQW5kCiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlND
OjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hp
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBhM2Q1ODIzMWUyZTU0MjFiMjM0ZTEwZDVh
YjFkNWYxMzcyNmUwYmYyLi41MzUxYTc4NjdlOWUwMTJkNjEwNzM3MmU4YWQ0MTRkNDc5MTYwZTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjks
MTAgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzIxLDYgKzMyNSwyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqCiAgICAg
cmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0
dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRl
eCAxOTc1Nzk2Zjg2Njg3MjVlZDAyZjZkNGU0ZmIwMjI1YzU5NzE0YmVhLi4wNjA1MzZiYWNhYmQ4
OTQ4MTJhMjMzZjRlY2RhYmQxNjA2YjI1ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNTUs
NiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW0KICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCmluZGV4IGUyOTE4ZjUyNGYyMTViN2UwOGZmODVmZDNjZTUxYTA0MzVmYjI5NDQuLmY1OWEx
MmNhMzk4NWE5MWRiOGM0YTA5NDRkNDY4ZjRlZWEyMDFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzc3LDYgKzM4MSwyNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlRgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Z2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Z2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlm
IGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZv
aWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmFuYWx5emVIZWFw
KEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IGNhMjAxZTA3ODc0MzEzMDU1YWFjZjdiMjIxZTFk
OWViNmU0MTdiMGQuLjM2NjJhM2ZmMmZhMGZiYzE5MWNmOWY3ZDM5YzBlNjQ0NWQ3NWI2ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQQog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYs
IGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlND
OjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlND
OjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBz
dGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDgyMWQ3YzQ3
YjBjNjM1MzcwYTE1YWY3Y2Q0NDU1MDNmMzdjMDk1MzYuLmIxZGMxODVkMDIxNTgwM2NmYTAyMmQ0
YmNlMzdhNjEyMzE2OTI3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgpA
QCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMDcsNiArMjExLDI0IEBAIGJvb2wgc2V0SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQog
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3IpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2Vs
bCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCmluZGV4IDg1OWNkM2JkYTliZDIyN2EwODk3NmM3YzExNWMzYjliODYyMGI5YjAu
LjA3NDAzODNhOWViOGUwY2I4NjQ2ZmE0NDc5MDg2Y2U4YmU1NDQ5M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsK
IAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVk
Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4
cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwor
ICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBB
bmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCmlu
ZGV4IDg3ODNlMTVjMjgxMzc2NjM0ZmRjNzVkZWZmYzg1ZGRhOTY1NDg5YTIuLjc1ZDYyMTk2ZDhj
MzQ4ZTAyNDhiMmFkMWYyNjljMmVkMGMyOGI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFi
c3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0yMzUsNiArMjM5LDI0IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPCiAgICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJz
cGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICBl
bHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKaW5kZXggMTM4ZDRjMThmOGY0
NmJjMzQzMzEwOWJkMDMyMzk1NjM3ZDBhYzM5YS4uMzM0MmI3YjUxMmEyZWQxZjM2YzdjZWEyMDlj
ODFhY2FkMDc3OGRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuaApAQCAtNTQsNiArNTQsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyTm9JZGUKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlB
YnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA1NzlmMmEwZTZhOGM3YTkyNTU2
MTlkODQ0NTI2YmE4ZGRiMmRhYThkLi41YWE1NTg4NTVhZWE0M2ViZjU3NzM1NGMzZDUzNjA5ODc2
NDAwNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
MjQ5LDYgKzI1MywyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbAogICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHBy
ICgmSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggMDU1ZDNkZjkyMzgx
OGMwMDc2N2YxODk1ZGY2NzI1ZjViYzBlZGZmNS4uNWZhNDJkNWZiYTYxMTBlYzA4NWI3ZGE4Yzll
YWZjMTAwNjM4Mzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uLmgKQEAgLTU0LDYgKzU0LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxl
dGVyCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZv
clByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggMjUwMjNhMzFhMTQ2NDIy
ODdhMGIxYjUwZGRmNGRmNDYxOWRkZjI1Yy4uMTViOTQ3OGQ5ZjVlZGM2M2U0OWJjZWQzZjYwYzc0
OTRiNDY4OGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNjcsNiArMjcxLDI0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWREZWxldGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkRGVsZXRlckJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWREZWxldGVyIik7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5oCmluZGV4IGE4NThhMjcxNTRiZDNjNjM2NGZjNDVhNjQ3ZmY0MmI2YjQ3MjUw
NmYuLmU0NWM3NDkwOWI5MjI5YTdhMGYwYjI1ZTkwNjAxZjIxNzE5ZTg0MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01NCw2ICs1NCwx
MyBAQCBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdE5hbWVkRGVsZXRlcldpdAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlO
YW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuY3BwCmluZGV4IGY2ZjM2NmUyMjJlNDE0NGE3NGI2Mzc1NGZiZDA3ODk4Zjk4YjY2YzYu
LjNlZDk5ZjA5MTgyMTU3ZWJhMmQ4MzNhNTI0Zjc4MmYyMTEyNDhkYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgiCkBAIC0yOSwxMCArMzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNTEsNiArMjU1LDI0IEBAIGJvb2wgc2V0SlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQog
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBz
cGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5k
ZXhlZEdldHRlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgZWxzZQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcio+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuaAppbmRleCAyZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyLi41
NDA1NjVlOTYwMzBjYTllNWFjODQzMWJjMjMwYjlmYzFiZTMwMGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNTQsNiArNTQs
MTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3ROYW1lZERlbGV0ZXIKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okdl
dE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlND
OjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKaW5kZXggY2Ew
OWQzYjgxMzY5MjQxYjVmZDYwMzdiZTQ4ODk2NDAyYjg2ZDk3Yi4uZWI4ODI3ZTEzMDgxYzY3NDYx
YjUxMWUyOTcyNTIxZTAzZTFkMTJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGguaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxMyw2ICsyMTcsMjQg
QEAgYm9vbCBzZXRKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGg6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNh
bGxXaXRoLmgKaW5kZXggOTZhOThjNWJiOTQ0ZDJiZWM4ZmNkM2I5ZTgxNmQ5YWRkZTQzNzljNC4u
ZWVhNjhiZDZjNTgzMzliNzNlNWEzNWU1NmM2ZTYzNDgwODNmMjZlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFzcyBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aD4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGI3NjlmYTkxMDkwZDhj
MDliZjkxODBjNWY4YTQ5ZWM2N2M4OTQwNzIuLmE1MTE4YmU4MzBmMTQwNTBlMmZiMjU3ODU1ZTY5
MGI5MTY5ODY5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMTMsNiArMjE3LDI0
IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZK
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAm
SlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEu
b3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuaAppbmRleCBmZTk4YjYxMTk2NjZmMmRjNzRiYTFkMDAzYmNlOGYyMGZjYTFmNDI2Li4yYzE4
MTBmOWYzMmM2OTM2MDM4OTVhMTY2NTZjMjRiMWFlNGM1NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1l
ZEdldHRlck5vSWRlbnQKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xv
dElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggNDVlZWIy
YmVmOWQ3YzAxOWQwNGVkMmUwZmUxYmFlOGVjNTFmZjUzOS4uYjQ4MDZkMmM3ZDdmZTE2NWEwYmM5
ODc0YWIzNjllODEwYzI0ODg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNDIsNiAr
MjQ2LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXR0ZXJOYW1lQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJnZXR0ZXJOYW1lIik7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0
YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcio+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgK
aW5kZXggNGZhMDJkMTQ4M2NkNDU3MzQ0NzZiMjcxNmE1YzhhMTFhMmEyZDFhMy4uZDE5ZDY4Zjk3
YTE3NzI0ZTVkNzg2NTAzYjk4YmQ1YjdlYTkyNWI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFzcyBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFt
ZWRHZXR0ZXJXaXRoSQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4
cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwor
ICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBB
bmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90
SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDQ2NzUxNTFlZGUx
MzcyYjMxNDYxZTg1YmVmNmNkNzA4M2Q4MTU1MDQuLmRmZTJjYTlmZjY3ZThkNzYyOTc3NjVlY2Vk
ZmJjMzU5ZjNjN2YzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJz
cGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNzYsNiArMjgw
LDI0IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIg
KCZKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXIuaAppbmRleCBjMTE0ZDI4YWQ1N2FiYTYxNjdkYTk2YWVmMDIyMjQyZTU5NDk3MjMzLi5i
NzJiNmQzOGE5OTk1NDRkMmZlNjNmYTk2NjI0Y2IzZTExZmMzNjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3Mg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RO
YW1lZFNldHRlck5vSWRlbnQKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBiNWE4MTZkZTQ2OGEzZmI0NDg3MDY0
OWI3NWExNTljMWIyYmE4YjY5Li5kNmQ3MDhiYjE4Y2YzNDQ2MjkwYWM1ZDkzZDgzOTBhNjc0NGZl
YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjc2LDYg
KzI4MCwyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwogICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsK
KyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
ICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCA0NzlmMTYxZDk4ODYxMDQ3OGFlYjIxMzE5ZDdiMDQy
OTcxMjc0MmY4Li5hOWY3YzJmMzU1ZWJkYTFiOWVkY2Q5MTM0ZDY4NGFkMTc2Zjk4MTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAg
LTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24g
OiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlclRoCiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5kZXggOTcyMGYz
NjlmN2QzN2YzZjhlYzI1OTFlNDQwNmEzNDUyZmQxMWQ4ZC4uNjA0M2M5ZDJkMGRhMDU4NmNmZTNh
MTVkMWExZTdkYjZjMzk2ZjNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMDgsNiAr
MzEyLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtCiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZFNldHRlckJvZHk+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWRTZXR0ZXIiKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVy
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIu
aAppbmRleCBkMTUzNWNkZmE4YzQ5NjMxNGY5NTlkYzY0OTg5ZTBkM2UyOTg0NDY1Li42N2M1Zjgy
NDUxNTBkMTU0MGRhYjFlNWZlMzc2NWFlODkwMjdmMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RO
YW1lZFNldHRlcldpdGhJCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQ
cm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggNjQ2OTRkMWU0OGUxMjgyZGRkMTdjN2Iz
MjJjODk2ZDU1MTBlNTZjNi4uY2U2MGE4MjdkMDZiNDlkMzJmY2I5NmJiMjM3MGM1YWQwZmNkNThk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMxLDEwICszMiwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zNTEsNiArMzU1LDI0IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZUZ1bmN0aW9uCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIg
KCZKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xp
ZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9X
QVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKaW5kZXggM2U4MmVhZjZlZmQyYzExYmI2
ZjliNjc2ODgzZWE5MGE4Y2QzYmI4My4uZGJjNDA3MzhkMTIwZGU2NDAwOTRmNzcyYzg3N2RjZWFh
Mjk5NzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJXaQogICAg
IH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0
eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDdiMWNjODQyMWY4NWQzMWIyMDA4MTBmMTI4
ODc0MTUyZDY5MTIzMDEuLjYxNjgwYmM1M2FhZjllZmM5YTUwOGJjYjgyOWEwNTY3NjM3NjdiZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMSwxMCAr
MzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
NDAzLDYgKzQwNywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cAogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj46OmNh
bGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZUZ1
bmN0aW9uSW5kZXhlZFNldHRlck92ZXJsb2FkRGlzcGF0Y2hlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAg
ICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9
CisKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgKaW5kZXggZWIzN2QyM2Q4NTlkNWU3
YmNkNTA3N2ZkMTVhMTgyMmRlZGIwOGVjZi4uYTU2ZjcyYjBmMGQ2NTIzM2JkYTVkYWEyN2Y5MDMy
MTQxZDhhN2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIDogcHVibGljIEpTRE9N
V3JhcHBlcjxUZXN0TmFtZQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlT
bG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6
UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGFhMmE3NTk0MGFjYTMwMWUz
MzJjYTMwM2MwZWVmOTVmMTMwM2I5NWYuLjhjODIwYTAwNzc0MzdiZDA0NzNkYjc5MDFjYzM0NDFm
Y2NhOGU5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFi
c3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0yNjMsNiArMjY3LDI0IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsCiAgICAgcmV0
dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucz4p
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5
emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnMqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5oCmluZGV4IDdkZTUxZGY5ZDU0MDYxYjI3MjdlMmRiNTNmZDRlZWYxMjAw
OTVhNWQuLjA1ZmE0OTVhYzYwYzU2YjZmNzg2YTA5ZGE2YzZkNTdlNmY0Yzg0NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaApA
QCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGUKICAgICB9CiAKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IGM4
NGIxMDY0YzRlMWIxMjdiOGM1MmY4NDkzNWIyYzNiMjk2YTMzZjguLjljMmZjNmMwMTA5MWUxYWU4
YWRiODJhM2E3YWNhMTNmNmQ2ZTlkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcApAQCAtMjIsNiArMjIs
NyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zMSw5ICsz
MiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMzQ2LDYgKzM1MCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdQogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFu
Y2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwogfQogCitKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4
cHIgKCZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisg
ICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyo+KGNlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMuaAppbmRleCBhMDE0M2Q3NGY5NTZjNmE1N2E4YTJhZTUyMWU4NmQ1N2QxOTBk
OWY0Li40ZDFlZTBlZTUwNTRkMWMwZTNhOGM3MjQyODEzZTE5NTU5NjAyY2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFMKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNl
bmNlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBK
U0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggYjlmNzAyNTRiMTg0NzNkMWQyNmI1ZmE3
YzUwNzc0YzQzNzhmOTQzOS4uOWVjMmQzMzk0Zjc0ODA1MzlhYTE5NTQ5N2I4N2FjMjljYTViMjE5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaCIKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpT
RE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTMxLDkgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMzMsNiArMzM3LDI0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+
OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJp
ZGVCdWlsdGluc0luc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7
CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7
CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIg
KCZKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBh
bmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4IGY4
NTY0NmZlYWYyOGFkNjQ4MzNhYTBiYWNkMTA0ODlkZTQzNjM3YzQuLmNkZmQ0YTQ3MjczODk0Y2U5
NGJkMGIzMGNkZWEwYzk2MzczN2UyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyA6IHB1Ymxp
YyBKU0RPCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlND
OjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMWZiM2YxYmVhOGRh
ZjJmMGQwOWUyOTZjNTg3ZmZlMDQ3MDg2M2ZlOC4uNmQ4ZWRiNTdhNmZjM2IwMTQxZDZhYWZiMGNl
YzNmMjlhMmMxZjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg
IkpTVGVzdE5vZGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgpAQCAtMzYs
MTAgKzM3LDEzIEBACiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
NDQzLDYgKzQ0NywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0dsb2JhbE9iamVjdCogbAogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Tm9kZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5v
ZGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5vZGU+KQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROb2RlKTsKKyAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAo
JkpTVGVzdE5vZGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROb2RlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3ROb2RlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAppbmRleCBjMzViM2M0ODg3MmNiZmQyZTgxMDZiYTI3
OGI0N2NjNTM1MDRjMzc2Li40YmI2OWViNWViMGM1ODJiZWJjMmNiM2E3YWZkZWIwMjEzMzFiZDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVz
dE5vZGUgOiBwdWJsaWMgSlNOb2RlIHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RO
b2RlJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdE5vZGUmIHdyYXBwZWQoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUz
NS4uODU2ZWJkYzVmYmU5Zjg2ZmUxY2M1ZDc4OTE4YzQzMzlhM2YxZjJlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgpAQCAtODksOSArOTAsMTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Fy
cmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtODk0OSw2ICs4OTUyLDI0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
SlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0T2JqOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RPYmopOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RPYmo6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGll
bnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IGJiYmZh
MDQ5ZWIyMGMwY2ZlZjA3OTYzZDQ2ZWNhNzU2YzhjMWFiN2MuLjZkNThlYzZlNTA2MjdhOTVhMjAw
YWQ1OTEwMThiZDg1NTBiNDdmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTYzLDYgKzYzLDEzIEBAIGNsYXNzIEpT
VGVzdE9iaiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE9iaj4gewogI2lmIEVOQUJMRShDT05E
SVRJT04pCiAgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fY2Fj
aGVkQXR0cmlidXRlMzsKICNlbmRpZgorICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNw
YWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAxMGM4MmI5MWYw
OWMwYWQ5ZDE3Y2MxYjhjMTdjMzA2MDNmODkwNmRjLi41NmNlZmQ0NWU1NTYwYTkyNGQyOGEwMDcz
YzQ3ZDk0MWNhNTVhNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgpAQCAtMzMsOSArMzQsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMjY2LDYgKzI3MCwyNCBAQCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1
YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBlbHNlCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAg
IGlmIGNvbnN0ZXhwciAoJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAg
ICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFs
eXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaAppbmRleCA2YTUwOTQzNzcyNTJlYzI5MTI3YTAxODU0ZTM1NmRiNjNm
YTU5NzU5Li44NjcwNTg1ZDcyZmE2MDVkNWJjMmQzODg2ZjQ3MDY0YjEyYWY1OWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTQ5LDYgKzQ5LDEzIEBA
IGNsYXNzIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3RPdmVybG9hZGVkQ29uc3RydWN0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCA2MjU1MjEyZGJj
NWQ5OGFkMmQyODQyMjAzNDNhZjg4MmRjMjBiNmQ2Li40N2Q0Y2I5NWU2MDc4MWZjZGFmYTg4OWJk
NzAyZDFlMDA3NmVjYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oIgogCiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgpAQCAtMzAsMTEgKzMxLDE0IEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMTYsNiArMjIwLDI0IEBAIGJvb2wg
c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CisgICAgaWYgY29uc3RleHByICgmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmFuYWx5
emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oCmluZGV4IGQ3ZWE5MDNlZTI1NGJjMGJjZTRjMDQ3M2Vk
OWMwMTkyYjE2MjI0YmEuLjIwMzA0MzY1YTUwNzBmNDVmN2VlNmVlOGFiZjdlZDA2NDMyNDllYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2EK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHBy
b3RlY3RlZDoKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCmluZGV4IGYxMTgxMWU4NTk0YzJkMTJlNGY0ODc5YTJlZGFlODYwYThiYzRhOTQuLjliNmQ1
MzkyMmE4OWE3OTQ4Y2Y2NjE2MmY0OTZhYzRhMjg0YWViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMyw5ICszNCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI0NSw2ICsyNDksMjQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rp
b25OYW1lZEl0ZW0oSlMKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVk
SXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWRJdGVtIik7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKaW5kZXggNDQ3ZjNmZjc0YzllZWE2ZThhZTJjZTIzZGEzOThmM2JjYjM1
NDUxYS4uNWJjMDNhODEzOTgyMjNhMDcwODgwNGEzMGJmMjY5ZTJhMDgyZDIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFzcyBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlu
cz4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKaW5k
ZXggNGI4MDI3NjYzYjE2NWM1YzAwNzVmMWI1YmZiNzM4ZGE2MGRiMDRmZi4uM2YxNmY5MmNiMDEx
OGUyMDkzNTViN2QyOTc5MDViMmE3NzQwYWIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5jcHAKQEAgLTIyLDE1ICsyMiwxOSBAQAogI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVy
ZmFjZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtMjE3LDYgKzIyMSwyNCBAQCBib29sIHNldEpTVGVzdFBsdWdp
bkludGVyZmFjZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbgogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UGx1Z2luSW50ZXJmYWNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQ
bHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dFBsdWdpbkludGVyZmFjZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RQbHVnaW5JbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1
Z2luSW50ZXJmYWNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQor
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVy
JiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdp
bkludGVyZmFjZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCmluZGV4IGJm
ZDk1NjViMDgzMjU4MWQzMjY2OTg5MDQ1NTc2ZTYzMDYzZDM3ODcuLjUzMmUzYmM4MWYyYmE2M2M2
NGJkZTk0ZmMzNmJiNDZiZGQ2NTEzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgK
QEAgLTU2LDYgKzU2LDEzIEBAIGNsYXNzIEpTVGVzdFBsdWdpbkludGVyZmFjZSA6IHB1YmxpYyBK
U0RPTVdyYXBwZXI8VGVzdFBsdWdpbkludGVyZmFjZT4gewogICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAppbmRleCA3N2YxOWYyZjMwYzYwNWFkZWYz
ZTMwODRlNTcwOGMwNGNmNGI3MTgwLi4yZWI4ODFhYWQxNzRhOGE5Njc3NDg2OWUzOWJlZDFkN2I3
OTNiNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiRE9NUHJvbWlzZVByb3h5LmgiCiAjaW5jbHVkZSAiSlNET01BdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM1LDggKzM2LDExIEBACiAj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMjkzLDYgKzI5NywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRSZWFzb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Z2V0PGpz
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInJlYXNvbiIp
OwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKaW5kZXggNmUyZjdjN2YwMGQ4YzZkZDJkOGJkZTcyYzk2
MDEzZTMwYTdhNzFkOC4uNjVjNzI4YzY2NGJhNzZiN2FjMzFlMWM0MzQ4MzkyMTBiYWRhMjY4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtNDksNiArNDks
MTMgQEAgY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogcHVibGljIEpTRXZlbnQg
ewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpW
TSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
SlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0g
SlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAg
ICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwog
ICAgIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCA1YmVhZTE2Njk1YzE4NTFjODAxNWY2NjA0
OTVkZTYyZTRjNjczNTliLi4wZDBmMWM0Yjk4MTE0MTZhZDhjM2Y2ZjU4Y2ViNzJjMDA5Yjk0ZmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzksMTEgKzQwLDE0IEBACiAjaW5jbHVkZSAiSlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTY3NCw2
ICs2NzgsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0
aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWwKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5
cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
dG9KU09OIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRpb246OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
U2VyaWFsaXphdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTZXJpYWxpemF0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTZXJpYWxpemF0aW9uOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNU
ZXN0U2VyaWFsaXphdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFs
aXphdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgKaW5kZXggMjc5ZTIyNjI0
MDI2NzkyYWYyYjUwMTc3YzRmMjU5MDUwOTI5ZTVhOC4uMjkzNjgyNGQwNTA4ZGE0MGI0NTgyZDU3
YjI2ODBhYWNlMzZkNzk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5oCkBAIC01MCw2ICs1
MCwxMyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0U2VyaWFsaXphdGlvbj4gewogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTVGVzdFNlcmlh
bGl6YXRpb24mIHRoaXNPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3Bl
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RTZXJpYWxp
emF0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFNlcmlh
bGl6YXRpb24+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKaW5kZXggNzllYmNhMTI2ODg5YmE4ZDIzM2ZlMDk0NWIy
NzI4NGVlMjk5NzQwMi4uOTE0Zjg5MDI1MTFhYzc1YzFmNGI4NTUwNDM4ZGNlZjkyNDQ3YzliMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5o
ZXJpdGFuY2UuY3BwCkBAIC0yMiwxMyArMjIsMTcgQEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTE1Myw2ICsxNTcsMjQgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2EKICAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlOjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCkpCisgICAg
ICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVy
aXRhbmNlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbklu
ZGlyZWN0SW5oZXJpdGFuY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICBlbHNlCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJp
dGFuY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFs
aXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFNlcmlhbGl6YXRp
b25JbmRpcmVjdEluaGVyaXRhbmNlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRD
b25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAg
ICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5o
ZXJpdGFuY2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25J
bmRpcmVjdEluaGVyaXRhbmNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJp
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oCmluZGV4IGQ5YzlhYzM0YmI1MzE2MzZi
YThmMTIzODE4MzU4NTc4NTgzMDVjNzMuLmUwYmMyYjlkYWNkNDJkMTcyMzE4Y2NmMWNkMDZlMmFj
MmU0NDJjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZS5oCkBAIC00OCw2ICs0OCwxMyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZSA6IHB1YmxpYyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogICAgIFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZSYgd3JhcHBlZCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKaW5k
ZXggYTZlODJlMmUxZTcxOTAxOWRiNjBlYzQ0ODBkZTUwYWU4M2RjMDcxOC4uNGVkNzNkOTg3YjZm
OTRhYjRhN2UwZmNlYWNjNmYyNTFiYjcyMzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMjksNiArMjMzLDI0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5
cGVGdW5jdGlvblRvSlNPTihKCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdD46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVG
dW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9K
U09OIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuZ2V0KCkpCisgICAg
ICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0PikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXQuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQg
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdC5oCmluZGV4IDM0N2UwMDhlNTIzZWUzYWExYzBhODU1NjYyOGRiY2QwNDVl
YjVlODQuLjk1NmE1NGQ3MzkwNDg0YWFkMmVlMTU1OWNlMWQzZmUzODQwYTRhMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFz
cyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCA6IHB1YmxpYyBKU1Rlc3RTZXJpYWxpemF0aW9u
IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2Vy
aWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCYg
dGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUmKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogICAgIFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCYgd3JhcHBlZCgp
IGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWwuY3BwCmluZGV4IDBiMzE4NmYzOTdkMTE3NjBmZTc4ZjljMTU3OWRmYzA5ZWYwZGU0ODMu
LjUzMzg2YTQ3YWU5NDNiYmJkMzI4ZjZkZjk5MzRiNzUwZjY3NGM2NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgiCiAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpAQCAtMjY0LDYgKzI2OCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSgogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OmNhbGw8anNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuZ2V0KCkpCisgICAgICAgIHJldHVy
biBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dEZpbmFsKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlND
ZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENv
bnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuaAppbmRleCA2Y2M4ZjQ3NDY5Njg5NzY2OGRkOTcxYTc0OWRkZDFlOWI0YjY3ZGQ3Li43Mjdh
MzUzYjc3MjI3OTg4NzQ4NzRhYTM4NDM4YWZhODM2N2IwNzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNz
IEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwgOiBwdWJsaWMgSlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXQgewogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwmIHRoaXNPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJv
d1Njb3BlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbCYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA1NjFhYmFmNTY4
OTgzN2YxNDgxODdhZTgxZTQ4Mzc4ZTIwZjVkNjA1Li45YTgyZjI1ZjljNTkzOTcwYmIyMTdlYjY0
YjljNTFiZTY0MzA3OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzgsMTAgKzM5LDEzIEBACiAjaW5j
bHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzQ3LDYgKzM1MSwyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJmdW5jdGlvblJldHVybmluZyIpOwogfQogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuZ2V0KCkp
CisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKTsKKyAgICBlbHNlCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWlu
dFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggMjQzZjYzYTJhYTE5MmRjYTI1ZGY0ZTk0M2E5NzRlYTc3
MmU0MGUxMi4uYTJhNjczOGFkMDYyNDNmMTdkZmE1OWQ1OGRkODQ1Y2EyNDQxMDJiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApA
QCAtNTMsNiArNTMsMTMgQEAgY2xhc3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0U2VyaWFsaXplZFMKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fY2Fj
aGVkVmFsdWU7CiAgICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1f
Y2FjaGVkUmVhZG9ubHlWYWx1ZTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmNwcAppbmRleCBjM2NhN2QxOTA4NzU5NmQ1NTQ3OTY0ZDE5YWNkMGIwMTUz
OWMzMjAzLi5hZjQ1MDNlYjQ4ZGUwN2RhMWI4OWQ2NDJkZTgwNjNiMzVlOWNjYjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RT
dHJpbmdpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTg3LDYgKzE5MSwyNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25U
b1N0cmluZyhKU0dsb2JhbAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZp
ZXI+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9TdHJpbmciKTsKIH0KIAorSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJz
cGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3Ry
aW5naWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0
U3RyaW5naWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBj
ZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKaW5k
ZXggYzAxNGI5N2QyOGFhODY5Y2FmMzg1ODU3YTQxMDk2OWY1NmVmYWIyNS4uNjE4NzQwNDIyMjYy
NGRjMGU5NmQ4MGRmMTI2ZGUyYzI5N2FjMWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKQEAg
LTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0U3RyaW5naWZpZXI+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllcj4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmNwcAppbmRleCA3NzFmNTlhYzViNTFiMWE2NmM5ZWI2MWNhYTgxZDVkZTc3YTI5NWM4Li5l
YmI3ZGQxMTQxNjhkMmU2OGQ3NThhNzI0NjU5YjU1NDEwNjQ2MDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTIyLDYg
KzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgi
CkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtMTg3LDYgKzE5MSwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVu
Y3RpbwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAidG9TdHJpbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpT
Qzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmgKaW5kZXggNTlmNTFlNGIyYjM1Y2UwODA5ODQyNWFi
ZmM4ODQ3ZjhjNjVhMzQ1Zi4uMmNjYzBkZWFmZjI3YzZhOTZlNzI5YTQ0MjBlMjcwYjc2YWY4YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWZpZXJBCiAgICAgfQog
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNw
YWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2
b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6
CiAgICAgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24oSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24u
Y3BwCmluZGV4IDMyM2FiZjg2YzJlM2JhZDRmZjE4ZWEzMTkzM2U5NmEzZGNmZDRiY2IuLjM5NWZl
NzAzYTUzODBjMzJiZjI5ZWUxZmMyN2E2NjRjYmVkNzY0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5LDkgKzMwLDEy
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CkBAIC0yMDMsNiArMjA3LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TCiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjo6Y2FsbDxqc1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9TdHJpbmciKTsKIH0KIAorSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+KQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uZ2V0KCk7CitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
ICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24uaAppbmRleCBhN2M2MzU5M2RlYjAwNmY4ODdkOGMxMTMzMGVhMTJlNTk1MDQ0YTk2Li5i
OTQ2MjNmYTY2NGRhYjhiOGNlNzQ5MDAyYzUyZWMyYjllMzI4NzliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNs
YXNzIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3RTdHJpbmdpZmllck5hbWVkCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxl
bWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXggZTZiNTQ5ZTcx
YTYxNGEwZjIyOTMwNzY0MDUzMDBhYjE5NTlhOTgzOS4uZmM0OGI5ZjcwZDg3MjMwMDk0ODcwMzI0
MTQwZDM4Mzk3MDFjOTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtMjksOSAr
MzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTIwMyw2ICsyMDcsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW4KICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cz46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
dG9TdHJpbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5oCmluZGV4IDE5NDQ2MTk4NjYwYTI2NGNmYWFiMTg2ZWZkODgwOTJl
M2MxN2I4ZGIuLmNlM2NiMDhkNGI4NDIwNTMyMzk2ZTZlZGZlYTFiNzEzM2ZiMzg4M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmCiAgICAgfQog
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNw
YWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2
b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6
CiAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IDhjN2NiYTllNjg0YjlhMTAxNDFmNWU4
MDE5MjIzOTg3NTQ3NGUxN2QuLjhkOTY1ZGM2MGY3ZmY5MjBiNjdhNmQxYmMyNzViNzBmMTI4ZTVj
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xODcs
NiArMTkxLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuCiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+OjpjYWxsPGpzVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7CiB9
CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZzo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcp
OworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3Rl
eHByICgmSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmcuaAppbmRleCAxZGI2YmIzY2VhYjQ2MjJjMjYyN2IxNzk0N2NhMmQ3OThhNGE1OTY3Li4xNjVl
ZTZlOWY0OGQ2MmE0YjM1N2E0MzY1NTg1YmE4NDE5MTk5ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oCkBAIC00OSw2
ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcg
OiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZgogICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUu
Y3BwCmluZGV4IDlhYzkxNDdhMDZlMDM5ZmM4ODU2YWViZDBlNjE2YTUxYmJhZDQ0MTUuLmU3ODRl
YWNlZDdkMGU5NTNkZjRjNzJjMzcyMGEyZmNhZGYzMTdhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICsz
MSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMjA5LDYgKzIxMywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvbgogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT46OmNh
bGw8anNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7CisgICAgZWxzZQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSk7Cisg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9
CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSo+KGNlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmgK
aW5kZXggNjZmOWY2ZjFmM2NmMDIwYjMzZDhkY2Q2MjhmMTA0NmY3ZDdlM2ViMi4uZDVhYzUzZmFm
YmM1YWM3NGJiNmRiOTA3ODI0OWM2Zjc0MzRiMDRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFz
cyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlIDogcHVibGljIEpTRE9NV3JhcHBl
cjxUZXN0U3RyaW5naWZpZXJSZQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAppbmRleCA1NmVmN2JkMzVmMTBj
MWQ5ZjE5MDMwMGM2Nzc4NjY4NzhhMzlmOWY1Li4zODFhNjk2N2E0ZTQ1YTg0YmVhODViNjVhMmE3
NDUzZmVlMWYwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIyOCw2ICsyMzIs
MjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW8KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAg
IGlmIGNvbnN0ZXhwciAoJkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OmFuYWx5emVIZWFwKEpTQ2VsbCog
Y2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCmluZGV4
IGE3Zjk2OWMyMDgyZGU2NjdhMGJjODIyOTgzMjUzNDE0ZDZlNTI2NmMuLmRlNjhjMjk3YzNlNjEz
NDMwZjBiMmRmM2IzMDJiNjZkY2M4MmVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBK
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8
VGVzdFN0cmluZ2lmaWVyUgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4
IGQ4ODczOTIxN2I1ZDRhZjdlZTFkMmZkYWU1ZWNlZTgzMGNjMjA1YzYuLjlmMTc4NDcyYzljODky
ZDVjZmUzZGYyZTc1ODI1ZWRmZTU5ZjMxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFR5cGVkZWZzLmgiCiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3IuaCIKQEAgLTQ2LDEwICs0NywxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFN1
Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtNzcxLDYgKzc3NSwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0
aW9uKAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
VHlwZWRlZnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVk
ZWZzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFR5cGVkZWZzKTsKKyAgICBlbHNlCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdFR5cGVkZWZzOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
VHlwZWRlZnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5oCmluZGV4IGFlZjJjOWZlNWViOTkyY2I5MThkYWUwNTk0ZTEyOTAw
NTM5YjY4Y2IuLjY0ZTdlZThmNGZhMzc2MzIzMDgwODVmZjk5MTEyYWJlZjQxNmVmMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RUeXBlZGVmcyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFR5cGVkZWZzPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFw
KEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392504</attachid>
            <date>2020-03-04 16:24:16 -0800</date>
            <delta_ts>2020-03-04 16:41:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205107-20200304162415.patch</filename>
            <type>text/plain</type>
            <size>282465</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uYWU5MWIwNzUxODcwMTUxYjYyNzBiNmJjZDNjZTkx
YmZjMjEyNTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMCBAQAorMjAyMC0wMy0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFB1dCBhbGwgZ2VuZXJh
dGVkIEpTQ2VsbHMgaW4gV2ViQ29yZSBpbnRvIElzb1N1YnNwYWNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVzIElzb1N1YnNwYWNlIHBlciBXZWJDb3JlIERPTSBvYmplY3QgdHlwZS4KKyAgICAg
ICAgSW4gcHJlcHJvY2Vzcy1pZGxzLnBsLCB3ZSBjb2xsZWN0IGFsbCB0aGUgRE9NIG9iamVjdCB0
eXBlcyBhbmQgZ2VuZXJhdGUgRE9NSXNvU3Vic3BhY2VzIGNsYXNzLAorICAgICAgICB3aGljaCBj
b250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBJc29TdWJzcGFjZXMuIEFuZCBpdCBpcyBoZWxkIGJ5
IFdlYkNvcmVKU0NsaWVudERhdGEuCisKKyAgICAgICAgQ29kZUdlbmVyYXRvckpTLnBtIHN0YXJ0
cyBwdXR0aW5nIGBzdWJzcGFjZUZvcmAgYW5kIGBzdWJzcGFjZUZvckltcGxgIGZvciBlYWNoIEpT
IERPTSB3cmFwcGVyIGNsYXNzZXMuCisgICAgICAgIEFuZCB3ZSBkeW5hbWljYWxseSBjcmVhdGUg
SXNvU3Vic3BhY2UgYW5kIHNldCBpdCB0byBXZWJDb3JlSlNDbGllbnREYXRhJ3MgRE9NSXNvU3Vi
c3BhY2VzLiBBdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB3ZSByZWdpc3RlciBJc29TdWJzcGFj
ZSB0byBtX291dHB1dENvbnN0cmFpbnRTcGFjZXMgaWYgdGhlIGNsYXNzIGhhcyBvdXRwdXQgY29u
c3RyYWl0cyBjYWxsYmFjay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om91dHB1dENvbnN0cmFpbnRTdWJzcGFjZUZvcik6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0
YTo6SlNWTUNsaWVudERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpmb3JFYWNoT3V0cHV0
Q29uc3RyYWludFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJz
cGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6Om91dHB1dENvbnN0cmFp
bnRTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6c3Vi
c3BhY2VGb3JKU0RPTVdpbmRvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xp
ZW50RGF0YTo6c3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJzcGFjZUZvckpTUmVtb3Rl
RE9NV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpz
dWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9y
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpK
U1ZNQ2xpZW50RGF0YTo6c3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0ludGVyZmFjZU5hbWU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFwTGlrZTo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNN
YXBMaWtlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU01hcExpa2U6OnN1YnNwYWNlRm9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNSZWFkT25seU1hcExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5TWFwTGlrZTo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5U2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlTZXRMaWtlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NldExpa2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2V0TGlrZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNTZXRMaWtlOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rp
b25zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlv
bnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbFRyYWNlcjo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVQ6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RE9NSklUOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNl
cHRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9u
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEdsb2JhbE9iamVjdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1
YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0SXRlcmFibGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNl
Rm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpz
dWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE9iajo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJp
YWxpemF0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
ZXJpYWxpemF0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWw6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U3RyaW5naWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZzo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpzdWJzcGFjZUZvcik6CisKIDIwMjAtMDMtMDQgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gU1BJIHRvIGFs
bG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dlYlZp
ZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzdjYjFiZWU0OWM3ZTk1NWE3MTI0ZDFlMmQ2YWU5
Y2QxNTVjMDc5Yi4uN2ZhZDA3NDNiYTY3M2FlODE2Njk0NTE0YTM3ZjI2NzliY2YwNzE4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MzYsNiArMTYzNiw3IEBAIHNldChNQUtFX05BTUVTX0RF
UEVOREVOQ0lFUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtCiApCiBzZXQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wKQorc2V0KElTT19T
VUJTUEFDRVNfSEVBREVSX0ZJTEUgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0RPTUlz
b1N1YnNwYWNlcy5oKQogc2V0KFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbCkKIHNldChXT1JLRVJH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KERFRElDQVRFRFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCkBAIC0xODEx
LDggKzE4MTIsOSBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlQmluZGluZ3MKICAgICBHRU5F
UkFUT1IgSlMKICAgICBTVVBQTEVNRU5UQUxfREVQRklMRSAke1NVUFBMRU1FTlRBTF9ERVBFTkRF
TkNZX0ZJTEV9CiAgICAgUFBfRVhUUkFfT1VUUFVUCi0gICAgICAgICR7V0lORE9XX0NPTlNUUlVD
VE9SU19GSUxFfSAke1dPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RFRElD
QVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAke0lTT19T
VUJTUEFDRVNfSEVBREVSX0ZJTEV9ICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfSAke1dPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RFRElDQVRFRFdPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgIFBQX0VYVFJBX0FSR1MKKyAgICAgICAgLS1pc29T
dWJzcGFjZXNIZWFkZXJGaWxlICR7SVNPX1NVQlNQQUNFU19IRUFERVJfRklMRX0KICAgICAgICAg
LS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfQogICAg
ICAgICAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1dPUktFUkdMT0JBTFND
T1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgICAgICAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZSAke0RFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCA2MGExMTMxM2EwZDQwZGQ4YmVmMjRmZTcxZDc1MmMxNjEzNWQ3MmU0Li43
MGNmYWVhNzMxMTBkNGNjZjEzMTVlZjI4ZmEwMThlNzY0MzZiOWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOSw2ICs5LDcgQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3
b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xv
ckRhdGEuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUlzb1N1YnNwYWNlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNWJhMjZiODA4MmRlNjg5
MDFjMmUxMjY2MmY2NDc0YTg2NzA3MjQyMy4uNGQ5ZWRhZjFhNjZiNmRhZDk1NzE1MGFiYzY0OWQz
ZWVkMjFmNzY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzE4LDYgKzE3
MTgsNyBAQCBKU19CSU5ESU5HU19TQ1JJUFRTID0gJChDT01NT05fQklORElOR1NfU0NSSVBUUykg
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySgogCiBTVVBQTEVNRU5UQUxfREVQRU5ERU5D
WV9GSUxFID0gU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLnR4dAogU1VQUExFTUVOVEFMX01BS0VG
SUxFX0RFUFMgPSBTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCitJU09fU1VCU1BBQ0VTX0hF
QURFUl9GSUxFID0gRE9NSXNvU3Vic3BhY2VzLmgKIFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSA9
IERPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9S
U19GSUxFID0gV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBERURJQ0FURURXT1JL
RVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMTczOCw2ICsxNzM5LDcgQEAgZW5kZWYKIElETF9JTlRF
Uk1FRElBVEVfRklMRVMgPSBcCiAgICAgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykgXAog
ICAgICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgXAorICAgICQoSVNPX1NVQlNQQUNF
U19IRUFERVJfRklMRSkgXAogICAgICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAgICAg
JChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoREVESUNBVEVE
V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKQEAgLTE3NDksNyArMTc1MSw3
IEBAIElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMgPSAkKHN1YnN0IC4sJSwkKElETF9JTlRFUk1F
RElBVEVfRklMRVMpKQogCiAkKElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMpIDogJChQUkVQUk9D
RVNTX0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVSRV9E
RUZJTkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5HX0lE
TFMpLEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRV
UkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VB
R0VfSkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1l
bnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13aW5k
b3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9S
U19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERF
RElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVf
Q09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAk
KFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJV
Q1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJChTVVBQTEVNRU5UQUxfTUFL
RUZJTEVfREVQUykKKwkkKFBFUkwpICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9j
ZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQo
QURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1pZGxGaWxlc0xp
c3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExF
TUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS1pc29TdWJzcGFjZXNIZWFkZXJGaWxlICQoSVNPX1NV
QlNQQUNFU19IRUFERVJfRklMRSkgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NP
TlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNU
UlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUg
JChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlO
VFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtl
ZmlsZURlcHMgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKIAkkKERFTEVURSkgJChJRExf
RklMRVNfVE1QKQogCiBKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJUFRT
KSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoSURMX0lOVEVSTUVESUFURV9GSUxFUykgJChQTEFU
Rk9STV9GRUFUVVJFX0RFRklORVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmNwcAppbmRleCA4ZDAyNzY1MGYyYTFjZWVjODgwMTRhYzc2NTk0ZTNjMzhiMWQyMGQ3
Li4xMzk5Njc2NTNiYzk3MmI1MjBkNmZhODIyNGQ1YzAzYzM2NDVlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTQ0LDExICs0NCw2IEBAIEpT
RE9NT2JqZWN0OjpKU0RPTU9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSB8fCBnbG9iYWxPYmplY3QuY2xhc3NJbmZvKGdsb2JhbE9iamVjdC52bSgpKSA9PSBKU1JlbW90
ZURPTVdpbmRvdzo6aW5mbygpKTsKIH0KIAotSlNDOjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRwdXRD
b25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi17Ci0gICAgcmV0dXJuICZzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5vdXRwdXRDb25zdHJhaW50U3Bh
Y2UoKTsKLX0KLQogSlNDOjpKU1ZhbHVlIGNsb25lQWNyb3NzV29ybGRzKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTRE9NT2JqZWN0JiBvd25lciwgSlND
OjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChpc1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oCmluZGV4IGExNDE2MGZlMDEwNjIwM2IyZjRiYTkxNzMxZmI2ODc3ZjU0Y2E5YzQuLmI1MzEy
Mzg3NGUwYjY4Y2I5MTE5MDJmNTAxMmE4MWE2YTg0Y2ExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC02Niw4ICs2Niw2IEBAIGNsYXNzIEpTRE9NT2Jq
ZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFdFQkNPUkVfRVhQ
T1JUIEpTRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOwog
fTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRwdXRDb25zdHJh
aW50U3Vic3BhY2VGb3IoSlNDOjpWTSYpOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRh
dGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNET01PYmplY3QgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3QgQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggNzM3NjIyYTkwNmEz
ZWE3ODNkZGMwNGU2MmY3ZWQwYjY2YmVjMzA5Yi4uMmQ4MGFkNDZlODg2ZTE4ODdiNWQ4YzgyYWFj
MTA2ZjQzMGM4YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAKICNpbmNsdWRlICJET01HQ091dHB1dENvbnN0cmFpbnQuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgpAQCAtNzcsMTggKzc4LDcgQEAgSlNWTUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRh
KFZNJiB2bSkKICAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6
MHhmNzBjNGE4NQogICAgICwgbV9ydW50aW1lT2JqZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0KQogICAgICwgbV93aW5kb3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2luZG93UHJv
eHkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNET01XaW5kb3cgSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdpbmRvdy5nZXQoKSwgSlNET01XaW5kb3cpCi0g
ICAgLCBtX3N1YnNwYWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuZ2V0KCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNw
YWNlRm9ySlNSZW1vdGVET01XaW5kb3cgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFw
Q2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdy5nZXQoKSwgSlNSZW1vdGVET01XaW5kb3cpCi0g
ICAgLCBtX3N1YnNwYWNlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTV29y
a2VyR2xvYmFsU2NvcGUpCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICwgbV9zdWJz
cGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuZ2V0KCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNw
YWNlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9o
ZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZS5nZXQoKSwgSlNXb3JrbGV0R2xvYmFs
U2NvcGUpCi0jZW5kaWYKLSAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdy
YXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhh
c2g6MHg3NzI0YzJlNAorICAgICwgbV9zdWJzcGFjZXMobWFrZVVuaXF1ZTxET01Jc29TdWJzcGFj
ZXM+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaAppbmRleCAzZWQyMWU0MzBiYjBlOTlkZWM5OTMxMGI4MDA0MzI1MmRhNzkz
ODg5Li5kNGU5MmY2M2U4OGRmNjk5Zjk0YjI3ZTUxYjY1MmFjMzg0NTEzODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yOSw2
ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NSXNvU3Vic3BhY2Vz
OworCiBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1ZNQ2xpZW50RGF0YSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBWTVdvcmxkSXRlcmF0b3I7CkBAIC02NywzNyAr
NjksMTcgQEAgY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0
YSB7CiAgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVudGltZU9iamVjdFNwYWNlKCkgeyByZXR1cm4g
bV9ydW50aW1lT2JqZWN0U3BhY2U7IH0KICAgICBKU0M6Oklzb1N1YnNwYWNlJiB3aW5kb3dQcm94
eVNwYWNlKCkgeyByZXR1cm4gbV93aW5kb3dQcm94eVNwYWNlOyB9CiAgICAgCi0gICAgSlNDOjpD
b21wbGV0ZVN1YnNwYWNlJiBvdXRwdXRDb25zdHJhaW50U3BhY2UoKSB7IHJldHVybiBtX291dHB1
dENvbnN0cmFpbnRTcGFjZTsgfQorICAgIFZlY3RvcjxKU0M6Oklzb1N1YnNwYWNlKj4gb3V0cHV0
Q29uc3RyYWludFNwYWNlcygpIHsgcmV0dXJuIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlczsgfQog
Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3BhY2VGb3JKU0RPTVdpbmRvdygpIHsgcmV0dXJu
IG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdzsgfQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNw
YWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VG
b3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOyB9Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYg
c3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdygpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1Jl
bW90ZURPTVdpbmRvdzsgfQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNXb3Jr
ZXJHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1dvcmtlckdsb2JhbFNjb3Bl
OyB9Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1
YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSB7IHJldHVybiBtX3N1YnNwYWNl
Rm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7IH0KLSNlbmRpZgotI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlOyB9Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3BhY2VGb3JKU1dvcmtsZXRH
bG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsg
fQotI2VuZGlmCi0gICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZv
ckVhY2hPdXRwdXRDb25zdHJhaW50U3BhY2UoY29uc3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAg
ICAgIGZ1bmMobV9vdXRwdXRDb25zdHJhaW50U3BhY2UpOwotICAgICAgICBmdW5jKG1fc3Vic3Bh
Y2VGb3JKU0RPTVdpbmRvdyk7Ci0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU1JlbW90ZURP
TVdpbmRvdyk7Ci0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUp
OwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9y
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlO
VElOR19BUEkpCi0gICAgICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSk7
Ci0jZW5kaWYKKyAgICAgICAgZm9yIChhdXRvKiBzcGFjZSA6IG1fb3V0cHV0Q29uc3RyYWludFNw
YWNlcykKKyAgICAgICAgICAgIGZ1bmMoKnNwYWNlKTsKICAgICB9CiAKKyAgICBET01Jc29TdWJz
cGFjZXMmIHN1YnNwYWNlcygpIHsgcmV0dXJuICptX3N1YnNwYWNlcy5nZXQoKTsgfQorCiBwcml2
YXRlOgogICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldvcmxkKj4gbV93b3JsZFNldDsKICAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX25vcm1hbFdvcmxkOwpAQCAtMTA4LDcgKzkwLDcgQEAgY2xh
c3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fcnVudGltZU9iamVj
dEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1f
d2luZG93UHJveHlIZWFwQ2VsbFR5cGU7Ci0KK3B1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3c7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxU
eXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3RlRE9NV2luZG93OwpAQCAtMTIwLDcgKzEwMiw3
IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6Vk06OkNsaWVudERhdGEgewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBD
ZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgot
Citwcml2YXRlOgogICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9kb21CdWlsdGluQ29uc3RydWN0b3JT
cGFjZTsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fZG9tQ29uc3RydWN0b3JTcGFjZTsKICAgICBK
U0M6Oklzb1N1YnNwYWNlIG1fZG9tV2luZG93UHJvcGVydGllc1NwYWNlOwpAQCAtMTI4LDIwICsx
MTAsOCBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRh
IHsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGltZU1ldGhvZFNwYWNlOwogICAgIEpTQzo6
SXNvU3Vic3BhY2UgbV9ydW50aW1lT2JqZWN0U3BhY2U7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBt
X3dpbmRvd1Byb3h5U3BhY2U7Ci0KLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JK
U0RPTVdpbmRvdzsKLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOwotICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpT
UmVtb3RlRE9NV2luZG93OwotICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTV29y
a2VyR2xvYmFsU2NvcGU7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEpTQzo6SXNv
U3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotI2VuZGlm
Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgSlNDOjpJc29TdWJzcGFjZSBtX3N1
YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKLSAgICBKU0M6Oklzb1N1YnNwYWNl
IG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsKLSNlbmRpZgotICAgIAotICAgIEpT
Qzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RE9NSXNvU3Vic3BhY2VzPiBtX3N1YnNwYWNlczsKKyAgICBWZWN0b3I8SlNDOjpJ
c29TdWJzcGFjZSo+IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggYjdjZDFmY2E0Mzk5Y2U4OTk2YWFhNmVjYTc5NTA3MzZjMDUz
MjM5ZS4uMGFhOGZkM2M4Y2MyMjVkYWExYzU5ZTE1MDVmZmFkMzdjOTkyMjRhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTI3OTUsMTIgKzI3OTUsMTMgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAjIEZJWE1FOiBXZSBwdXQgdGhpcyB1bmNvbmRpdGlvbmFsbHkgdG8gcHV0IGFsbCB0
aGUgV2ViQ29yZSBKUyB3cmFwcGVycyBpbiBlYWNoIElzb1N1YnNwYWNlLgotICAgICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTEwNwotICAgIGlmIChJc0RPTUds
b2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7IH1cbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pO1xuIik7Ci0g
ICAgfQorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4i
KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KVxuIik7CisgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBudWxscHRyO1xuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7XG4iKTsK
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOworICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7XG4iKTsKIAogICAgICMgdmlzaXQgZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzVmlz
aXRDaGlsZHJlbikgewpAQCAtMjgyMSw5ICsyODIyLDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgICAgICAjIHByb2dyYW0gcmVzdW1lZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvIHZpc2l0
Q2hpbGRyZW4gb3IgdmlzaXRPdXRwdXRDb25zdHJhaW50cy4gU2luY2UKICAgICAgICAgICAgICMg
dGhpcyBqdXN0IGNhbGxzIHZpc2l0QWRkaXRpb25hbENoaWxkcmVuLCB5b3UgdXN1YWxseSBkb24n
dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMuCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpO1xuIik7Ci0gICAgICAgICAgICBpZiAoIUlzRE9NR2xvYmFsT2JqZWN0
KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6Q29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0dXJuIG91dHB1dENv
bnN0cmFpbnRTdWJzcGFjZUZvcih2bSk7IH1cbiIpOwotICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCkBAIC00NjYyLDEzICs0NjYwLDMzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgR2VuZXJhdGVJdGVyYWJsZURlZmluaXRpb24oJGludGVyZmFjZSkgaWYgJGludGVy
ZmFjZS0+aXRlcmFibGU7CiAgICAgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbigkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKSBpZiAkaW50ZXJmYWNlLT5zZXJpYWxpemFibGU7CiAKKyAgICBBZGRU
b0ltcGxJbmNsdWRlcygiRE9NSXNvU3Vic3BhY2VzLmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRl
cygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPiIpOworICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Iik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6Oklzb1N1YnNwYWNlKiAke2NsYXNzTmFtZX06OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpO1xuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VOYW1lfS5nZXQoKSlcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gc3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01H
bG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldl
YkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6
SXNvU3Vic3BhY2UqICR7Y2xhc3NOYW1lfTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKVxu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+c3Vic3BhY2VGb3Ike2NsYXNzTmFtZX0oKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVh
cENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ZWxzZVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNz
TmFtZX0pO1xuIik7CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9LmdldCgpO1xuIik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJs
ZS1jb2RlXCIpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIklHTk9SRV9XQVJOSU5HU19C
RUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJlXCIpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoJiR7Y2xhc3NOYW1lfTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlND
OjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0VO
RFxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVfV0FSTklOR1NfRU5EXG4iKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gc3BhY2U7XG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICBpZiAoJG5lZWRzVmlzaXRDaGlsZHJlbikg
ewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXgg
YTE0NGE1MWI4OTEwYzk4YTY5MjgzNTc5M2EyMmU1OWY0NDY2MGYzOC4uNDg1MmM1MzU2M2RmOThj
ZGU5MmQwMGZhZDNjZjFjNDRmNmUwNjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTMzLDYgKzMzLDcgQEAKIG15ICRp
ZGxGaWxlc0xpc3Q7CiBteSAkdGVzdEdsb2JhbENvbnRleHROYW1lOwogbXkgJHN1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlOworbXkgJGlzb1N1YnNwYWNlc0hlYWRlckZpbGU7CiBteSAkd2luZG93
Q29uc3RydWN0b3JzRmlsZTsKIG15ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU7
CiBteSAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwpAQCAtNDcs
NiArNDgsNyBAQAogICAgICAgICAgICAnaWRsRmlsZXNMaXN0PXMnID0+IFwkaWRsRmlsZXNMaXN0
LAogICAgICAgICAgICAndGVzdEdsb2JhbENvbnRleHROYW1lPXMnID0+IFwkdGVzdEdsb2JhbENv
bnRleHROYW1lLAogICAgICAgICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4g
XCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSwKKyAgICAgICAgICAgJ2lzb1N1YnNwYWNlc0hl
YWRlckZpbGU9cycgPT4gXCRpc29TdWJzcGFjZXNIZWFkZXJGaWxlLAogICAgICAgICAgICAnd2lu
ZG93Q29uc3RydWN0b3JzRmlsZT1zJyA9PiBcJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUsCiAgICAg
ICAgICAgICd3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCR3b3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUsCiAgICAgICAgICAgICdkZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUsCkBAIC02OCw2ICs3MCw3IEBACiBkaWUoJ011c3Qgc3BlY2lm
eSB0aGUgZmlsZSBsaXN0aW5nIGFsbCBJRExzIHVzaW5nIC0taWRsRmlsZXNMaXN0LicpIHVubGVz
cyBkZWZpbmVkKCRpZGxGaWxlc0xpc3QpOwogCiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUg
PSBDeWd3aW5QYXRoSWZOZWVkZWQoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKTsKKyRpc29T
dWJzcGFjZXNIZWFkZXJGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRpc29TdWJzcGFjZXNIZWFk
ZXJGaWxlKTsKICR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3
aW5kb3dDb25zdHJ1Y3RvcnNGaWxlKTsKICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgPSBDeWd3aW5QYXRoSWZOZWVkZWQoJHdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZSk7CiAkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2lu
UGF0aElmTmVlZGVkKCRkZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUp
OwpAQCAtOTMsNiArOTYsMjEgQEAKIG15ICRwYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0NvZGUgPSAiIjsKIG15ICR0ZXN0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7
CiAKK215ICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlID0gPDxFTkQ7CisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NSXNvU3Vic3BhY2VzIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShET01Jc29TdWJzcGFjZXMpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKERPTUlzb1N1YnNwYWNlcyk7CitwdWJsaWM6CisgICAgRE9NSXNvU3Vic3BhY2Vz
KCkgPSBkZWZhdWx0OworRU5ECisKICMgR2V0IHJpZCBvZiBkdXBsaWNhdGVzIGluIGlkbEZpbGVz
IGFycmF5LgogbXkgJWlkbEZpbGVIYXNoID0gbWFwIHsgJF8sIDEgfSBAaWRsRmlsZXM7CiAKQEAg
LTEzNCw2ICsxNTIsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICghaXNDYWxsYmFj
a0ludGVyZmFjZUZyb21JREwoJGlkbEZpbGVDb250ZW50cykpIHsKKyAgICAgICAgJGlzb1N1YnNw
YWNlc0hlYWRlckNvZGUgLj0gIiAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpJc29TdWJzcGFjZT4g
bV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX07XG4iCisgICAgfQorCiAgICAgIyBGb3IgZXZl
cnkgaW50ZXJmYWNlIHRoYXQgaXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVDTUFTY3JpcHQgZ2xvYmFs
IGVudmlyb25tZW50IGFuZDoKICAgICAjIC0gaXMgYSBjYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBo
YXMgY29uc3RhbnRzIGRlY2xhcmVkIG9uIGl0LCBvcgogICAgICMgLSBpcyBhIG5vbi1jYWxsYmFj
ayBpbnRlcmZhY2UgdGhhdCBpcyBub3QgZGVjbGFyZWQgd2l0aCB0aGUgW05vSW50ZXJmYWNlT2Jq
ZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUsIGEgY29ycmVzcG9uZGluZwpAQCAtMTg5LDYgKzIxMSwx
MiBAQAogICAgIGRlbGV0ZSAkc3VwcGxlbWVudGFsc3skaWRsRmlsZX07CiB9CiAKK2lmICgkaXNv
U3Vic3BhY2VzSGVhZGVyRmlsZSkgeworICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICJ9
O1xuIjsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSAuPSAifSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZVxuIjsKKyAgICBXcml0ZUZpbGVJZkNoYW5nZWQoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUs
ICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlKTsKK30KKwogIyBPdXRwdXRzIHRoZSBkZXBlbmRlbmN5
LgogIyBUaGUgZm9ybWF0IG9mIGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgZmlsZToKICMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVy
ZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
SW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggZmMzOWIyMjVlYjZhODllNzdjZjQ1NmNmZGQ4YzVjY2I1
YzAzMjVhNi4uMWU4ODhhMzA5YzRhMTFlMThjMjI3MTY1MThhMDgwZTkzZTJjMTYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNl
TmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
SW50ZXJmYWNlTmFtZS5jcHAKQEAgLTIyLDE0ICsyMiwxOCBAQAogI2luY2x1ZGUgIkpTSW50ZXJm
YWNlTmFtZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTYxLDYgKzE2NSwyNCBA
QCBib29sIHNldEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNJbnRlcmZhY2VOYW1lOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JJbnRlcmZhY2VOYW1lLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU0ludGVyZmFjZU5hbWU+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvcklu
dGVyZmFjZU5hbWUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTSW50ZXJm
YWNlTmFtZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckludGVyZmFj
ZU5hbWUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0ludGVyZmFjZU5hbWUpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JJbnRlcmZhY2VOYW1lLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZK
U0ludGVyZmFjZU5hbWU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwogdm9pZCBKU0ludGVyZmFjZU5hbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTSW50ZXJmYWNlTmFtZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCmluZGV4IDUw
NjkxM2RhM2ZmNDY5ZjMxMzgwMjkyYWY4MTI0MzJmMmFkYjQ3MDEuLjFmM2QxN2Y1ZjZmYjJlYzhj
ZDJjZmUxZWQ2M2I5NzI2MjMzMmVkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgKQEAgLTUwLDYgKzUw
LDEzIEBAIGNsYXNzIEpTSW50ZXJmYWNlTmFtZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8SW50ZXJm
YWNlTmFtZT4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZp
c2l0b3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU01hcExpa2UuY3BwCmluZGV4IDlmODBhZTFkNWJiZTEyMzhlZDZhY2Y4MzM0MWM0
NGE1MTZhMDI4YTkuLjVkZDZkNjU5NzU0NDU5ZWEyMzljMzdiZTc1YjYzNTJkMGViMmU2YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExp
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01h
cExpa2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNNYXBMaWtlLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMiwxMCAr
MzMsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWls
dGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM1NCw2
ICszNTgsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkRlbGV0ZShKU0dsb2JhbE9iamVjdCogbGUKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGVCb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImRlbGV0ZSIpOwogfQogCitKU0M6
Oklzb1N1YnNwYWNlKiBKU01hcExpa2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sK
KyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsK
KyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvck1hcExpa2UuZ2V0KCkp
CisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTTWFwTGlrZT4pCisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yTWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNNYXBMaWtlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yTWFw
TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTTWFwTGlrZSk7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvck1hcExpa2UuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTTWFwTGlrZTo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTTWFwTGlrZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNYXBMaWtlKj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNN
YXBMaWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBM
aWtlLmgKaW5kZXggOGVlZWMzZDFiMmRiMzAwMjc3NTU4MDZiN2IwNThmZDQ1ZjBjMGNiMC4uNDlh
MDBhM2Y4MDU4OTkxZGQxMGVlMTFhODljNzgyOTFiOThmMDE4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuaApAQCAtNDksNiAr
NDksMTMgQEAgY2xhc3MgSlNNYXBMaWtlIDogcHVibGljIEpTRE9NV3JhcHBlcjxNYXBMaWtlPiB7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNNYXBMaWtlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8TWFwTGlrZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAppbmRleCBkOTQz
MTY3NzhkYzIyYzEzZTI0NGRiNTViY2MwMzJlM2M4M2U3MmZhLi43OTY4ZTlkYmI1YjQ5MjAzZjc4
NDA4YjQ5NGI3M2ZlM2VmMmJkM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1JlYWRPbmx5TWFwTGlrZS5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzIsMTAgKzMzLDEzIEBA
CiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yOTgsNiArMzAyLDI0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2goSlNHbG9iYWxPCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Jl
YWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZv
ckVhY2hCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImZvckVhY2giKTsK
IH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNSZWFkT25seU1hcExpa2U6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclJlYWRPbmx5TWFwTGlrZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNSZWFkT25seU1hcExpa2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5
TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNSZWFkT25seU1h
cExpa2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JSZWFkT25seU1h
cExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1JlYWRPbmx5TWFwTGlrZSk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlrZS5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHBy
ICgmSlNSZWFkT25seU1hcExpa2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlND
ZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENv
bnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1JlYWRPbmx5TWFwTGlrZTo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNSZWFkT25seU1hcExpa2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBM
aWtlLmgKaW5kZXggMjY0MDc5MmVjMDBhMmRmM2U4MTA1MjE0NTg5N2I3NDA4NjY0MDIxYS4uMjJk
MzBiZTY5NzVmMjJmYWM3ODgzNjFkNTkzMTBkOGE3ZDY2ODllYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBM
aWtlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTUmVhZE9ubHlNYXBMaWtlIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxSZWFkT25seU1hcExpa2U+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1JlYWRPbmx5
TWFwTGlrZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFJlYWRPbmx5
TWFwTGlrZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcAppbmRleCA0NWMyZGRkYzViMWE2
MjBkMDgyNWU2OTJlOTQxZDU1N2JmOGMzMTIxLi5iZWRiMDQ2MjdmNDFkNjhhNDUzMzA2YWMxOTkx
ZjM0NDg2NTJkM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1JlYWRPbmx5U2V0TGlrZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01B
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzIsMTAgKzMzLDEzIEBACiAjaW5jbHVk
ZSAiSlNET01TZXRMaWtlLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjc5LDYgKzI4MywyNCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoKEpTR2xvYmFsTwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seVNldExp
a2U+OjpjYWxsPGpzUmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJmb3JFYWNoIik7CiB9CiAKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTUmVhZE9ubHlTZXRMaWtlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JSZWFkT25s
eVNldExpa2UuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTUmVhZE9ubHlT
ZXRMaWtlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JSZWFkT25seVNldExpa2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUmVhZE9ubHlTZXRMaWtlKTsKKyAg
ICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlTZXRMaWtlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNSZWFkT25seVNldExpa2UpOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JSZWFkT25seVNldExpa2UuZ2V0KCk7CitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTUmVhZE9u
bHlTZXRMaWtlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKIHZvaWQgSlNSZWFkT25seVNldExpa2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2Vs
bCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTUmVhZE9ubHlTZXRMaWtlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5oCmluZGV4
IGQzMTFiZTQwYjA3Yzc4NDQzZTg2ZWIxNzUzYmVlMzEwNTE3Nzc1YWIuLjdmNTA3NzljOGM1YzVl
ODcwOThhOTNkZTk5ZTgwNDZjMTU3YzQyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5oCkBAIC00
OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1JlYWRPbmx5U2V0TGlrZSA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXI8UmVhZE9ubHlTZXRMaWtlPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNSZWFkT25seVNldExpa2UoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxSZWFkT25seVNldExpa2U+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
ZXRMaWtlLmNwcAppbmRleCBkYTI0YTViMDM1OWU2OTc1ZTMzYmEyOWVmYzc0N2RjMDU0NzJkMjg2
Li5kZmQwYjcyOGU1MWY4MTQyNmVjZGU2Y2FjYjcyZGRjN2JkZjNiMzNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTU2V0TGlrZS5oIgogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAi
SlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzIsMTAgKzMzLDEzIEBACiAj
aW5jbHVkZSAiSlNET01TZXRMaWtlLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzMzLDYgKzMzNywyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzU2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVs
ZXRlKEpTR2xvYmFsT2JqZWN0KiBsZQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNTZXRMaWtl
Pjo6Y2FsbDxqc1NldExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZGVsZXRlIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTU2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yU2V0TGlrZS5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNTZXRMaWtlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1NldExpa2Up
OworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXRMaWtlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNTZXRMaWtlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yU2V0TGlrZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNTZXRMaWtlOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNTZXRMaWtlOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldExpa2UqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuaAppbmRleCAw
YjJmZjQ1ODJjODhhNzczOTk0M2NmNGVlOGQwZDg4NGM0ZjViNjQwLi5hMWExNTUzNjZmZjgwYjNk
YzA1NTBkMWFiOTZlY2NiMzhlMjVhYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFz
cyBKU1NldExpa2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFNldExpa2U+IHsKICAgICB9CiAKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VB
Y2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQg
YW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAg
ICBKU1NldExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxTZXRM
aWtlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMTI0Mzc5NjJj
MmRiNDI2ODhmYzAyMmNlMDA0ZWJiNDhiMTFiYmNiYS4uMDRkYjY3MWUxNWJiMWVjODc5MzExYTU2
MWMxN2RlNDYzODBkYjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2Vz
LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgpAQCAtMzUsOSArMzYsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMTAsNiAr
MzE0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0CiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxsPGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvdmVybG9hZGVkTWV0aG9kIik7CiB9CiAKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1
YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEFjdGl2ZURPTU9iamVjdC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0QWN0
aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RB
Y3RpdmVET01PYmplY3QpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0QWN0aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEFjdGl2
ZURPTU9iamVjdC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYg
YW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCAxZjU2
NjE0N2RkOGRjOTczNjhiMmNlOTM4NjU0ZTY1NmEyZmIzNGMzLi4yZmM5ZjA2ODlhNDdiN2JjMTMx
ZWVhMDNjODg1NjM1NTJkZmU1ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCkBA
IC01MCw2ICs1MCwxMyBAQCBjbGFzcyBKU1Rlc3RBY3RpdmVET01PYmplY3QgOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFRlc3RBY3RpdmVET01PYmplY3Q+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
Okhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IGRjNjEwZjcwYTQ3MDg1M2QxNjllN2Y3
ZDBhMzUxM2Y2OWUzYWQ1YTQuLjFiM2FkZmFlOTdhN2QxNjU0YzFjMDk0NDc5NTkzZmEyZjJjZmMw
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgpAQCAtMzUsOSArMzYsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDQyLDYgKzQ0NiwyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ0VSZWFjdAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q0VS
ZWFjdGlvbnM+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWRCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9uc05vdE5lZWRlZCIpOwogfQogCitKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RDRVJlYWN0aW9uczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rp
b25zLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9u
cz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RDRVJlYWN0
aW9uczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RDRVJlYWN0aW9ucyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaAppbmRleCA5ODkz
YTEyNWI4YjAwMTkxYjAzMjk3ODUzYmYzM2ExN2E5ZTA4NGZmLi40ZjY3YTcwYzkwZjU1YTQ1ZDI3
NmNhYjAwYmU2NGM3OWRlODgxZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaApAQCAtNDksNiAr
NDksMTMgQEAgY2xhc3MgSlNUZXN0Q0VSZWFjdGlvbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRl
c3RDRVJlYWN0aW9ucz4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdENFUmVhY3Rpb25zKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENFUmVhY3Rpb25zPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCAxM2Q2OTBh
OTM0OGRjMzFiOTE5NDQwM2Q4YTJkMzlkMjNlYzEwNTQyLi5kYzUyNjM5N2Q5MjBlMTQ5NmJlNTU5
NjU0YjM0YjcwNzI2MmRhYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgorI2luY2x1ZGUg
IkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGUuaCIKQEAgLTMxLDkgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNjYsNiArMjcwLDI0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1
bmN0aW9uVG9TdHJpCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVu
Y3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9T
dHJpbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCkp
CisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaAppbmRleCBlMDYwNWM5
MDdjOWVkYTUyNmQ2NjJmNzA1ZTdiNDVmY2EzNDk4NjIzLi44M2MyMmNhYzJmZDFmZTU2ZTdlZDZk
MzkyYmMyYWVkMzBjMTdlODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmCiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0
ZWQ6CiAgICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcihKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA5OTU1ODRmNTliODQ3ZTg2YTkwM2RmMjExODE2ODY5
N2I5MzgxN2JjLi5kYzhlMWYyNTEyZTY1NDczNDRhYjY5YWVhMTI2ZDhhNDVkZDRhYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDYWxsVHJhY2VyLmgiCisjaW5jbHVkZSAiRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5o
IgpAQCAtMzgsOSArMzksMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC01MDYsNiArNTEwLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhECiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxs
VHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJn
dW1lbnRCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RPcGVyYXRp
b25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RDYWxsVHJhY2VyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0
byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYg
KGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRyYWNlcj4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIpOworICAgIGVsc2UKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdENhbGxUcmFjZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q2FsbFRyYWNlci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0Q2FsbFRyYWNlcjo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJ
R05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdENh
bGxUcmFjZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdENhbGxUcmFjZXIqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsVHJhY2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oCmluZGV4IDkyYzZlZTg4MTg3OTJiZmI3ODgzOWRkZDc3
MmJhMDM1OTM5YmNmMDUuLmE3NzJiZjM5ZmM2NDc2OTczNjhjNWEzNTEwNzljNzQ1ZTQ3YWQ2ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsVHJhY2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0Q2Fs
bFRyYWNlciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENhbGxUcmFjZXI+IHsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoK
ICAgICBKU1Rlc3RDYWxsVHJhY2VyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdENhbGxUcmFjZXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNjZmMjA4ZGEzOTUzZGVmNzYwZWIx
ZTVlYjkwNmRjMTYyMThkMGJjNS4uOTcyNGQ2ODIwNjM5ODQ0ZDZlMTRjZjRlOWYxZjhiNzNkZmM3
OGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCkBAIC0yMiwxNSArMjIsMTkgQEAKICNpbmNsdWRlICJKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01CdWlsdGluQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJz
cGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xNjcsNiArMTcx
LDI0IEBAIGJvb2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAg
IGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAm
SlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEu
b3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCAyNzAzNWU3Yjk4YjNlMjIwMDBiYzEx
M2UwMzdhNGFjNzMzZDk3ZWM0Li5jYzY2MDQ5NWI2NmM0NzJiMDhhYjgyMTE3YmQxOTdiMTg5NTg1
ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDbGFzc1dpdGhKU0IKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3Rl
ZDoKICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IDZmM2UzNGVjOTE0ZDgzM2RlNmQ4YzBlMTQ0
OWE1YTNkMDk5ZGVkZDEuLmFkMWVmNGMyZjQ2MDdlYTdhYjZjZTRjNWE1MWY0Y2YzNjFiYTFhZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0RE9N
SklULmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAj
aW5jbHVkZSAiRE9NSklUSURMQ29udmVydC5oIgogI2luY2x1ZGUgIkRPTUpJVElETFR5cGUuaCIK
QEAgLTQyLDkgKzQzLDEyIEBACiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVU
cmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtMTI4NSw2ICsxMjg5LDI0IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVudHNC
eU5hbWUoV1RGTW92ZShlbGVtZW50TmFtZSkpKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdERPTUpJVDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVC5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RE9NSklUPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RET01KSVQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
RE9NSklUID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RE9NSklUKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERPTUpJVC5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0
RE9NSklUOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2Vz
KCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7
Cit9CisKIHZvaWQgSlNUZXN0RE9NSklUOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBB
bmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RET01KSVQqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAppbmRleCA5YTVkMDVkNjZlMTU1MGVhNWM5NGEw
Zjg5MDBiNmRmNzdiODE5YzBjLi5jYmYzM2MyY2EwZjFjODhlZGZhYWQ0MTM1YWJkZWFlZTZhZjVl
MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RET01KSVQg
OiBwdWJsaWMgSlNOb2RlIHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0RE9NSklUJiB3cmFwcGVkKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXggZTYzMzIzOWRhZWZjZWYwNDA5
YzhiNDYzYjg3MGY2NmI4MTA1ZDc1ZS4uOTc3NmI5ZjkxOTE3NjNmMGFhYWQzNGMyNzJhOWU1Yzdm
MDA2N2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEVuYWJsZWRCeVNldHRpbmcuaCIKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKQEAgLTM2LDYgKzM3LDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTMxMSw2ICszMTQsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXQK
IAogI2VuZGlmCiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgZWxzZQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KGNlbGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRC
eVNldHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmgKaW5kZXggOTBmODYwN2FkMmQyMmI3YWI1OWVkM2MyMjI3YmQx
ZGVjZTE1MzUyYi4uYzQ3NjIxOTkwZGIzMDk4Yjk4MzNlYmJiNWMxNmVkOWEyMmIxYTgxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRCeVNldHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5
U2V0dGluZz4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCmluZGV4IGFlOGViOTFkZjhh
ZmYxM2M1MzU5NDVhZmY3ZDhkMTFmMDg3NWM2NTguLjI2OGMzYTgxNzhlYjUyNTg4YTU3ZDg0MzVm
Y2JkY2E3ODI1YTA1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmgiCiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zNSw2ICszNiw4IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMDAsNiArMjAzLDI0IEBAIGJvb2wgc2V0SlNUZXN0
RW5hYmxlZEZvckNvbnRleHRUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dD46OnNldDxzZXRKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFRlc3RTdWJPYmpFbmFibGVkRm9yQ29u
dGV4dENvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHQiKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkRm9yQ29udGV4dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFbmFibGVkRm9yQ29udGV4dC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBj
ZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0LmgKaW5kZXggYzA1ZmM3YmU0ZmQ0ZjUxOGM0MTczNmQ2ZTZmNzk1ZjJhMzU3
ZDlkZi4uNWY4ZTk0NjExMmM2NzIzZWQ5ZDc2MWQ1YTJkM2RkNzU3YzU2ZDM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRG
b3JDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVz
dEVuYWJsZWRGb3JDb250ZXh0IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEZvckNv
bnRleHQ+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmNmYzA0NWFjNjA0OTQ2
ODQ0MjBmMTE5MjFhNjI2MzM5MTk2MzEzZC4uOGNkNTI5NTk0YzMzNDIxODRhNjczODgwZWUzM2Q4
NGE3YmY2NDYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgpAQCAtMzEsOCArMzIsMTEgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTMxNCw2ICszMTgsMjQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHIzKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogCiAjZW5kaWYK
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RFdmVudENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuaAppbmRleCA1ZTBiZWRkMmQzMTkwMzQwZWJjMjMyZmNjYzMwZjQ0Yjk4OTczZDlj
Li45YjEzZTZjNWE0ZDI1Njg1ODU4ZDhkN2E3N2JjMGJkNzQ0ZmQ5ZWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IgOiBwdWJsaWMgSlNFdmVudCB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJy
ZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNw
YWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpT
Q2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0b3ImIHdy
YXBwZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGM0Y2Vk
NTA5MDA2NGUzNjZlMzUyM2U5NjM2ZGFjNDQ4YTM3ZmU4MDYuLmI1M2NmMzUyNTc2M2RhMjcyZDNj
ZTczY2ZhM2E3ZmQ3NTA5OGI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMyw5ICsz
NCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2Rl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTI1Niw2ICsyNjAsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2JhbE9iamUKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6Y2FsbDxqc1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZUZ1bmN0aW9uSXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
aXRlbSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudFRhcmdldDo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RFdmVudFRhcmdldCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0Lmdl
dCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBj
b25zdGV4cHIgKCZKU1Rlc3RFdmVudFRhcmdldDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAm
SlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEu
b3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjphbmFs
eXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuaAppbmRleCA5NTFlNDZkZTY0YWIwMjVhYWYxZmYwOGQyYWQzYzM5ZTBhNGIz
N2NhLi4xZmFmYjQ2MDk5YjE1ZDQ2MmZlMzk4NTc0YjMwZmNmODY1ZDFlZDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuaApAQCAtNTMsNiArNTMsMTMgQEAgY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXQg
OiBwdWJsaWMgSlNFdmVudFRhcmdldCB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdEV2ZW50VGFyZ2V0JiB3cmFwcGVkKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IGFjNzQxMTJlZWQ0MTdiNjU1MjRj
MjJhNTY2NzQxYTc5NDY0ZjE1YTkuLmRmMmM5NjgxNmM3NzEzNWUxNDRlMTlhOGQ3ZTk0ODBlOTE1
NjNmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk
ZSAiSlNUZXN0RXhjZXB0aW9uLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xODQsNiArMTg4LDI0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RFeGNlcHRpb24+OjpnZXQ8anNUZXN0RXhjZXB0aW9uTmFtZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm5h
bWUiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RXhjZXB0aW9uOjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNl
cHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV4Y2VwdGlv
bik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFeGNlcHRpb24pOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RF
eGNlcHRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFj
ZTsKK30KKwogdm9pZCBKU1Rlc3RFeGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEV4Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCmluZGV4IDljMjZkYWFk
MTE2YzRmYjQ4ZDUwYmY1NjFiMmJjNDgwOTE2MDM2MjIuLjYzMTYyZDkwMmI5NTNiMTAxZDE4ZTA3
MmIxYjgyZTIyM2E5Y2IzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKQEAgLTUwLDYgKzUwLDEzIEBA
IGNsYXNzIEpTVGVzdEV4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEV4Y2VwdGlv
bj4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHJvdGVjdGVkOgogICAgIEpTVGVzdEV4Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RFeGNlcHRpb24+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IGVmNjYwMzM0ZTMxODFiNjdkZTUyNGIzZDM1ZGYx
NjU2NGY2NTZhZjUuLjU0OTllMDg2MzVmODZmNzNhYWUyMzQ4MzgwOTM0Zjk0NzlmZjVkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0xOTQsNiArMTk4LDI0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVBU2VjcmV0QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsCiAgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPjo6Z2V0PGpzVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGVBU2VjcmV0QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYVNlY3Jl
dEF0dHJpYnV0ZSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4p
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5oCmluZGV4IDgwYmQxODI4MzJhYmZkZDQ1ZTI3ODlmYzhjYjBlM2FjNTk1MGNiM2Mu
LjNhZWU0ZjM4M2NjZDRmMzU3Nzg5MThjMjBjMTkyYWYzMDMzMGZkMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHBy
IChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAg
ICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5h
bHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCA2NjYzM2IyNjkxYzY0OGFk
YTZiZTFiYmZjMzZkMmEzNTAyMjExZjI4Li45YjIzNTJkYTRjNGQ4MmJjZWY3MjM3NzUwODFjZWZm
YTlhOTU4MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMjIsNiArMjIsNyBA
QAogI2luY2x1ZGUgIkpTVGVzdEdsb2JhbE9iamVjdC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRE9NV3Jh
cHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKQEAgLTEwMCw2ICsxMDEsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5
emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgpAQCAtMjc3OSw3ICsyNzgyLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2Vj
CiAKIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+c3Vic3BhY2VGb3JKU1Rlc3RHbG9iYWxPYmplY3QoKTsKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0
KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RH
bG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0Lmdl
dCgpLCBKU1Rlc3RHbG9iYWxPYmplY3QpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RHbG9iYWxPYmplY3Q6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBl
bmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKIH0KIAog
dm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAppbmRleCA1OGY3MzY4NDcy
ZTliNDU3OWMwZDE1MTRmNDFkMWJkNDE3MzU3MmJlLi5lMmZhYTAzYWJiNDI4NDYyNGQxNTg2ZjFi
OTg0OTQzOWU5NTQzY2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oCkBAIC00OSw3ICs0OSwx
MiBAQCBjbGFzcyBKU1Rlc3RHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RH
bG9iYWxPYmplY3Q+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkgeyByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggZDVhOWZhYjllMGI2N2YxNTYwNzlm
MDg4NzFiZGFkZTA1ZTFhMjNlYi4uYTc4YzNlNTVmMmY5YTQwZjViODM5NmE2YWViN2MzNmRmYmNk
MjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcApAQCAtMjIsMTYgKzIyLDIwIEBACiAjaW5jbHVkZSAiSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMjUzLDYgKzI1NywyNCBAQCBib29sIHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFj
ZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4o
InVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjphbmFs
eXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApp
bmRleCAxYTAyM2M3ZjE1YmZjMzQ4MjdmODAyNWI4MGRmZTRmZjhjMGIxNjY4Li43OTUzYjBlZThl
YjM2YjQzNTUxZmQyZGNjMWY2Njg1OWI3NDllODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbmRl
eGVkU2V0dGVyTm9JCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CmluZGV4IDc1MDRhZTIwOWE1MWIyNzUwNmQ2OWY0MDYwODAzMTYyZTdkYjZkYjcuLmVjZWVhZDgw
YzMyNTEyOWM5NWNmYTU3ZThlZGFiZTA2NzBlYTI2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yMiwxNiArMjIs
MjAgQEAKICNpbmNsdWRlICJKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCIK
IAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1
Myw2ICsyNTcsMjQgQEAgYm9vbCBzZXRKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEcKICAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQo
KTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29u
c3RleHByICgmSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGws
IEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCBl
MzY4M2VmZGU2ZGJlM2I3MzgwNjk5MTBlZDBmNmNiNWFhOGFiNWFkLi4xY2Q1NTY4ZmQ5ZDAzZWYx
ZTgwYmM3MzMzNmQ3YzViZTE3N2UyNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBK
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3RJbmRleGVkU2V0dAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApp
bmRleCA5NjlmYjAxZjFjNTQwZDFiZDM0NTBmYWFiMGE2Y2Q0MDYxYzkwYjEwLi4zMjRmMTM2ODQ5
MGZmMTA1MzExNjczNGFhNDE3MDY0NzdhMDMyNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2lu
Y2x1ZGUgIkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCkBAIC0zMCwxMCArMzEs
MTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjg2
LDYgKzI5MCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSQogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBp
ZiBjb25zdGV4cHIgKCZKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQor
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IDA1YTkyZjlkYTdh
ZThlOGUzM2ZiMzE0ZjIxNjcxMjY5ZWRiYjYzMzYuLmZmZjE1MjZjNTViNmJjYjE5YTJiYmVlYTE5
MDIwMjBhYzRiM2IyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEluZGV4ZWRTZXR0ZXJX
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDA3N2E5MWUwZTI3MmFhODczZDIxMWRiMTE5N2E1ZGEwOTA4ZmVmN2YuLmE5Y2M0
OThjOTVjNGQyZThjNWNhNTZlMTFiZTc4YWIzNjYxOGJhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiSlNUZXN0SW50ZXJmYWNlLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtMzgsMTAgKzM5LDEzIEBACiAjaW5jbHVkZSAiSlNU
ZXN0T2JqLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlRlc3RTdXBwbGVtZW50YWwuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xMTEwLDYgKzExMTQsMjQgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFj
aChKU0M6OkoKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0SW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2U+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZSk7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RJbnRlcmZhY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW50ZXJmYWNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RJbnRlcmZhY2U6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJbnRlcmZh
Y2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oCmluZGV4IDM1Njg5NzE0OTQ0Y2FiOTk2ZjQ5NmUzMDlhMGRjNzI2Y2Jm
YTRkNzYuLmE2ZWE4M2M2ZDRhYmVhODhjZjNmYzM2ZjcwOWM3OWQ3ZmJiZGZjZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmgKQEAgLTUzLDYgKzUzLDEzIEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVz
dEludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEludGVyZmFjZT4gewogICAgIH0K
IAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMg
dm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogCiAgICAgLy8g
Q3VzdG9tIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUuY3BwCmluZGV4IDY1ZjIxOTE5N2Y0MmZlMDU2NjM1OWViNDUxZDlmOTYwZGMz
M2I5MTQuLmZkODQwOGNkY2QxYmM3NDY1YzFkYmE1NzBlNmJiYzI5MzRhOGJjMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgi
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFj
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0y
OSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xODQsNiArMTg4LDI0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHkoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZT46OmdldDxqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVJlYWRvbmx5R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAicmVhZG9ubHkiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkK
K3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUpOworICAg
IGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgK
aW5kZXggYTBmMGNlZmMxYWM2MjUwMGNkNzc1MDM3MjFiN2YzYzQxMWY0MDU2Yy4uYjE5ZjM4NTUy
MzA0NWJlNzQ1ZGM2YzU2ODZjODNhYTdkMjI1NDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
SW50ZXJmYWNlTGVhZGluCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggMmE2Yjg2
YWZkMDliYzIyYjc2MmNlNzc2N2UwYTVkYjUzMDA1NzQ1Ny4uYWNhODUzZjdiZjdlYzY3MzY3YmIy
ZWQxZmJlOGZjMWJhOTZhMDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC0yMiw2ICsyMiw3
IEBACiAjaW5jbHVkZSAiSlNUZXN0SXRlcmFibGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjM5LDYgKzI0MywyNCBAQCBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5j
dGlvbkZvckVhY2goSlNDOjpKUwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFi
bGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0SXRlcmFibGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkK
K3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJs
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+KQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RJdGVyYWJsZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RJdGVyYWJsZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0SXRlcmFibGU6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJdGVyYWJs
ZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SXRlcmFibGUqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmgKaW5kZXggZjcyN2JhMWIwNWIzODk1OThlZmRjOGVhYjFiODQ2ZjA4OTRhZmIy
NS4uMGYzNzgwNjZjNTRlM2YwMGJmNDk2ZjU3Zjk4MGY5MWYzMTgzMjE1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJh
YmxlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdEl0ZXJhYmxlIDogcHVibGljIEpT
RE9NV3JhcHBlcjxUZXN0SXRlcmFibGU+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VG
b3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJdGVyYWJsZShK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJdGVyYWJsZT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA4ZWNlMWY0
NmJmMTVkYjBmMzJlYWY1ZWVhZGI4YmNiZGFjMmM4MzRkLi5kZjUxMzUzM2RiMzQzZmZhNTJkMzdm
MzMwNDgxOTc3N2Y1ZjYzZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oIgpAQCAtMjgsOCArMjks
MTEgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KIApAQCAtMjMzLDUgKzIzNywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdAogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYWxsPGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rp
b25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRlc3RDdXN0b21GdW5j
dGlvbiIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4pCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggMDBmYTIzYjI2OWMw
NWFhN2YzYTcyMDIyNWJkNzZmMDQ3NzMzNTkxNS4uYTQyOWJjZDA5NmExNDEwZWI5MGU5YmRiN2Vl
NjJkMzA5N2UwNTM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgK
QEAgLTQ2LDYgKzQ2LDEzIEBAIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIDogcHVi
bGljIEpTRE9NT2JqZWN0IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwogICAgIEpTQzo6SlNWYWx1
ZSB0ZXN0QXR0cmlidXRlQ3VzdG9tKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBiNmRkMGIxYmMx
NTI5YTdkNWMyOTBmOGIyOWI3NTg3OGJkMmE2ODYzLi4yMDkwNmQwNGI4YmIxZDUwYzBkNTg5NzRm
YzM4MzBlMTdlYzY0ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRDYWxsYmFja3MuaCIKQEAgLTMxLDkgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTk0LDYgKzE5OCwy
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OmNhbGw8anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJtZXRob2QiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuZ2V0KCk7CitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpT
Qzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApp
bmRleCBmZjE4ODBkODQ3NjZjY2QwZTVjMzBkN2Y5NzM0ZDQwMjllNmVmMWJjLi5mMzkwZDA1N2M4
NTZjNTE2ZTA3ZjllNjkwNmQzMGFkNmIzYzc3YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYjUzYjk4ZDQwNDMxNDVlMDgzMWMwMGFjNWM2NWUz
NTI2NjA1MDI3MS4uYWE4NWFhYjA5MzYyMWUwN2ZmMzZiOTg5NjdkZmE0YWI2MDQ3MTQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDEwICszMCwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMyMSw2ICsz
MjUsMjQgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWMKICAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAppbmRleCBmZGQ3YjAzZWMyZmU1YTExZGUzMjlkNmUz
NWMyM2YyODhhYzFjMTViLi5lNGEyMjg2Y2ZjYzQ5ZWVkMzQxYjczYzlhODVhYTRkMGEwY2U1Y2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZEFuZAog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYs
IGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlND
OjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlND
OjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBz
dGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggYTNkNTgyMzFlMmU1NDIxYjIzNGUx
MGQ1YWIxZDVmMTM3MjZlMGJmMi4uNTM1MWE3ODY3ZTllMDEyZDYxMDczNzJlOGFkNDE0ZDQ3OTE2
MGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk
ZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCIKIAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgog
I2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAg
LTI5LDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTMyMSw2ICszMjUsMjQgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlND
ZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENv
bnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgK
aW5kZXggMTk3NTc5NmY4NjY4NzI1ZWQwMmY2ZDRlNGZiMDIyNWM1OTcxNGJlYS4uMDYwNTM2YmFj
YWJkODk0ODEyYTIzM2Y0ZWNkYWJkMTYwNmIyNWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAg
LTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtCiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpT
Qzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAppbmRleCBlMjkxOGY1MjRmMjE1YjdlMDhmZjg1ZmQzY2U1MWEwNDM1ZmIyOTQ0Li5m
NTlhMTJjYTM5ODVhOTFkYjhjNGEwOTQ0ZDQ2OGY0ZWVhMjAxYzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEsMTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM3Nyw2ICszODEsMjQgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllclByb3RvdHlwZUYKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAg
ICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAppbmRleCBjYTIwMWUwNzg3NDMxMzA1NWFhY2Y3YjIy
MWUxZDllYjZlNDE3YjBkLi4zNjYyYTNmZjJmYTBmYmMxOTFjZjlmN2QzOWMwZTY0NDVkNzViNjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1l
ZEEKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09
IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9y
UHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA4MjFk
N2M0N2IwYzYzNTM3MGExNWFmN2NkNDQ1NTAzZjM3YzA5NTM2Li5iMWRjMTg1ZDAyMTU4MDNjZmEw
MjJkNGJjZTM3YTYxMjMxNjkyNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2Uu
aCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjA3LDYgKzIxMSwyNCBAQCBib29sIHNldEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRQogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
IH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFj
ZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFj
ZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
Q29uc3RydWN0b3IuaAppbmRleCA4NTljZDNiZGE5YmQyMjdhMDg5NzZjN2MxMTVjM2I5Yjg2MjBi
OWIwLi4wNzQwMzgzYTllYjhlMGNiODY0NmZhNDQ3OTA4NmNlOGJlNTQ0OTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTUwLDYgKzUwLDEzIEBAIGNsYXNzIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9y
PiB7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRO
YW1lZENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0
b3I+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cAppbmRleCA4NzgzZTE1YzI4MTM3NjYzNGZkYzc1ZGVmZmM4NWRkYTk2NTQ4OWEyLi43NWQ2MjE5
NmQ4YzM0OGUwMjQ4YjJhZDFmMjY5YzJlZDBjMjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMjM1LDYgKzIzOSwyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsTwogICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsK
K30KKwogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmFuYWx5emVIZWFwKEpT
Q2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcio+KGNlbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCmluZGV4IDEzOGQ0YzE4
ZjhmNDZiYzM0MzMxMDliZDAzMjM5NTYzN2QwYWMzOWEuLjMzNDJiN2I1MTJhMmVkMWYzNmM3Y2Vh
MjA5YzgxYWNhZDA3NzhkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmgKQEAgLTU0LDYgKzU0LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkRGVsZXRlck5vSWRlCiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6
OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3Bl
cnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNTc5ZjJhMGU2YThjN2E5
MjU1NjE5ZDg0NDUyNmJhOGRkYjJkYWE4ZC4uNWFhNTU4ODU1YWVhNDNlYmY1NzczNTRjM2Q1MzYw
OTg3NjQwMDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJh
Y3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTI0OSw2ICsyNTMsMjQgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2wKICAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFj
ZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCk7
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0
ZXhwciAoJkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAg
ICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDA1NWQzZGY5
MjM4MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUuLjVmYTQyZDVmYmE2MTEwZWMwODViN2Rh
OGM5ZWFmYzEwMDYzODM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC01NCw2ICs1NCwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVk
RGVsZXRlcgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1
cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MDIzYTMxYTE0
NjQyMjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMuLjE1Yjk0NzhkOWY1ZWRjNjNlNDliY2VkM2Y2
MGM3NDk0YjQ2ODhmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjY3LDYgKzI3
MSwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYQogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXJCb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkRGVsZXRlciIpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAm
SlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEu
b3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXIuaAppbmRleCBhODU4YTI3MTU0YmQzYzYzNjRmYzQ1YTY0N2ZmNDJiNmI0
NzI1MDZmLi5lNDVjNzQ5MDliOTIyOWE3YTBmMGIyNWU5MDYwMWYyMTcxOWU4NDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaApAQCAtNTQsNiAr
NTQsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3ROYW1lZERlbGV0ZXJXaXQKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcAppbmRleCBmNmYzNjZlMjIyZTQxNDRhNzRiNjM3NTRmYmQwNzg5OGY5OGI2
NmM2Li4zZWQ5OWYwOTE4MjE1N2ViYTJkODMzYTUyNGY3ODJmMjExMjQ4ZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgpAQCAtMjksMTAgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjUxLDYgKzI1NSwyNCBAQCBib29sIHNldEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbAogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
IH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgIGVsc2UKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmgKaW5kZXggMmZlYThkOTBmNGY0YTE4NDJjOGUxOTJhZjM1ZDg1YzdkMTg2ODll
Mi4uNTQwNTY1ZTk2MDMwY2E5ZTVhYzg0MzFiYzIzMGI5ZmMxYmUzMDBiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTU0LDYg
KzU0LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyIDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyCiAgICAgfQogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFw
KEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCmluZGV4
IGNhMDlkM2I4MTM2OTI0MWI1ZmQ2MDM3YmU0ODg5NjQwMmI4NmQ5N2IuLmViODgyN2UxMzA4MWM2
NzQ2MWI1MTFlMjk3MjUyMWUwM2UxZDEyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJz
cGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMTMsNiArMjE3
LDI0IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwor
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aD4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGgpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJDYWxsV2l0aC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5oCmluZGV4IDk2YTk4YzViYjk0NGQyYmVjOGZjZDNiOWU4MTZkOWFkZGU0Mzc5
YzQuLmVlYTY4YmQ2YzU4MzM5YjczZTVhMzVlNTZjNmU2MzQ4MDgzZjI2ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xv
dElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiNzY5ZmE5MTA5
MGQ4YzA5YmY5MTgwYzVmOGE0OWVjNjdjODk0MDcyLi5hNTExOGJlODMwZjE0MDUwZTJmYjI1Nzg1
NWU2OTBiOTE2OTg2OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjEzLDYgKzIx
NywyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHBy
ICgmSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMg
IT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnRE
YXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5J
TkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyLmgKaW5kZXggZmU5OGI2MTE5NjY2ZjJkYzc0YmExZDAwM2JjZThmMjBmY2ExZjQyNi4u
MmMxODEwZjlmMzJjNjkzNjAzODk1YTE2NjU2YzI0YjFhZTRjNTc1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTUyLDYgKzUyLDEzIEBAIGNsYXNz
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6
SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDQ1
ZWViMmJlZjlkN2MwMTlkMDRlZDJlMGZlMWJhZThlYzUxZmY1MzkuLmI0ODA2ZDJjN2Q3ZmUxNjVh
MGJjOTg3NGFiMzY5ZTgxMGMyNDg4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3Ry
YWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjQy
LDYgKzI0NiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldAogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uR2V0dGVyTmFtZUJvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZ2V0dGVyTmFtZSIpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0Nl
bGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29u
c3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5oCmluZGV4IDRmYTAyZDE0ODNjZDQ1NzM0NDc2YjI3MTZhNWM4YTExYTJhMmQxYTMuLmQxOWQ2
OGY5N2ExNzcyNGU1ZDc4NjUwM2I5OGJkNWI3ZWE5MjViNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3Mg
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkR2V0dGVyV2l0aEkKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA0Njc1MTUx
ZWRlMTM3MmIzMTQ2MWU4NWJlZjZjZDcwODNkODE1NTA0Li5kZmUyY2E5ZmY2N2U4ZDc2Mjk3NzY1
ZWNlZGZiYzM1OWYzYzdmM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjc2LDYg
KzI4MCwyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3Rl
eHByICgmSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGll
bnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmgKaW5kZXggYzExNGQyOGFkNTdhYmE2MTY3ZGE5NmFlZjAyMjI0MmU1OTQ5NzIz
My4uYjcyYjZkMzhhOTk5NTQ0ZDJmZTYzZmE5NjYyNGNiM2UxMWZjMzY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNs
YXNzIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9w
ZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggYjVhODE2ZGU0NjhhM2ZiNDQ4
NzA2NDliNzVhMTU5YzFiMmJhOGI2OS4uZDZkNzA4YmIxOGNmMzQ0NjI5MGFjNWQ5M2Q4MzkwYTY3
NDRmZWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI3
Niw2ICsyODAsMjQgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAgICByZXR1cm4gcHJvdG90
eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkK
K3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMo
KTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZK
U0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5v
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19F
TkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggNDc5ZjE2MWQ5ODg2MTA0NzhhZWIyMTMxOWQ3
YjA0Mjk3MTI3NDJmOC4uYTlmN2MyZjM1NWViZGExYjllZGNkOTEzNGQ2ODRhZDE3NmY5ODEyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5o
CkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0ZXJUaAogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2Ug
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDk3
MjBmMzY5ZjdkMzdmM2Y4ZWMyNTkxZTQ0MDZhMzQ1MmZkMTFkOGQuLjYwNDNjOWQyZDBkYTA1ODZj
ZmUzYTE1ZDFhMWU3ZGI2YzM5NmYzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3Ry
YWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzA4
LDYgKzMxMiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbQogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj46OmNhbGw8anNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1bmN0aW9uTmFtZWRTZXR0ZXJCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkU2V0dGVyIik7CiB9CiAKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPikKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRD
b25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAg
ICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmgKaW5kZXggZDE1MzVjZGZhOGM0OTYzMTRmOTU5ZGM2NDk4OWUwZDNlMjk4NDQ2NS4uNjdj
NWY4MjQ1MTUwZDE1NDBkYWIxZTVmZTM3NjVhZTg5MDI3ZjMzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFz
cyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRTZXR0ZXJXaXRoSQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVy
dHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
Qzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDY0Njk0ZDFlNDhlMTI4MmRkZDE3
YzdiMzIyYzg5NmQ1NTEwZTU2YzYuLmNlNjBhODI3ZDA2YjQ5ZDMyZmNiOTZiYjIzNzBjNWFkMGZj
ZDU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3Bl
cnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzUxLDYgKzM1NSwyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGVGdW5jdGlvbgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj46OmNhbGw8anNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uSW5kZXhlZFNldHRlckJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5nZXQoKTsK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3Rl
eHByICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oCmluZGV4IDNlODJlYWY2ZWZkMmMx
MWJiNmY5YjY3Njg4M2VhOTBhOGNkM2JiODMuLmRiYzQwNzM4ZDEyMGRlNjQwMDk0Zjc3MmM4Nzdk
Y2VhYTI5OTcwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2kK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCA3YjFjYzg0MjFmODVkMzFiMjAwODEw
ZjEyODg3NDE1MmQ2OTEyMzAxLi42MTY4MGJjNTNhYWY5ZWZjOWE1MDhiY2I4MjlhMDU2NzYzNzY3
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oIgogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEs
MTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTQwMyw2ICs0MDcsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXAKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+
OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9
IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CisgICAgaWYgY29uc3RleHByICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCmluZGV4IGViMzdkMjNkODU5
ZDVlN2JjZDUwNzdmZDE1YTE4MjJkZWRiMDhlY2YuLmE1NmY3MmIwZjBkNjUyMzNiZGE1ZGFhMjdm
OTAzMjE0MWQ4YTdlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xh
c3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA6IHB1YmxpYyBK
U0RPTVdyYXBwZXI8VGVzdE5hbWUKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3Bl
cnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBK
U0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCBhYTJhNzU5NDBhY2Ez
MDFlMzMyY2EzMDNjMGVlZjk1ZjEzMDNiOTVmLi44YzgyMGEwMDc3NDM3YmQwNDczZGI3OTAxY2Mz
NDQxZmNjYThlOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMjYzLDYgKzI2NywyNCBAQCBib29sIHNldEpTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbAogICAg
IHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRp
bnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJy
aWRlQnVpbHRpbnM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1
aWx0aW5zKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCA3ZGU1MWRmOWQ1NDA2MWIyNzI3ZTJkYjUzZmQ0ZWVm
MTIwMDk1YTVkLi4wNWZhNDk1YWM2MGM1NmI2Zjc4NmEwOWRhNmM2ZDU3ZTZmNGM4NDU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNldHRlCiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAppbmRl
eCBjODRiMTA2NGM0ZTFiMTI3YjhjNTJmODQ5MzViMmMzYjI5NmEzM2Y4Li45YzJmYzZjMDEwOTFl
MWFlOGFkYjgyYTNhN2FjYTEzZjZkNmU5ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKQEAgLTIyLDYg
KzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcy5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtMzEs
OSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTM0Niw2ICszNTAsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0luc3RhbmNlRnUKICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0lu
c3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU9wZXJhdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAidW5mb3JnZWFibGVPcGVyYXRpb24iKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5nZXQo
KTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29u
c3RleHByICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3Bh
Y2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlND
ZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmgKaW5kZXggYTAxNDNkNzRmOTU2YzZhNTdhOGEyYWU1MjFlODZkNTdk
MTkwZDlmNC4uNGQxZWUwZWU1MDU0ZDFjMGUzYThjNzI0MjgxM2UxOTU1OTYwMmNhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTCiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGI5ZjcwMjU0YjE4NDczZDFkMjZi
NWZhN2M1MDc3NGM0Mzc4Zjk0MzkuLjllYzJkMzM5NGY3NDgwNTM5YWExOTU0OTdiODdhYzI5Y2E1
YjIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
VW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zMSw5ICszMiwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzMzLDYgKzMz
NywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZAogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpOworICAg
IGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5m
b3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3Rl
eHByICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXpl
ciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaAppbmRl
eCBmODU2NDZmZWFmMjhhZDY0ODMzYWEwYmFjZDEwNDg5ZGU0MzYzN2M0Li5jZGZkNGE0NzI3Mzg5
NGNlOTRiZDBiMzBjZGVhMGM5NjM3MzdlMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMgOiBw
dWJsaWMgSlNETwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmUgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDFmYjNmMWJl
YThkYWYyZjBkMDllMjk2YzU4N2ZmZTA0NzA4NjNmZTguLjZkOGVkYjU3YTZmYzNiMDE0MWQ2YWFm
YjBjZWMzZjI5YTJjMWYxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJKU1Rlc3ROb2RlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNs
dWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKQEAg
LTM2LDEwICszNywxMyBAQAogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTQ0Myw2ICs0NDcsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RO
b2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGwKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
blRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9KU09OIik7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5vZGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROb2RlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROb2RlPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Tm9kZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROb2RlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Tm9kZSk7
CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROb2RlLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4
cHIgKCZKU1Rlc3ROb2RlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0Tm9kZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0Tm9kZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKaW5kZXggYzM1YjNjNDg4NzJjYmZkMmU4MTA2
YmEyNzhiNDdjYzUzNTA0YzM3Ni4uNGJiNjllYjVlYjBjNTgyYmViYzJjYjNhN2FmZGViMDIxMzMx
YmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9kZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBK
U1Rlc3ROb2RlIDogcHVibGljIEpTTm9kZSB7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHNlcmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNU
ZXN0Tm9kZSYgdGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogICAgIFRlc3ROb2RlJiB3cmFwcGVkKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IGY1Njg0MzI0YTY2N2JhOTZkZTc1MzYwODE4NzNkMjUyMGFh
OGU1MzUuLjg1NmViZGM1ZmJlOWY4NmZlMWNjNWQ3ODkxOGM0MzM5YTNmMWYyZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0T2JqLmgiCiAKICNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNs
dWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKQEAgLTg5LDkgKzkwLDExIEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSXRlcmF0b3JPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTg5NDksNiArODk1MiwyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OKEpTR2xvYmFsT2JqZWN0KiBsZQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9KU09OIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE9iajo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE9iai5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0T2JqPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0T2JqID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPYmop
OworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0T2JqKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE9iai5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0T2JqOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0T2JqOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBi
YmJmYTA0OWViMjBjMGNmZWYwNzk2M2Q0NmVjYTc1NmM4YzFhYjdjLi42ZDU4ZWM2ZTUwNjI3YTk1
YTIwMGFkNTkxMDE4YmQ4NTUwYjQ3ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC02Myw2ICs2MywxMyBAQCBjbGFz
cyBKU1Rlc3RPYmogOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPYmo+IHsKICNpZiBFTkFCTEUo
Q09ORElUSU9OKQogICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBt
X2NhY2hlZEF0dHJpYnV0ZTM7CiAjZW5kaWYKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMTBjODJi
OTFmMDljMGFkOWQxN2NjMWI4YzE3YzMwNjAzZjg5MDZkYy4uNTZjZWZkNDVlNTU2MGE5MjRkMjhh
MDA3M2M0N2Q5NDFjYTU1YTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKQEAgLTMzLDkgKzM0
LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTI2Niw2ICsyNzAsMjQgQEAgYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoK
ICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0
YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7Cisg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKaW5kZXggNmE1MDk0Mzc3MjUyZWMyOTEyN2EwMTg1NGUzNTZk
YjYzZmE1OTc1OS4uODY3MDU4NWQ3MmZhNjA1ZDViYzJkMzg4NmY0NzA2NGIxMmFmNTljZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC00OSw2ICs0OSwx
MyBAQCBjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggNjI1NTIx
MmRiYzVkOThhZDJkMjg0MjIwMzQzYWY4ODJkYzIwYjZkNi4uNDdkNGNiOTVlNjA3ODFmY2RhZmE4
ODliZDcwMmQxZTAwNzZlY2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaCIKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAgLTMwLDExICszMSwxNCBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjE2LDYgKzIyMCwyNCBAQCBi
b29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aQogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFj
ZTsKK30KKwogdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaAppbmRleCBkN2VhOTAzZWUyNTRiYzBiY2U0YzA0
NzNlZDljMDE5MmIxNjIyNGJhLi4yMDMwNDM2NWE1MDcwZjQ1ZjdlZTZlZThhYmY3ZWQwNjQzMjQ5
ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPdmVy
bG9hCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAppbmRleCBmMTE4MTFlODU5NGMyZDEyZTRmNDg3OWEyZWRhZTg2MGE4YmM0YTk0Li45
YjZkNTM5MjJhODlhNzk0OGNmNjYxNjJmNDk2YWM0YTI4NGFlYmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzMsOSArMzQsMTIgQEAKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNDUsNiArMjQ5LDI0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1
bmN0aW9uTmFtZWRJdGVtKEpTCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25O
YW1lZEl0ZW1Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkSXRl
bSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE92ZXJyaWRlQnVpbHRpbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWlu
dFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVIZWFwKEpT
Q2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4IDQ0N2YzZmY3NGM5ZWVhNmU4YWUyY2UyM2RhMzk4ZjNi
Y2IzNTQ1MWEuLjViYzAzYTgxMzk4MjIzYTA3MDg4MDRhMzBiZjI2OWUyYTA4MmQyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJyaWRlQnVp
bHRpbnM+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1w
dXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3Bw
CmluZGV4IDRiODAyNzY2M2IxNjVjNWMwMDc1ZjFiNWJmYjczOGRhNjBkYjA0ZmYuLjNmMTZmOTJj
YjAxMThlMjA5MzU1YjdkMjk3OTA1YjJhNzc0MGFiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCkBAIC0yMiwxNSArMjIsMTkgQEAKICNpbmNsdWRlICJKU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxNyw2ICsyMjEsMjQgQEAgYm9vbCBzZXRKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW4KICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFBsdWdpbkludGVyZmFjZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFs
eXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAppbmRl
eCBiZmQ5NTY1YjA4MzI1ODFkMzI2Njk4OTA0NTU3NmU2MzA2M2QzNzg3Li41MzJlM2JjODFmMmJh
NjNjNjRiZGU5NGZjMzZiYjQ2YmRkNjUxM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFj
ZS5oCkBAIC01Niw2ICs1NiwxMyBAQCBjbGFzcyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UgOiBwdWJs
aWMgSlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+IHsKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldENhbGxEYXRhIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKaW5kZXggNzdmMTlmMmYzMGM2MDVh
ZGVmM2UzMDg0ZTU3MDhjMDRjZjRiNzE4MC4uMmViODgxYWFkMTc0YThhOTY3NzQ4NjllMzliZWQx
ZDdiNzkzYjU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zNSw4ICszNiwxMSBA
QAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTI5Myw2ICsyOTcsMjQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50UmVhc29uKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2IK
ICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudD46Omdl
dDxqc1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyZWFz
b24iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+KQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmFuYWx5emVIZWFwKEpTQ2VsbCog
Y2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCmluZGV4IDZlMmY3YzdmMDBkOGM2ZGQyZDhiZGU3
MmM5NjAxM2UzMGE3YTcxZDguLjY1YzcyOGM2NjRiYTc2YjdhYzMxZTFjNDM0ODM5MjEwYmFkYTI2
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKQEAgLTQ5LDYg
KzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCA6IHB1YmxpYyBKU0V2
ZW50IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2Rl
ID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7
CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXIm
KTsKICAgICBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50JiB3cmFwcGVkKCkgY29uc3QKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggNWJlYWUxNjY5NWMxODUxYzgwMTVm
NjYwNDk1ZGU2MmU0YzY3MzU5Yi4uMGQwZjFjNGI5ODExNDE2YWQ4YzNmNmY1OGNlYjcyYzAwOWI5
NGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTVGVzdFNlcmlhbGl6YXRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTM5LDExICs0MCwxNCBAQAogI2luY2x1ZGUg
IkpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgiCiAjaW5jbHVkZSAiSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC02
NzQsNiArNjc4LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFs
aXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsCiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uUHJv
dG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgInRvSlNPTiIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemF0aW9u
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXphdGlvbj4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6YXRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdFNlcmlhbGl6YXRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U2VyaWFsaXphdGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0U2VyaWFsaXphdGlvbjo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdFNlcmlhbGl6YXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNl
cmlhbGl6YXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5oCmluZGV4IDI3OWUy
MjYyNDAyNjc5MmFmMmI1MDE3N2M0ZjI1OTA1MDkyOWU1YTguLjI5MzY4MjRkMDUwOGRhNDBiNDU4
MmQ1N2IyNjgwYWFjZTM2ZDc5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaApAQCAtNTAs
NiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0U2VyaWFsaXphdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXI8VGVzdFNlcmlhbGl6YXRpb24+IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RT
ZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dT
Y29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFw
KEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0U2Vy
aWFsaXphdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RT
ZXJpYWxpemF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXph
dGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDc5ZWJjYTEyNjg4OWJhOGQyMzNmZTA5
NDViMjcyODRlZTI5OTc0MDIuLjkxNGY4OTAyNTExYWM3NWMxZjRiODU1MDQzOGRjZWY5MjQ0N2M5
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVj
dEluaGVyaXRhbmNlLmNwcApAQCAtMjIsMTMgKzIyLDE3IEBACiAjaW5jbHVkZSAiSlNUZXN0U2Vy
aWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5h
bHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC0xNTMsNiArMTU3LDI0IEBAIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXph
dGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
CiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6c3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMg
PSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJ
bmhlcml0YW5jZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRp
b25JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlND
OjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVj
dEluaGVyaXRhbmNlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemF0
aW9uSW5kaXJlY3RJbmhlcml0YW5jZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaAppbmRleCBkOWM5YWMzNGJiNTMx
NjM2YmE4ZjEyMzgxODM1ODU3ODU4MzA1YzczLi5lMGJjMmI5ZGFjZDQyZDE3MjMxOGNjZjFjZDA2
ZTJhYzJlNDQyYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluZGlyZWN0SW5oZXJpdGFuY2UuaApAQCAtNDgsNiArNDgsMTMgQEAgY2xhc3MgSlNUZXN0U2Vy
aWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UgOiBwdWJsaWMgSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKICAgICBUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UmIHdyYXBwZWQo
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3Bw
CmluZGV4IGE2ZTgyZTJlMWU3MTkwMTlkYjYwZWM0NDgwZGU1MGFlODNkYzA3MTguLjRlZDczZDk4
N2I2Zjk0YWI0YTdlMGZjZWFjYzZmMjUxYmI3MjMxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09i
amVjdENvbnN0cnVjdG9yLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjI5LDYgKzIzMywyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJv
dG90eXBlRnVuY3Rpb25Ub0pTT04oSgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQ+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90
eXBlRnVuY3Rpb25Ub0pTT05Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
InRvSlNPTiIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD4p
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJs
ZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGws
IEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuaAppbmRleCAzNDdlMDA4ZTUyM2VlM2FhMWMwYTg1NTY2MjhkYmNk
MDQ1ZWI1ZTg0Li45NTZhNTRkNzM5MDQ4NGFhZDJlZTE1NTljZTFkM2ZlMzg0MGE0YTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuaApAQCAtNDksNiArNDksMTMgQEAg
Y2xhc3MgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQgOiBwdWJsaWMgSlNUZXN0U2VyaWFsaXph
dGlvbiB7CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHNlcmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQmIHRoaXNPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpUaHJvd1Njb3BlJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQmIHdyYXBw
ZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsLmNwcAppbmRleCAwYjMxODZmMzk3ZDExNzYwZmU3OGY5YzE1NzlkZmMwOWVmMGRl
NDgzLi41MzM4NmE0N2FlOTQzYmJiZDMyOGY2ZGY5OTM0Yjc1MGY2NzRjNjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oIgogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSAr
MzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTI2NCw2ICsyNjgsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0oKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpjYWxs
PGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9KU09OIik7CiB9CiAKK0pT
Qzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dEZpbmFsLmgKaW5kZXggNmNjOGY0NzQ2OTY4OTc2NjhkZDk3MWE3NDlkZGQxZTliNGI2N2RkNy4u
NzI3YTM1M2I3NzIyNzk4ODc0ODc0YWEzODQzOGFmYTgzNjdiMDcxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oCkBAIC00OSw2ICs0OSwxMyBAQCBj
bGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIDogcHVibGljIEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6
VGhyb3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTYxYWJh
ZjU2ODk4MzdmMTQ4MTg3YWU4MWU0ODM3OGUyMGY1ZDYwNS4uOWE4MmYyNWY5YzU5Mzk3MGJiMjE3
ZWI2NGI5YzUxYmU2NDMwNzhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTM4LDEwICszOSwxMyBAQAog
I2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM0Nyw2ICszNTEsMjQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZ0JvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZnVuY3Rpb25SZXR1cm5pbmciKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDI0M2Y2M2EyYWExOTJkY2EyNWRmNGU5NDNhOTc0
ZWE3NzJlNDBlMTIuLmEyYTY3MzhhZDA2MjQzZjE3ZGZhNTlkNThkZDg0NWNhMjQ0MTAyYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmgKQEAgLTUzLDYgKzUzLDEzIEBAIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFNlcmlhbGl6ZWRTCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBt
X2NhY2hlZFZhbHVlOwogICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3du
PiBtX2NhY2hlZFJlYWRvbmx5VmFsdWU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKICAgICBz
dGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHAKaW5kZXggYzNjYTdkMTkwODc1OTZkNTU0Nzk2NGQxOWFjZDBi
MDE1MzljMzIwMy4uYWY0NTAzZWI0OGRlMDdkYTFiODlkNjQyZGU4MDYzYjM1ZTljY2I0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNU
ZXN0U3RyaW5naWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0U3RyaW5ncy5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4Nyw2ICsxOTEsMjQgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0
aW9uVG9TdHJpbmcoSlNHbG9iYWwKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmlu
Z2lmaWVyPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dFN0cmluZ2lmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZp
ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVy
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXIpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXIuZ2V0KCk7CitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpT
VGVzdFN0cmluZ2lmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXI6OmFuYWx5emVIZWFwKEpTQ2Vs
bCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5o
CmluZGV4IGMwMTRiOTdkMjhhYTg2OWNhZjM4NTg1N2E0MTA5NjlmNTZlZmFiMjUuLjYxODc0MDQy
MjI2MjRkYzBlOTZkODBkZjEyNmRlMmMyOTdhYzFkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5o
CkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0U3RyaW5naWZp
ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U3RyaW5naWZp
ZXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbi5jcHAKaW5kZXggNzcxZjU5YWM1YjUxYjFhNjZjOWViNjFjYWE4MWQ1ZGU3N2EyOTVj
OC4uZWJiN2RkMTE0MTY4ZDJlNjhkNzU4YTcyNDY1OWI1NTQxMDY0NjAzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4Nyw2ICsxOTEsMjQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlw
ZUZ1bmN0aW8KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgInRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uZ2V0KCk7CitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNvbnN0ZXhwciAoJkpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9
ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBh
bmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCmluZGV4IDU5ZjUxZTRiMmIzNWNlMDgwOTg0
MjVhYmZjODg0N2Y4YzY1YTM0NWYuLjJjY2MwZGVhZmYyN2M2YTk2ZTcyOWE0NDIwZTI3MGI3NmFm
OGI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbi5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyQQogICAg
IH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVj
dGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcAppbmRleCAzMjNhYmY4NmMyZTNiYWQ0ZmYxOGVhMzE5MzNlOTZhM2RjZmQ0YmNiLi4z
OTVmZTcwM2E1MzgwYzMyYmYyOWVlMWZjMjdhNjY0Y2JlZDc2NDAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oIgogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC0yOSw5ICsz
MCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMjAzLDYgKzIwNywyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRvUwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj46OmNhbGw8
anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdC
b2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgpKQorICAgICAg
ICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
biA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgpOworSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZK
U0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5v
dXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19F
TkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uLmgKaW5kZXggYTdjNjM1OTNkZWIwMDZmODg3ZDhjMTEzMzBlYTEyZTU5NTA0NGE5
Ni4uYjk0NjIzZmE2NjRkYWI4YjhjZTc0OTAwMmM1MmVjMmI5ZTMyODc5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oCkBAIC00OSw2ICs0OSwxMyBA
QCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0U3RyaW5naWZpZXJOYW1lZAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZv
ckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwq
LCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCmluZGV4IGU2YjU0
OWU3MWE2MTRhMGYyMjkzMDc2NDA1MzAwYWIxOTU5YTk4MzkuLmZjNDhiOWY3MGQ4NzIzMDA5NDg3
MDMyNDE0MGQzODM5NzAxYzk5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAj
aW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5
LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC0yMDMsNiArMjA3LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuCiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXM+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgInRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2Vz
KCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7
Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjphbmFs
eXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMuaAppbmRleCAxOTQ0NjE5ODY2MGEyNjRjZmFhYjE4NmVmZDg4
MDkyZTNjMTdiOGRiLi5jZTNjYjA4ZDRiODQyMDUzMjM5NmU2ZWRmZWExYjcxMzNmYjM4ODNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcy5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZgogICAg
IH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVj
dGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyhKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAppbmRleCA4YzdjYmE5ZTY4NGI5YTEwMTQx
ZjVlODAxOTIyMzk4NzU0NzRlMTdkLi44ZDk2NWRjNjBmN2ZmOTIwYjY3YTZkMWJjMjc1YjcwZjEy
OGU1YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
MTg3LDYgKzE5MSwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZUZ1bgogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjo6Y2FsbDxq
c1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIp
OwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmc6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmcuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuZ2V0
KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorICAgIGlmIGNv
bnN0ZXhwciAoJkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmgKaW5kZXggMWRiNmJiM2NlYWI0NjIyYzI2MjdiMTc5NDdjYTJkNzk4YTRhNTk2Ny4u
MTY1ZWU2ZTlmNDhkNjJhNGIzNTdhNDM2NTU4NWJhODQxOTE5OWRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuaApAQCAt
NDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWYKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlLmNwcAppbmRleCA5YWM5MTQ3YTA2ZTAzOWZjODg1NmFlYmQwZTYxNmE1MWJiYWQ0NDE1Li5l
Nzg0ZWFjZWQ3ZDBlOTUzZGY0YzcyYzM3MjBhMmZjYWRmMzE3YTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCkBAIC0yMiw2ICsy
Miw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oIgog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2Vz
LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAs
OSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTIwOSw2ICsyMTMsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb24KICAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+
OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmlu
ZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgIGVsc2UKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUp
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCisgICAgaWYgY29uc3RleHByICgmSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZS5oCmluZGV4IDY2ZjlmNmYxZjNjZjAyMGIzM2Q4ZGNkNjI4ZjEwNDZmN2Q3ZTNlYjIuLmQ1YWM1
M2ZhZmJjNWFjNzRiYjZkYjkwNzgyNDljNmY3NDM0YjA0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaApAQCAtNDksNiArNDksMTMgQEAg
Y2xhc3MgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdFN0cmluZ2lmaWVyUmUKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggNTZlZjdiZDM1
ZjEwYzFkOWYxOTAzMDBjNjc3ODY2ODc4YTM5ZjlmNS4uMzgxYTY5NjdhNGU0NWE4NGJlYTg1YjY1
YTJhNzQ1M2ZlZTFmMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMwLDkgKzMxLDEyIEBACiAjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yMjgsNiAr
MjMyLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvCiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT46OmNhbGw8anNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmdldCgpKQorICAgICAg
ICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
KyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSo+KGNlbGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaApp
bmRleCBhN2Y5NjljMjA4MmRlNjY3YTBiYzgyMjk4MzI1MzQxNGQ2ZTUyNjZjLi5kZTY4YzI5N2Mz
ZTYxMzQzMGYwYjJkZjNiMzAyYjY2ZGNjODJlZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaApAQCAtNDksNiArNDksMTMgQEAgY2xh
c3MgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3RTdHJpbmdpZmllclIKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApp
bmRleCBkODg3MzkyMTdiNWQ0YWY3ZWUxZDJmZGFlNWVjZWU4MzBjYzIwNWM2Li45ZjE3ODQ3MmM5
Yzg5MmQ1Y2ZlM2RmMmU3NTgyNWVkZmU1OWYzMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RUeXBlZGVmcy5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yLmgiCkBAIC00NiwxMCArNDcsMTMgQEAKICNpbmNsdWRlICJKU1Rl
c3RTdWJPYmouaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTc3MSw2ICs3NzUsMjQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbigKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkJvZHk+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwog
fQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RUeXBlZGVmczo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFR5cGVkZWZzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RU
eXBlZGVmcz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZzID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RUeXBlZGVmcyk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RUeXBlZGVmcyA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFR5cGVkZWZzKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFR5cGVkZWZzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKKyAgICBpZiBjb25zdGV4cHIgKCZKU1Rlc3RUeXBlZGVmczo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpT
VGVzdFR5cGVkZWZzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuaAppbmRleCBhZWYyYzlmZTVlYjk5MmNiOTE4ZGFlMDU5NGUx
MjkwMDUzOWI2OGNiLi42NGU3ZWU4ZjRmYTM3NjMyMzA4MDg1ZmY5OTExMmFiZWY0MTZlZjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0VHlwZWRlZnMg
OiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RUeXBlZGVmcz4gewogICAgIH0KIAogICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBt
b2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6
Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXpl
SGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392507</attachid>
            <date>2020-03-04 16:41:38 -0800</date>
            <delta_ts>2020-03-04 17:40:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205107-20200304164137.patch</filename>
            <type>text/plain</type>
            <size>288309</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uN2M2MDE4ZTg3NjE3M2Y0NTA1NjBkMjFhOTFkZWY2
NWNlMmI4N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMiBAQAorMjAyMC0wMy0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFB1dCBhbGwgZ2VuZXJh
dGVkIEpTQ2VsbHMgaW4gV2ViQ29yZSBpbnRvIElzb1N1YnNwYWNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVzIElzb1N1YnNwYWNlIHBlciBXZWJDb3JlIERPTSBvYmplY3QgdHlwZS4KKyAgICAg
ICAgSW4gcHJlcHJvY2Vzcy1pZGxzLnBsLCB3ZSBjb2xsZWN0IGFsbCB0aGUgRE9NIG9iamVjdCB0
eXBlcyBhbmQgZ2VuZXJhdGUgRE9NSXNvU3Vic3BhY2VzIGNsYXNzLAorICAgICAgICB3aGljaCBj
b250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBJc29TdWJzcGFjZXMuIEFuZCBpdCBpcyBoZWxkIGJ5
IFdlYkNvcmVKU0NsaWVudERhdGEuCisKKyAgICAgICAgQ29kZUdlbmVyYXRvckpTLnBtIHN0YXJ0
cyBwdXR0aW5nIGBzdWJzcGFjZUZvcmAgYW5kIGBzdWJzcGFjZUZvckltcGxgIGZvciBlYWNoIEpT
IERPTSB3cmFwcGVyIGNsYXNzZXMuCisgICAgICAgIEFuZCB3ZSBkeW5hbWljYWxseSBjcmVhdGUg
SXNvU3Vic3BhY2UgYW5kIHNldCBpdCB0byBXZWJDb3JlSlNDbGllbnREYXRhJ3MgRE9NSXNvU3Vi
c3BhY2VzLiBBdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB3ZSByZWdpc3RlciBJc29TdWJzcGFj
ZSB0byBtX291dHB1dENvbnN0cmFpbnRTcGFjZXMgaWYgdGhlIGNsYXNzIGhhcyBvdXRwdXQgY29u
c3RyYWl0cyBjYWxsYmFjay4KKworICAgICAgICBBbmQgd2UgYXZvaWQgY2FsbGluZyBHRU5FUkFU
RV9CSU5ESU5HUyB0d2ljZSBpbiBDTWFrZSBwb3J0cy4gVGhpcyBiZWhhdmlvciBpcyBhbGlnbmVk
IHRvIEFwcGxlIHBvcnRzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3V0cHV0Q29uc3RyYWludFN1YnNwYWNlRm9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRh
OjpKU1ZNQ2xpZW50RGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmZvckVhY2hPdXRwdXRD
b25zdHJhaW50U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNw
YWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6b3V0cHV0Q29uc3RyYWlu
dFNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJz
cGFjZUZvckpTRE9NV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGll
bnREYXRhOjpzdWJzcGFjZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9ySlNSZW1vdGVE
T01XaW5kb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1
YnNwYWNlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU1ZNQ2xpZW50RGF0YTo6c3Vic3BhY2VGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6c3Vic3BhY2VGb3JK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
Vk1DbGllbnREYXRhOjpzdWJzcGFjZUZvckpTV29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNJbnRlcmZhY2VOYW1lOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTSW50ZXJmYWNlTmFtZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU01hcExpa2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNYXBMaWtlOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01h
cExpa2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFwTGlrZTo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5TWFwTGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlNYXBMaWtlOjpzdWJzcGFjZUZvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlTZXRMaWtlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNSZWFkT25seVNldExpa2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTZXRMaWtlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1NldExpa2U6OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlv
bnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENFUmVhY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9u
czo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzcGFjZUZvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RET01KSVQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpzdWJzcGFjZUZvcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpzdWJzcGFjZUZv
ckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
RXZlbnRUYXJnZXQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vi
c3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RJdGVyYWJsZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEl0ZXJhYmxlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzdWJzcGFjZUZvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFj
ZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1
YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpz
dWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGluczo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6c3Vic3BhY2VGb3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzdWJzcGFjZUZv
ckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlh
bGl6YXRpb246OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNl
cmlhbGl6YXRpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbDo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdFN0cmluZ2lmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJzcGFj
ZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
TmFtZWRUb1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6c3Vic3Bh
Y2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpzdWJzcGFjZUZvcik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0VHlwZWRlZnM6OnN1YnNwYWNlRm9yKToKKwogMjAyMC0wMy0wNCAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxs
b3cgVXNlclN0eWxlU2hlZXQgaW5qZWN0aW9uIHRvIHRhcmdldCBhIHNwZWNpZmljIFdLV2ViVmll
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzN2NiMWJlZTQ5YzdlOTU1YTcxMjRkMWUyZDZhZTlj
ZDE1NWMwNzliLi5jMzU5MzA5ZWFjMGZlNWZlNWZiNjI5ZjQ4NDk0OWUyY2VmMmZkY2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTYzNiw2ICsxNjM2LDcgQEAgc2V0KE1BS0VfTkFNRVNfREVQ
RU5ERU5DSUVTCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJp
bmcucG0KICkKIHNldChTVVBQTEVNRU5UQUxfREVQRU5ERU5DWV9GSUxFICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXApCitzZXQoSVNPX1NV
QlNQQUNFU19IRUFERVJfRklMRSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRE9NSXNv
U3Vic3BhY2VzLmgpCiBzZXQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFICR7V2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KFdPUktFUkdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCiBzZXQoREVESUNBVEVEV09SS0VS
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19E
SVJ9L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKQEAgLTE4MDMs
MTYgKzE4MDQsMTcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUyAk
e1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW50ZXJuYWwKIAogR0VORVJBVEVfQklORElO
R1MoV2ViQ29yZUJpbmRpbmdzCiAgICAgT1VUUFVUX1NPVVJDRSBXZWJDb3JlX1NPVVJDRVMKLSAg
ICBJTlBVVF9GSUxFUyAke1dlYkNvcmVfSURMX0ZJTEVTfQorICAgIElOUFVUX0ZJTEVTICR7V2Vi
Q29yZV9JRExfRklMRVN9ICR7V2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFU30KICAgICBCQVNF
X0RJUiAke1dFQkNPUkVfRElSfQotICAgIElETF9JTkNMVURFUyAke1dlYkNvcmVfSURMX0lOQ0xV
REVTfSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICBJRExfSU5DTFVERVMgJHtX
ZWJDb3JlX0lETF9JTkNMVURFU30gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9ICR7V2Vi
Q29yZVRlc3RTdXBwb3J0X0lETF9JTkNMVURFU30KICAgICBGRUFUVVJFUyAke0ZFQVRVUkVfREVG
SU5FU19KQVZBU0NSSVBUfQogICAgIERFU1RJTkFUSU9OICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfQogICAgIEdFTkVSQVRPUiBKUwogICAgIFNVUFBMRU1FTlRBTF9ERVBGSUxFICR7U1VQ
UExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRX0KICAgICBQUF9FWFRSQV9PVVRQVVQKLSAgICAgICAg
JHtXSU5ET1dfQ09OU1RSVUNUT1JTX0ZJTEV9ICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNU
T1JTX0ZJTEV9ICR7REVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9
CisgICAgICAgICR7SVNPX1NVQlNQQUNFU19IRUFERVJfRklMRX0gJHtXSU5ET1dfQ09OU1RSVUNU
T1JTX0ZJTEV9ICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9ICR7REVESUNB
VEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgUFBfRVhUUkFfQVJH
UworICAgICAgICAtLWlzb1N1YnNwYWNlc0hlYWRlckZpbGUgJHtJU09fU1VCU1BBQ0VTX0hFQURF
Ul9GSUxFfQogICAgICAgICAtLXdpbmRvd0NvbnN0cnVjdG9yc0ZpbGUgJHtXSU5ET1dfQ09OU1RS
VUNUT1JTX0ZJTEV9CiAgICAgICAgIC0td29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxl
ICR7V09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CiAgICAgICAgIC0tZGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICR7REVESUNBVEVEV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEV9CkBAIC0xODIwLDE4ICsxODIyLDYgQEAgR0VORVJB
VEVfQklORElOR1MoV2ViQ29yZUJpbmRpbmdzCiAgICAgICAgIC0td29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzRmlsZSAke1dPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0K
ICAgICAgICAgLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJHtQQUlO
VFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRX0pCiAKLUdFTkVSQVRFX0JJTkRJ
TkdTKFdlYkNvcmVUZXN0U3VwcG9ydEJpbmRpbmdzCi0gICAgT1VUUFVUX1NPVVJDRSBXZWJDb3Jl
VGVzdFN1cHBvcnRfU09VUkNFUwotICAgIElOUFVUX0ZJTEVTICR7V2ViQ29yZVRlc3RTdXBwb3J0
X0lETF9GSUxFU30KLSAgICBCQVNFX0RJUiAke1dFQkNPUkVfRElSfQotICAgIElETF9JTkNMVURF
UyAke1dlYkNvcmVfSURMX0lOQ0xVREVTfSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0g
JHtXZWJDb3JlVGVzdFN1cHBvcnRfSURMX0lOQ0xVREVTfQotICAgIEZFQVRVUkVTICR7RkVBVFVS
RV9ERUZJTkVTX0pBVkFTQ1JJUFR9Ci0gICAgREVTVElOQVRJT04gJHtXZWJDb3JlX0RFUklWRURf
U09VUkNFU19ESVJ9Ci0gICAgR0VORVJBVE9SIEpTKQotCi0jIFdlYkNvcmVUZXN0U3VwcG9ydEJp
bmRpbmdzIG5lZWRzIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsCi1hZGRfZGVwZW5kZW5j
aWVzKFdlYkNvcmVUZXN0U3VwcG9ydEJpbmRpbmdzIFdlYkNvcmUpCi0KICMgV2ViQ29yZSBKUyBC
dWlsdGlucwogCiBzZXQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCkBAIC0xOTkwLDcgKzE5ODAs
NyBAQCBpZiAoTVNWQykKIGVuZGlmICgpCiAKIGFkZF9saWJyYXJ5KFdlYkNvcmVUZXN0U3VwcG9y
dCAke1dlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJZX1RZUEV9ICR7V2ViQ29yZVRlc3RTdXBwb3J0
X1NPVVJDRVN9KQotYWRkX2RlcGVuZGVuY2llcyhXZWJDb3JlVGVzdFN1cHBvcnQgV2ViQ29yZSBX
ZWJDb3JlVGVzdFN1cHBvcnRCaW5kaW5ncykKK2FkZF9kZXBlbmRlbmNpZXMoV2ViQ29yZVRlc3RT
dXBwb3J0IFdlYkNvcmUpCiB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhXZWJDb3JlVGVzdFN1
cHBvcnQgUFJJVkFURSAiQlVJTERJTkdfV2ViQ29yZVRlc3RTdXBwb3J0IikKIHRhcmdldF9pbmNs
dWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVUZXN0U3VwcG9ydCBQVUJMSUMgJHtXZWJDb3JlVGVzdFN1
cHBvcnRfSU5DTFVERV9ESVJFQ1RPUklFU30gJHtXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9
KQogdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVRlc3RTdXBwb3J0IFBSSVZBVEUg
JHtXZWJDb3JlVGVzdFN1cHBvcnRfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfSAke1dlYkNv
cmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggNjBhMTEzMTNhMGQ0MGRkOGJlZjI0
ZmU3MWQ3NTJjMTYxMzVkNzJlNC4uNzBjZmFlYTczMTEwZDRjY2YxMzE1ZWYyOGZhMDE4ZTc2NDM2
YjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKQEAgLTksNiArOSw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NTU1ZhbHVlS2V5d29yZHMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ291bnRRdWV1aW5nU3RyYXRl
Z3lCdWlsdGlucy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9ET01Jc29TdWJzcGFjZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDViYTI2YjgwODJkZTY4OTAxYzJlMTI2NjJmNjQ3NGE4NjcwNzI0MjMuLjRkOWVkYWYx
YTY2YjZkYWQ5NTcxNTBhYmM2NDlkM2VlZDIxZjc2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTcxOCw2ICsxNzE4LDcgQEAgSlNfQklORElOR1NfU0NSSVBUUyA9ICQoQ09N
TU9OX0JJTkRJTkdTX1NDUklQVFMpIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckoKIAog
U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSA9IFN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy50
eHQKIFNVUFBMRU1FTlRBTF9NQUtFRklMRV9ERVBTID0gU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
LmRlcAorSVNPX1NVQlNQQUNFU19IRUFERVJfRklMRSA9IERPTUlzb1N1YnNwYWNlcy5oCiBXSU5E
T1dfQ09OU1RSVUNUT1JTX0ZJTEUgPSBET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCiBXT1JLRVJH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3JzLmlkbAogREVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgPSBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKQEAgLTE3MzgsNiArMTcz
OSw3IEBAIGVuZGVmCiBJRExfSU5URVJNRURJQVRFX0ZJTEVTID0gXAogICAgICQoU1VQUExFTUVO
VEFMX01BS0VGSUxFX0RFUFMpIFwKICAgICAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUp
IFwKKyAgICAkKElTT19TVUJTUEFDRVNfSEVBREVSX0ZJTEUpIFwKICAgICAkKFdJTkRPV19DT05T
VFJVQ1RPUlNfRklMRSkgXAogICAgICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEUpIFwKICAgICAkKERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxF
KSBcCkBAIC0xNzQ5LDcgKzE3NTEsNyBAQCBJRExfSU5URVJNRURJQVRFX1BBVFRFUk5TID0gJChz
dWJzdCAuLCUsJChJRExfSU5URVJNRURJQVRFX0ZJTEVTKSkKIAogJChJRExfSU5URVJNRURJQVRF
X1BBVFRFUk5TKSA6ICQoUFJFUFJPQ0VTU19JRExTX1NDUklQVFMpICQoSlNfQklORElOR19JRExT
KSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUykgRGVyaXZlZFNvdXJjZXMubWFrZQogCSQoZm9y
ZWFjaCBmLCQoSlNfQklORElOR19JRExTKSxAZWNobyAkKGYpPj4kKElETF9GSUxFU19UTVApJChO
TCkpCi0JJChQRVJMKSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FORF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9O
QUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pBVkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURM
X0ZJTEVTX1RNUCkgLS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9E
RVBFTkRFTkNZX0ZJTEUpIC0td2luZG93Q29uc3RydWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJV
Q1RPUlNfRklMRSkgLS13b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJH
TE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUgJChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RP
UlNfRklMRSkgLS1zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VS
VklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEUpIC0tcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JL
TEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVE
ZXBzICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RFUFMpCisJJChQRVJMKSAkKFdlYkNvcmUpL2Jp
bmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIC0tZGVmaW5lcyAiJChGRUFUVVJFX0FO
RF9QTEFURk9STV9ERUZJTkVTKSAkKEFERElUSU9OQUxfSURMX0RFRklORVMpIExBTkdVQUdFX0pB
VkFTQ1JJUFQiIC0taWRsRmlsZXNMaXN0ICQoSURMX0ZJTEVTX1RNUCkgLS1zdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZSAkKFNVUFBMRU1FTlRBTF9ERVBFTkRFTkNZX0ZJTEUpIC0taXNvU3Vic3Bh
Y2VzSGVhZGVyRmlsZSAkKElTT19TVUJTUEFDRVNfSEVBREVSX0ZJTEUpIC0td2luZG93Q29uc3Ry
dWN0b3JzRmlsZSAkKFdJTkRPV19DT05TVFJVQ1RPUlNfRklMRSkgLS13b3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkg
LS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChERURJQ0FURURX
T1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlICQoU0VSVklDRVdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAtLXdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChXT1JLTEVU
R0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0tcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNGaWxlICQoUEFJTlRXT1JLTEVUR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEUpIC0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzICQoU1VQUExFTUVOVEFMX01BS0VGSUxFX0RF
UFMpCiAJJChERUxFVEUpICQoSURMX0ZJTEVTX1RNUCkKIAogSlMlLmNwcCBKUyUuaCA6ICUuaWRs
ICQoSlNfQklORElOR1NfU0NSSVBUUykgJChJRExfQVRUUklCVVRFU19GSUxFKSAkKElETF9JTlRF
Uk1FRElBVEVfRklMRVMpICQoUExBVEZPUk1fRkVBVFVSRV9ERUZJTkVTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKaW5kZXggOGQwMjc2NTBmMmExY2VlYzg4
MDE0YWM3NjU5NGUzYzM4YjFkMjBkNy4uMTM5OTY3NjUzYmM5NzJiNTIwZDZmYTgyMjRkNWMwM2Mz
NjQ1ZWZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3Bw
CkBAIC00NCwxMSArNDQsNiBAQCBKU0RPTU9iamVjdDo6SlNET01PYmplY3QoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsTwogICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgfHwgZ2xvYmFsT2JqZWN0LmNsYXNzSW5mbyhnbG9iYWxP
YmplY3Qudm0oKSkgPT0gSlNSZW1vdGVET01XaW5kb3c6OmluZm8oKSk7CiB9CiAKLUpTQzo6Q29t
cGxldGVTdWJzcGFjZSogb3V0cHV0Q29uc3RyYWludFN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQot
ewotICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KS0+b3V0cHV0Q29uc3RyYWludFNwYWNlKCk7Ci19Ci0KIEpTQzo6SlNWYWx1ZSBjbG9uZUFjcm9z
c1dvcmxkcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBK
U0RPTU9iamVjdCYgb3duZXIsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoaXNXb3Js
ZENvbXBhdGlibGUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAppbmRleCBhMTQxNjBmZTAxMDYyMDNiMmY0YmE5MTcz
MWZiNjg3N2Y1NGNhOWM0Li5iNTMxMjM4NzRlMGI2OGNiOTExOTAyZjUwMTJhODFhNmE4NGNhMWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaApAQCAtNjYsOCAr
NjYsNiBAQCBjbGFzcyBKU0RPTU9iamVjdCA6IHB1YmxpYyBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKICAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTU9iamVjdChKU0M6OlN0cnVjdHVyZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QmKTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIEpTQzo6Q29tcGxldGVT
dWJzcGFjZSogb3V0cHV0Q29uc3RyYWludFN1YnNwYWNlRm9yKEpTQzo6Vk0mKTsKLQogdGVtcGxh
dGU8dHlwZW5hbWUgSW1wbGVtZW50YXRpb25DbGFzcz4gY2xhc3MgSlNET01XcmFwcGVyIDogcHVi
bGljIEpTRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NT2JqZWN0IEJhc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEu
Y3BwCmluZGV4IDczNzYyMmE5MDZhM2VhNzgzZGRjMDRlNjJmN2VkMGI2NmJlYzMwOWIuLjJkODBh
ZDQ2ZTg4NmUxODg3YjVkOGM4MmFhYzEwNmY0MzBjOGM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogCiAjaW5jbHVkZSAiRE9NR0NP
dXRwdXRDb25zdHJhaW50LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNl
LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTc3LDE4ICs3OCw3IEBAIEpTVk1DbGll
bnREYXRhOjpKU1ZNQ2xpZW50RGF0YShWTSYgdm0pCiAgICAgLCBtX3J1bnRpbWVNZXRob2RTcGFj
ZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBS
dW50aW1lTWV0aG9kKSAvLyBIYXNoOjB4ZjcwYzRhODUKICAgICAsIG1fcnVudGltZU9iamVjdFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCkKICAgICAsIG1fd2luZG93UHJv
eHlTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX3dpbmRvd1Byb3h5SGVhcENlbGxU
eXBlLmdldCgpLCBKU1dpbmRvd1Byb3h5KQotICAgICwgbV9zdWJzcGFjZUZvckpTRE9NV2luZG93
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNET01XaW5kb3cu
Z2V0KCksIEpTRE9NV2luZG93KQotICAgICwgbV9zdWJzcGFjZUZvckpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmdldCgpLCBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKQotICAgICwgbV9zdWJzcGFjZUZvckpTUmVtb3RlRE9NV2luZG93IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNSZW1vdGVET01XaW5kb3cuZ2V0KCks
IEpTUmVtb3RlRE9NV2luZG93KQotICAgICwgbV9zdWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2Nv
cGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtlckds
b2JhbFNjb3BlLmdldCgpLCBKU1dvcmtlckdsb2JhbFNjb3BlKQotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICAsIG1fc3Vic3BhY2VGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmdldCgpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkKLSNlbmRpZgot
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgICwgbV9zdWJzcGFjZUZvckpTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5
cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmdldCgpLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlKQotICAgICwgbV9zdWJzcGFjZUZvckpTV29ya2xldEdsb2JhbFNjb3BlIElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUu
Z2V0KCksIEpTV29ya2xldEdsb2JhbFNjb3BlKQotI2VuZGlmCi0gICAgLCBtX291dHB1dENvbnN0
cmFpbnRTcGFjZSgiV2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9j
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NzcyNGMyZTQKKyAgICAsIG1fc3Vic3BhY2VzKG1h
a2VVbmlxdWU8RE9NSXNvU3Vic3BhY2VzPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgKaW5kZXggM2VkMjFlNDMwYmIwZTk5
ZGVjOTkzMTBiODAwNDMyNTJkYTc5Mzg4OS4uZDRlOTJmNjNlODhkZjY5OWY5NGIyN2U1MWI2NTJh
YzM4NDUxMzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaApAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIERPTUlzb1N1YnNwYWNlczsKKwogY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMg
SlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNWTUNsaWVu
dERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgVk1Xb3Js
ZEl0ZXJhdG9yOwpAQCAtNjcsMzcgKzY5LDE3IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVi
bGljIEpTQzo6Vk06OkNsaWVudERhdGEgewogICAgIEpTQzo6SXNvU3Vic3BhY2UmIHJ1bnRpbWVP
YmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fcnVudGltZU9iamVjdFNwYWNlOyB9CiAgICAgSlNDOjpJ
c29TdWJzcGFjZSYgd2luZG93UHJveHlTcGFjZSgpIHsgcmV0dXJuIG1fd2luZG93UHJveHlTcGFj
ZTsgfQogICAgIAotICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSYgb3V0cHV0Q29uc3RyYWludFNw
YWNlKCkgeyByZXR1cm4gbV9vdXRwdXRDb25zdHJhaW50U3BhY2U7IH0KKyAgICBWZWN0b3I8SlND
OjpJc29TdWJzcGFjZSo+IG91dHB1dENvbnN0cmFpbnRTcGFjZXMoKSB7IHJldHVybiBtX291dHB1
dENvbnN0cmFpbnRTcGFjZXM7IH0KIAotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9y
SlNET01XaW5kb3coKSB7IHJldHVybiBtX3N1YnNwYWNlRm9ySlNET01XaW5kb3c7IH0KLSAgICBK
U0M6Oklzb1N1YnNwYWNlJiBzdWJzcGFjZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUo
KSB7IHJldHVybiBtX3N1YnNwYWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsgfQot
ICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNSZW1vdGVET01XaW5kb3coKSB7IHJl
dHVybiBtX3N1YnNwYWNlRm9ySlNSZW1vdGVET01XaW5kb3c7IH0KLSAgICBKU0M6Oklzb1N1YnNw
YWNlJiBzdWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUoKSB7IHJldHVybiBtX3N1YnNwYWNl
Rm9ySlNXb3JrZXJHbG9iYWxTY29wZTsgfQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBKU0M6Oklzb1N1YnNwYWNlJiBzdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KCkgeyByZXR1cm4gbV9zdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOyB9Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBKU0M6Oklzb1N1YnNwYWNl
JiBzdWJzcGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSB7IHJldHVybiBtX3N1YnNw
YWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsgfQotICAgIEpTQzo6SXNvU3Vic3BhY2Um
IHN1YnNwYWNlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUoKSB7IHJldHVybiBtX3N1YnNwYWNlRm9y
SlNXb3JrbGV0R2xvYmFsU2NvcGU7IH0KLSNlbmRpZgotICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoT3V0cHV0Q29uc3RyYWludFNwYWNlKGNvbnN0IEZ1
bmMmIGZ1bmMpCiAgICAgewotICAgICAgICBmdW5jKG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKTsK
LSAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9ySlNET01XaW5kb3cpOwotICAgICAgICBmdW5jKG1f
c3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTsKLSAgICAgICAgZnVuYyht
X3N1YnNwYWNlRm9ySlNSZW1vdGVET01XaW5kb3cpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VG
b3JKU1dvcmtlckdsb2JhbFNjb3BlKTsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
ICAgIGZ1bmMobV9zdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKLSNlbmRp
ZgotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgICAgICBmdW5jKG1fc3Vic3BhY2VG
b3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlKTsKLSAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9y
SlNXb3JrbGV0R2xvYmFsU2NvcGUpOwotI2VuZGlmCisgICAgICAgIGZvciAoYXV0byogc3BhY2Ug
OiBtX291dHB1dENvbnN0cmFpbnRTcGFjZXMpCisgICAgICAgICAgICBmdW5jKCpzcGFjZSk7CiAg
ICAgfQogCisgICAgRE9NSXNvU3Vic3BhY2VzJiBzdWJzcGFjZXMoKSB7IHJldHVybiAqbV9zdWJz
cGFjZXMuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBIYXNoU2V0PERPTVdyYXBwZXJXb3JsZCo+
IG1fd29ybGRTZXQ7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9ub3JtYWxXb3JsZDsK
QEAgLTEwOCw3ICs5MCw3IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVibGljIEpTQzo6Vk06
OkNsaWVudERhdGEgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9y
dW50aW1lQXJyYXlIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENl
bGxUeXBlPiBtX3J1bnRpbWVPYmplY3RIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEpTQzo6SGVhcENlbGxUeXBlPiBtX3dpbmRvd1Byb3h5SGVhcENlbGxUeXBlOwotCitwdWJsaWM6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZv
ckpTRE9NV2luZG93OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9o
ZWFwQ2VsbFR5cGVGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdp
bmRvdzsKQEAgLTEyMCw3ICsxMDIsNyBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1YmxpYyBK
U0M6OlZNOjpDbGllbnREYXRhIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5
cGU+IG1faGVhcENlbGxUeXBlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxUeXBlRm9ySlNXb3JrbGV0
R2xvYmFsU2NvcGU7CiAjZW5kaWYKLQorcHJpdmF0ZToKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1f
ZG9tQnVpbHRpbkNvbnN0cnVjdG9yU3BhY2U7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBtX2RvbUNv
bnN0cnVjdG9yU3BhY2U7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBtX2RvbVdpbmRvd1Byb3BlcnRp
ZXNTcGFjZTsKQEAgLTEyOCwyMCArMTEwLDggQEAgY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJs
aWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBtX3J1bnRpbWVN
ZXRob2RTcGFjZTsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVudGltZU9iamVjdFNwYWNlOwog
ICAgIEpTQzo6SXNvU3Vic3BhY2UgbV93aW5kb3dQcm94eVNwYWNlOwotCi0gICAgSlNDOjpJc29T
dWJzcGFjZSBtX3N1YnNwYWNlRm9ySlNET01XaW5kb3c7Ci0gICAgSlNDOjpJc29TdWJzcGFjZSBt
X3N1YnNwYWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTsKLSAgICBKU0M6Oklzb1N1
YnNwYWNlIG1fc3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdzsKLSAgICBKU0M6Oklzb1N1YnNw
YWNlIG1fc3Vic3BhY2VGb3JKU1dvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTsKLSNlbmRpZgotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAg
IEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7
Ci0gICAgSlNDOjpJc29TdWJzcGFjZSBtX3N1YnNwYWNlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGU7
Ci0jZW5kaWYKLSAgICAKLSAgICBKU0M6OkNvbXBsZXRlU3Vic3BhY2UgbV9vdXRwdXRDb25zdHJh
aW50U3BhY2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPERPTUlzb1N1YnNwYWNlcz4gbV9zdWJzcGFj
ZXM7CisgICAgVmVjdG9yPEpTQzo6SXNvU3Vic3BhY2UqPiBtX291dHB1dENvbnN0cmFpbnRTcGFj
ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGI3Y2QxZmNhNDM5OWNl
ODk5NmFhYTZlY2E3OTUwNzM2YzA1MzIzOWUuLjBhYThmZDNjOGNjMjI1ZGFhMWM1OWUxNTA1ZmZh
ZDM3Yzk5MjI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNzk1LDEyICsyNzk1LDEzIEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogICAgICAgICB9CiAgICAgfQogCi0gICAgIyBGSVhNRTogV2UgcHV0IHRoaXMgdW5jb25k
aXRpb25hbGx5IHRvIHB1dCBhbGwgdGhlIFdlYkNvcmUgSlMgd3JhcHBlcnMgaW4gZWFjaCBJc29T
dWJzcGFjZS4KLSAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDUxMDcKLSAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOyB9XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTtcbiIpOwotICAgIH0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSlcbiIpOworICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAge1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSlcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjtcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBzdWJz
cGFjZUZvckltcGwodm0pO1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG4i
KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pO1xuIik7CiAKICAgICAjIHZpc2l0IGZ1bmN0
aW9uCiAgICAgaWYgKCRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKQEAgLTI4MjEsOSArMjgyMiw2IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgIyBwcm9ncmFtIHJlc3VtZWQgc2luY2Ug
dGhlIGxhc3QgY2FsbCB0byB2aXNpdENoaWxkcmVuIG9yIHZpc2l0T3V0cHV0Q29uc3RyYWludHMu
IFNpbmNlCiAgICAgICAgICAgICAjIHRoaXMganVzdCBjYWxscyB2aXNpdEFkZGl0aW9uYWxDaGls
ZHJlbiwgeW91IHVzdWFsbHkgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzLgogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCB2aXNpdE91dHB1dENv
bnN0cmFpbnRzKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTtcbiIpOwotICAgICAgICAgICAg
aWYgKCFJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VB
Y2Nlc3M+IHN0YXRpYyBKU0M6OkNvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKSB7IHJldHVybiBvdXRwdXRDb25zdHJhaW50U3Vic3BhY2VGb3Iodm0pOyB9XG4iKTsKLSAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNDY2MiwxMyArNDY2MCwzMyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9u
KCRpbnRlcmZhY2UpIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOwogICAgIEdlbmVyYXRlU2VyaWFs
aXplckRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgaWYgJGludGVyZmFjZS0+c2Vy
aWFsaXphYmxlOwogCisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUlzb1N1YnNwYWNlcy5oIik7
CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOworICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4iKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpJc29TdWJz
cGFjZSogJHtjbGFzc05hbWV9OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pXG4iKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIHNwYWNlcyA9
IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0u
Z2V0KCkpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHNwYWNl
O1xuIik7CiAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU0M6Oklzb1N1YnNwYWNlKiAke2NsYXNzTmFtZX06OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPnN1YnNwYWNlRm9yJHtjbGFzc05hbWV9
KCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVy
ZmFjZU5hbWV9ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgY2xpZW50RGF0YS5tX2hlYXBDZWxsVHlwZUZvciR7Y2xhc3NOYW1lfS5nZXQoKSwgJHtj
bGFzc05hbWV9KTtcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgJHtjbGFzc05hbWV9PilcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGVsc2VcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgJHtjbGFzc05hbWV9KTtcbiIpOworICAgIH0KKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZh
Y2VOYW1lfS5nZXQoKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKFwidW5yZWFjaGFibGUtY29kZVwiKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRl
bnQsICJJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJ0YXV0b2xvZ2ljYWwtY29tcGFyZVwiKVxuIik7
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCYke2NsYXNzTmFtZX06OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKVxu
Iik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29u
c3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIklHTk9SRV9XQVJOSU5HU19FTkRcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiSUdO
T1JFX1dBUk5JTkdTX0VORFxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHNwYWNlO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAgaWYg
KCRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lk
ICR7Y2xhc3NOYW1lfTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJl
cHJvY2Vzcy1pZGxzLnBsCmluZGV4IGExNDRhNTFiODkxMGM5OGE2OTI4MzU3OTNhMjJlNTlmNDQ2
NjBmMzguLjQ4NTJjNTM1NjNkZjk4Y2RlOTJkMDBmYWQzY2YxYzQ0ZjZlMDYyMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBA
IC0zMyw2ICszMyw3IEBACiBteSAkaWRsRmlsZXNMaXN0OwogbXkgJHRlc3RHbG9iYWxDb250ZXh0
TmFtZTsKIG15ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZTsKK215ICRpc29TdWJzcGFjZXNI
ZWFkZXJGaWxlOwogbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlOwogbXkgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZTsKQEAgLTQ3LDYgKzQ4LDcgQEAKICAgICAgICAgICAgJ2lkbEZpbGVzTGlz
dD1zJyA9PiBcJGlkbEZpbGVzTGlzdCwKICAgICAgICAgICAgJ3Rlc3RHbG9iYWxDb250ZXh0TmFt
ZT1zJyA9PiBcJHRlc3RHbG9iYWxDb250ZXh0TmFtZSwKICAgICAgICAgICAgJ3N1cHBsZW1lbnRh
bERlcGVuZGVuY3lGaWxlPXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUsCisgICAg
ICAgICAgICdpc29TdWJzcGFjZXNIZWFkZXJGaWxlPXMnID0+IFwkaXNvU3Vic3BhY2VzSGVhZGVy
RmlsZSwKICAgICAgICAgICAgJ3dpbmRvd0NvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCR3aW5kb3dD
b25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlPXMnID0+IFwkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAg
ICAgICAnZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwk
ZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLApAQCAtNjgsNiArNzAs
NyBAQAogZGllKCdNdXN0IHNwZWNpZnkgdGhlIGZpbGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAt
LWlkbEZpbGVzTGlzdC4nKSB1bmxlc3MgZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKIAogJHN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZSk7CiskaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSA9IEN5Z3dpblBhdGhJZk5l
ZWRlZCgkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSk7CiAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9
IEN5Z3dpblBhdGhJZk5lZWRlZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcnNGaWxlKTsKQEAgLTkzLDYgKzk2LDIxIEBACiBteSAkcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkdGVzdEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JzQ29kZSA9ICIiOwogCitteSAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSA9IDw8
RU5EOworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERP
TUlzb1N1YnNwYWNlcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRE9NSXNvU3Vic3BhY2Vz
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChET01Jc29TdWJzcGFjZXMpOworcHVibGlj
OgorICAgIERPTUlzb1N1YnNwYWNlcygpID0gZGVmYXVsdDsKK0VORAorCiAjIEdldCByaWQgb2Yg
ZHVwbGljYXRlcyBpbiBpZGxGaWxlcyBhcnJheS4KIG15ICVpZGxGaWxlSGFzaCA9IG1hcCB7ICRf
LCAxIH0gQGlkbEZpbGVzOwogCkBAIC0xMzQsNiArMTUyLDEwIEBACiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBpZiAoIWlzQ2FsbGJhY2tJbnRlcmZhY2VGcm9tSURMKCRpZGxGaWxlQ29udGVudHMp
KSB7CisgICAgICAgICRpc29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICIgICAgc3RkOjp1bmlxdWVf
cHRyPEpTQzo6SXNvU3Vic3BhY2U+IG1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9O1xuIgor
ICAgIH0KKwogICAgICMgRm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQgaW4gYSBn
aXZlbiBFQ01BU2NyaXB0IGdsb2JhbCBlbnZpcm9ubWVudCBhbmQ6CiAgICAgIyAtIGlzIGEgY2Fs
bGJhY2sgaW50ZXJmYWNlIHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwgb3IKICAg
ICAjIC0gaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdp
dGggdGhlIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhIGNvcnJlc3Bv
bmRpbmcKQEAgLTE4OSw2ICsyMTEsMTIgQEAKICAgICBkZWxldGUgJHN1cHBsZW1lbnRhbHN7JGlk
bEZpbGV9OwogfQogCitpZiAoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUpIHsKKyAgICAkaXNvU3Vi
c3BhY2VzSGVhZGVyQ29kZSAuPSAifTtcbiI7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUg
Lj0gIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiI7CisgICAgV3JpdGVGaWxlSWZDaGFuZ2VkKCRp
c29TdWJzcGFjZXNIZWFkZXJGaWxlLCAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSk7Cit9CisKICMg
T3V0cHV0cyB0aGUgZGVwZW5kZW5jeS4KICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBk
ZXBlbmRlbmN5IGZpbGU6CiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCmluZGV4IGZjMzliMjI1ZWI2
YTg5ZTc3Y2Y0NTZjZmRkOGM1Y2NiNWMwMzI1YTYuLjc1ZWYxOGNiNDM3YzUxNTAzZTdlZTgzNzA5
ZWE4NTQ2ZTVjNDA5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCkBAIC0yMiwxNCArMjIsMTgg
QEAKICNpbmNsdWRlICJKU0ludGVyZmFjZU5hbWUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTE2MSw2ICsxNjUsMjYgQEAgYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTSW50ZXJmYWNlTmFtZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJmYWNlTmFtZS5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29m
X3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNJbnRlcmZhY2VOYW1lPikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JJbnRlcmZhY2VOYW1lID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU0ludGVyZmFjZU5hbWUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JJbnRlcmZhY2VOYW1lID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNJbnRl
cmZhY2VOYW1lKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJm
YWNlTmFtZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAo
JkpTSW50ZXJmYWNlTmFtZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTSW50ZXJmYWNlTmFt
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJ
bnRlcmZhY2VOYW1lLmgKaW5kZXggNTA2OTEzZGEzZmY0NjlmMzEzODAyOTJhZjgxMjQzMmYyYWRi
NDcwMS4uMWYzZDE3ZjVmNmZiMmVjOGNkMmNmZTFlZDYzYjk3MjYyMzMyZWRiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVy
ZmFjZU5hbWUuaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNJbnRlcmZhY2VOYW1lIDogcHVi
bGljIEpTRE9NV3JhcHBlcjxJbnRlcmZhY2VOYW1lPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25j
dXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1
YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggOWY4MGFl
MWQ1YmJlMTIzOGVkNmFjZjgzMzQxYzQ0YTUxNmEwMjhhOS4uOTY1ODJhMzQ5MWJkNzE5Mzc2ZTlj
ZmNhNmE1YWUzYTQ2MjAyMjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJKU01hcExpa2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKQEAgLTMyLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgpAQCAtMzU0LDYgKzM1OCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBs
ZQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkRlbGV0ZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAiZGVsZXRlIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTTWFwTGlrZTo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yTWFwTGlrZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNN
YXBMaWtlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JNYXBMaWtlID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU01hcExpa2UpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNYXBM
aWtlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yTWFwTGlrZS5nZXQo
KTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTTWFwTGlrZTo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTTWFwTGlrZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBj
ZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNYXBMaWtlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmgKaW5kZXggOGVlZWMzZDFiMmRiMzAwMjc3NTU4
MDZiN2IwNThmZDQ1ZjBjMGNiMC4uNDlhMDBhM2Y4MDU4OTkxZGQxMGVlMTFhODljNzgyOTFiOThm
MDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU01hcExpa2UuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNNYXBMaWtlIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxNYXBMaWtlPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNNYXBMaWtlKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8TWFwTGlrZT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9u
bHlNYXBMaWtlLmNwcAppbmRleCBkOTQzMTY3NzhkYzIyYzEzZTI0NGRiNTViY2MwMzJlM2M4M2U3
MmZhLi4xNWI5MDk4ZDhiZjQwY2FjODFjNTAwNjUwNDRmMzY4MDMxMjE1MDgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExp
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Jl
YWRPbmx5TWFwTGlrZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1JlYWRPbmx5
TWFwTGlrZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgpAQCAtMzIsMTAgKzMzLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CkBAIC0yOTgsNiArMzAyLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNHbG9iYWxPCiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
KmNhbGxGcmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNSZWFkT25s
eU1hcExpa2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlrZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNSZWFkT25seU1hcExpa2U+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNSZWFkT25seU1hcExpa2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JSZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Jl
YWRPbmx5TWFwTGlrZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclJl
YWRPbmx5TWFwTGlrZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAg
ICBpZiAoJkpTUmVhZE9ubHlNYXBMaWtlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNSZWFk
T25seU1hcExpa2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUmVhZE9ubHlNYXBMaWtl
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNSZWFkT25seU1hcExpa2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5oCmluZGV4IDI2NDA3OTJlYzAwYTJkZjNlODEw
NTIxNDU4OTdiNzQwODY2NDAyMWEuLjIyZDMwYmU2OTc1ZjIyZmFjNzg4MzYxZDU5MzEwZDhhN2Q2
Njg5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1JlYWRPbmx5TWFwTGlrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBK
U1JlYWRPbmx5TWFwTGlrZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8UmVhZE9ubHlNYXBMaWtlPiB7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNSZWFkT25seU1hcExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxSZWFkT25seU1hcExpa2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlr
ZS5jcHAKaW5kZXggNDVjMmRkZGM1YjFhNjIwZDA4MjVlNjkyZTk0MWQ1NTdiZjhjMzEyMS4uMTM2
NDYzNGVhNzg5OTMxODc3NjdhMDUyNjg3OTE4YTA3M2M1MzlkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seVNl
dExpa2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNSZWFkT25seVNldExpa2Uu
aCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNw
YWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAg
LTMyLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkpTRE9NU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTI3OSw2ICsyODMsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5
U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE8KICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTUmVhZE9ubHlTZXRMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5U2V0TGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAiZm9yRWFjaCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1JlYWRPbmx5U2V0TGlrZTo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBz
cGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlTZXRMaWtlLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1JlYWRPbmx5U2V0TGlrZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yUmVhZE9ubHlTZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1JlYWRPbmx5U2V0TGlrZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclJlYWRPbmx5U2V0TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUmVhZE9ubHlTZXRM
aWtlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlTZXRM
aWtlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNS
ZWFkT25seVNldExpa2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1JlYWRPbmx5U2V0TGlr
ZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNSZWFkT25seVNldExpa2UqPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Jl
YWRPbmx5U2V0TGlrZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUmVhZE9ubHlTZXRMaWtlLmgKaW5kZXggZDMxMWJlNDBiMDdjNzg0NDNlODZlYjE3NTNiZWUz
MTA1MTc3NzVhYi4uN2Y1MDc3OWM4YzVjNWU4NzA5OGE5M2RlOTllODA0NmMxNTdjNDI2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9u
bHlTZXRMaWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUmVhZE9ubHlTZXRMaWtlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTUmVhZE9ubHlT
ZXRMaWtlIDogcHVibGljIEpTRE9NV3JhcHBlcjxSZWFkT25seVNldExpa2U+IHsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoK
ICAgICBKU1JlYWRPbmx5U2V0TGlrZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFJlYWRPbmx5U2V0TGlrZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExpa2UuY3BwCmluZGV4IGRhMjRhNWIwMzU5ZTY5
NzVlMzNiYTI5ZWZjNzQ3ZGMwNTQ3MmQyODYuLjE2MTRlYmUwZWViY2YwMzYxZTE3NjIwYzE1MWE2
MDFhN2QzOGU4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NldExpa2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNT
ZXRMaWtlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
LmgiCkBAIC0zMiwxMCArMzMsMTMgQEAKICNpbmNsdWRlICJKU0RPTVNldExpa2UuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0zMzMsNiArMzM3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNT
ZXRMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGUoSlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1NldExpa2U+OjpjYWxsPGpzU2V0TGlrZVByb3RvdHlwZUZ1bmN0
aW9uRGVsZXRlQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJkZWxldGUi
KTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNTZXRMaWtlOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JT
ZXRMaWtlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1NldExpa2U+KQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTU2V0TGlrZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldExpa2UpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXRMaWtlLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNTZXRMaWtlOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAg
ICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsK
K0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3Bh
Y2U7Cit9CisKIHZvaWQgSlNTZXRMaWtlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBB
bmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Nl
dExpa2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NldExpa2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NldExpa2UuaAppbmRleCAwYjJmZjQ1ODJjODhhNzczOTk0M2NmNGVlOGQwZDg4
NGM0ZjViNjQwLi5hMWExNTUzNjZmZjgwYjNkYzA1NTBkMWFiOTZlY2NiMzhlMjVhYmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlr
ZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1NldExpa2UgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFNldExpa2U+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1NldExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxTZXRMaWtlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKaW5kZXggMTI0Mzc5NjJjMmRiNDI2ODhmYzAyMmNlMDA0ZWJiNDhiMTFiYmNi
YS4uN2M1OGQ0M2ZjOTIwMDExMDhlNWRhOWRlMjhmYzk5MTI2YjZiZWUwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1
cml0eS5oIgpAQCAtMzUsOSArMzYsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CkBAIC0zMTAsNiArMzE0LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0CiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxs
PGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92
ZXJsb2FkRGlzcGF0Y2hlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEFjdGl2ZURPTU9iamVjdC5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0PikKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0QWN0aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RBY3RpdmVET01PYmplY3QpOworICAgIGVsc2UKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0QWN0aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEFjdGl2ZURPTU9iamVjdC5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0
dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMWY1NjYxNDdkZDhkYzk3MzY4YjJjZTkzODY1NGU2NTZh
MmZiMzRjMy4uMmZjOWYwNjg5YTQ3YjdiYzEzMWVlYTAzYzg4NTYzNTUyZGZlNTg3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0QWN0aXZlRE9NT2JqZWN0
PiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sg
fCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApp
bmRleCBkYzYxMGY3MGE0NzA4NTNkMTY5ZTdmN2QwYTM1MTNmNjllM2FkNWE0Li5jMGE4MTE3ZjAw
NWRhYjk3MGI2ZWE3OWZmMjA2MzhmN2RjMGY3ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM1LDkgKzM2LDEyIEBACiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTQ0Miw2ICs0NDYsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3QKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ0VSZWFjdGlvbnNO
b3ROZWVkZWQiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNw
YWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RDRVJlYWN0aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0Q0VSZWFjdGlvbnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0Q0VSZWFjdGlvbnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDRVJlYWN0aW9u
cyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9u
cy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dENFUmVhY3Rpb25zOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50
U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJO
SU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oY2VsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5oCmluZGV4IDk4OTNhMTI1YjhiMDAxOTFiMDMyOTc4NTNiZjMzYTE3
YTllMDg0ZmYuLjRmNjdhNzBjOTBmNTVhNDVkMjc2Y2FiMDBiZTY0Yzc5ZGU4ODFkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RDRVJlYWN0
aW9ucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENFUmVhY3Rpb25zPiB7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAg
ICAgSlNUZXN0Q0VSZWFjdGlvbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYs
IFJlZjxUZXN0Q0VSZWFjdGlvbnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIuY3BwCmluZGV4IDEzZDY5MGE5MzQ4ZGMzMWI5MTk0NDAzZDhhMmQzOWQyM2Vj
MTA1NDIuLmY2MTJhNDY1ZDFlYTgwMGE5NjRlOGUxNjRlMGI3NjM4YzkwZjNiODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEsOSArMzIsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTI2Niw2ICsyNzAsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmkKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYWxsPGpzVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNw
YWNlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgIGVsc2UKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFs
eXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuaAppbmRleCBlMDYwNWM5MDdjOWVkYTUyNmQ2NjJmNzA1ZTdiNDVmY2Ez
NDk4NjIzLi44M2MyMmNhYzJmZDFmZTU2ZTdlZDZkMzkyYmMyYWVkMzBjMTdlODMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBA
IGNsYXNzIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA5
OTU1ODRmNTliODQ3ZTg2YTkwM2RmMjExODE2ODY5N2I5MzgxN2JjLi5hMGI3NzdhMDM0MTA1M2Qy
MmU3MTJiMGM5NzQyOGE2NWY0MDdmMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJD
YWxsVHJhY2VyLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzgsOSArMzksMTIgQEAKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC01MDYsNiArNTEwLDI2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdE9wZXJhdGlvbldpdGhECiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RDYWxsVHJhY2VyPjo6Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0
T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnRCb2R5PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhbGxGcmFtZSwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0Q2FsbFRyYWNlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENh
bGxUcmFjZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxU
cmFjZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRy
YWNlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdENhbGxUcmFjZXI6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RDYWxsVHJhY2VyOjphbmFseXplSGVhcChKU0Nl
bGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RDYWxsVHJhY2VyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuaApp
bmRleCA5MmM2ZWU4ODE4NzkyYmZiNzg4MzlkZGQ3NzJiYTAzNTkzOWJjZjA1Li5hNzcyYmYzOWZj
NjQ3Njk3MzY4YzVhMzUxMDc5Yzc0NWU0N2FkNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmgKQEAg
LTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdENhbGxUcmFjZXIgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3RDYWxsVHJhY2VyPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q2FsbFRyYWNlcihKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDYWxsVHJhY2VyPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDY2ZjIwOGRhMzk1M2RlZjc2MGViMWU1ZWI5MDZkYzE2MjE4ZDBiYzUuLmEyMWMz
MzMyNmIyYTAxYmI2OThmYzljNTg4NzE1MTQ0MWE4MGZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjIsMTUgKzIy
LDE5IEBACiAjaW5jbHVkZSAiSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCIK
IAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQnVpbHRpbkNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5z
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtMTY3LDYgKzE3MSwyNiBAQCBib29sIHNldEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbAogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29k
ZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBp
ZiAoJkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9
CisKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmFuYWx5emVIZWFw
KEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oCmluZGV4IDI3MDM1ZTdiOThiM2UyMjAwMGJjMTEzZTAzN2E0YWM3MzNkOTdlYzQuLmNjNjYw
NDk1YjY2YzQ3MmIwOGFiODIxMTdiZDE5N2IxODk1ODU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC00OSw2ICs0OSwxMyBA
QCBjbGFzcyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdENsYXNzV2l0aEpTQgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAg
ICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZv
ckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwq
LCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBS
ZWY8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
aW5kZXggNmYzZTM0ZWM5MTRkODMzZGU2ZDhjMGUxNDQ5YTVhM2QwOTlkZWRkMS4uNzBmNzYyZjdj
Yzg5YzIyMDM5ZWMzOTQ5YzRhYzk4ZmFlYmI2YzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RET01KSVQuaCIKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkRP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0
LmgiCiAjaW5jbHVkZSAiRE9NSklUSURMVHlwZS5oIgpAQCAtNDIsOSArNDMsMTIgQEAKICNpbmNs
dWRlICJKU0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xMjg1LDYgKzEyODksMjYgQEAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0
aW9uR2V0RWxlbWVudHNCeU5hbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPE5vZGVMaXN0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1l
KSkpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RE9NSklUOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0RE9NSklULmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RET01KSVQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERPTUpJVCk7CisgICAgZWxzZQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RET01KSVQpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RE9NSklULmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAg
IGlmICgmSlNUZXN0RE9NSklUOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0RE9NSklU
OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihjZWxsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuaAppbmRleCA5YTVkMDVkNjZlMTU1MGVhNWM5NGEwZjg5MDBiNmRmNzdiODE5YzBjLi5jYmYz
M2MyY2EwZjFjODhlZGZhYWQ0MTM1YWJkZWFlZTZhZjVlMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCkBAIC00
OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RET01KSVQgOiBwdWJsaWMgSlNOb2RlIHsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0
RE9NSklUJiB3cmFwcGVkKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZy5jcHAKaW5kZXggZTYzMzIzOWRhZWZjZWYwNDA5YzhiNDYzYjg3MGY2NmI4MTA1ZDc1ZS4u
MDY3MTlhZTBjNTc1ZjQwYjhmMzk5MTVjODA4ZTZjYzExZGRiZTZkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dEVuYWJsZWRCeVNldHRpbmcuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM2LDYg
KzM3LDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMxMSw2ICsz
MTQsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXQKIAogI2VuZGlmCiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFi
bGVkQnlTZXR0aW5nLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxl
ZEJ5U2V0dGluZyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RFbmFibGVkQnlTZXR0aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFi
bGVkQnlTZXR0aW5nLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAg
IGlmICgmSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAm
SlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEu
b3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1Nf
RU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmc6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEVu
YWJsZWRCeVNldHRpbmcqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCmlu
ZGV4IDkwZjg2MDdhZDJkMjJiN2FiNTllZDNjMjIyN2JkMWRlY2UxNTM1MmIuLmM0NzYyMTk5MGRi
MzA5OGI5ODMzZWJiYjVjMTZlZDlhMjJiMWE4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyA6
IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEVuYWJsZWRCeVNldHRpbmc+IHsKICAgICB9CiAKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VB
Y2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQg
YW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0LmNwcAppbmRleCBhZThlYjkxZGY4YWZmMTNjNTM1OTQ1YWZmN2Q4ZDExZjA4
NzVjNjU4Li44NmFjNDk1MzAwNTAwMmYwZTQ4MzQwM2UxYjFkMzgwODVlNzk4MWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEZvckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs
dWRlICJKU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgpAQCAtMzUsNiArMzYsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtMjAwLDYgKzIwMywyNiBAQCBib29sIHNldEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0VGVzdFN1
Yk9iakVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IoSlNHbG9iYWxPYgogICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+OjpzZXQ8c2V0SlNUZXN0RW5hYmxl
ZEZvckNvbnRleHRUZXN0U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvclNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFN1Yk9i
akVuYWJsZWRGb3JDb250ZXh0Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0
KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JD
b250ZXh0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOwor
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRl
eHQuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0Nl
bGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29u
c3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05P
UkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaAppbmRleCBj
MDVmYzdiZTRmZDRmNTE4YzQxNzM2ZDZlNmY3OTVmMmEzNTdkOWRmLi41ZjhlOTQ2MTEyYzY3MjNl
ZDlkNzYxZDVhMmQzZGQ3NTdjNTZkMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRl
eHQuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQgOiBw
dWJsaWMgSlNET01XcmFwcGVyPFRlc3RFbmFibGVkRm9yQ29udGV4dD4gewogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAppbmRleCBmY2ZjMDQ1YWM2MDQ5NDY4NDQyMGYxMTkyMWE2MjYzMzkxOTYz
MTNkLi5jMWJkMzhkNjc4NDI4NjNkMGMyYWFiNjYyYWZjMmZlZGNkMWJkZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
LmgiCkBAIC0zMSw4ICszMiwxMSBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzE0LDYgKzMxOCwyNiBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjMoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsCiAKICNlbmRpZgogCitKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0
b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRD
b25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ip
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpT
VGVzdEV2ZW50Q29uc3RydWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlND
ZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENv
bnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdO
T1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5h
bHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA1ZTBi
ZWRkMmQzMTkwMzQwZWJjMjMyZmNjYzMwZjQ0Yjk4OTczZDljLi45YjEzZTZjNWE0ZDI1Njg1ODU4
ZDhkN2E3N2JjMGJkNzQ0ZmQ5ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgK
QEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IgOiBwdWJsaWMg
SlNFdmVudCB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0b3ImIHdyYXBwZWQoKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGM0Y2VkNTA5MDA2NGUzNjZlMzUyM2U5NjM2
ZGFjNDQ4YTM3ZmU4MDYuLjM3YmRkMjBjODBjNTRkNjFhMzc5ZDE3NmI0Mjk2Y2EwZWE2MTMyMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg
IkpTVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMyw5ICszNCwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1Niw2ICsyNjAsMjYgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0
aW9uSXRlbShKU0dsb2JhbE9iamUKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEV2ZW50
VGFyZ2V0Pjo6Y2FsbDxqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHk+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaXRlbSIpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3RFdmVudFRhcmdldDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50
VGFyZ2V0LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRh
cmdldD4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0RXZlbnRUYXJnZXQ6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAg
ICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwor
SUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFj
ZTsKK30KKwogdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXgg
OTUxZTQ2ZGU2NGFiMDI1YWFmMWZmMDhkMmFkM2MzOWUwYTRiMzdjYS4uMWZhZmI0NjA5OWIxNWQ0
NjJmZTM5ODU3NGIzMGZjZjg2NWQxZWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUz
LDYgKzUzLDEzIEBAIGNsYXNzIEpTVGVzdEV2ZW50VGFyZ2V0IDogcHVibGljIEpTRXZlbnRUYXJn
ZXQgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogICAgIFRlc3RFdmVudFRhcmdldCYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAppbmRleCBhYzc0MTEyZWVkNDE3YjY1NTI0YzIyYTU2Njc0MWE3OTQ2NGYxNWE5
Li42NWE0YWM2MjdhYzM1ZjAwMWRhMDNjNThhZWEwMjc3ZmVkZDAzMGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEV4Y2VwdGlvbi5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAt
MjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTg0LDYgKzE4OCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFeGNlcHRpb25OYW1lKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSgogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RXhjZXB0aW9uPjo6Z2V0PGpz
VGVzdEV4Y2VwdGlvbk5hbWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJuYW1lIik7CiB9CiAKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdEV4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlv
bi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFeGNlcHRpb24pOworICAgIGVsc2UKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0RXhjZXB0aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV4Y2VwdGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
KyAgICBpZiAoJkpTVGVzdEV4Y2VwdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlND
OjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVz
dEV4Y2VwdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKaW5kZXggOWMyNmRhYWQxMTZjNGZiNDhkNTBiZjU2MWIy
YmM0ODA5MTYwMzYyMi4uNjMxNjJkOTAyYjk1M2IxMDFkMThlMDcyYjFiODJlMjIzYTljYjNkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0RXhjZXB0
aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RXhjZXB0aW9uPiB7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNj
ZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNj
ZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFu
YWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0RXhjZXB0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdEV4Y2VwdGlvbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHAKaW5kZXggZWY2NjAzMzRlMzE4MWI2N2RlNTI0YjNkMzVkZjE2NTY0ZjY1NmFmNS4uY2FjZGU0
M2RkMTU0NTRlOTg2MjdjY2ZjZWQ3ODg4NmYwNDIyZjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE5NCw2ICsxOTgs
MjYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUFTZWNyZXRBdHRy
aWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWwKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+OjpnZXQ8anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUFT
ZWNyZXRBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhU2VjcmV0QXR0cmlidXRlIik7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklO
R1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCmluZGV4IDgw
YmQxODI4MzJhYmZkZDQ1ZTI3ODlmYzhjYjBlM2FjNTk1MGNiM2MuLjNhZWU0ZjM4M2NjZDRmMzU3
Nzg5MThjMjBjMTkyYWYzMDMzMGZkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3Rl
ZDoKICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QmLCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAppbmRleCA2NjYzM2IyNjkxYzY0OGFkYTZiZTFiYmZjMzZkMmEzNTAy
MjExZjI4Li5jNjhmZmQ4OGYwMzk2OTZjYzk3OTI2YzBjNjE5MTljNjQ3M2M2Yzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dEdsb2JhbE9iamVjdC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTEw
MCw2ICsxMDEsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjc3
OSw3ICsyNzgyLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjCiAKIEpTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEdsb2JhbE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewot
ICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
c3Vic3BhY2VGb3JKU1Rlc3RHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBjbGllbnREYXRhID0g
KnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYg
c3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCkpCisgICAgICAgIHJldHVy
biBzcGFjZTsKKyAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRh
Lm1faGVhcENlbGxUeXBlRm9ySlNUZXN0R2xvYmFsT2JqZWN0LmdldCgpLCBKU1Rlc3RHbG9iYWxP
YmplY3QpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFs
T2JqZWN0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgm
SlNUZXN0R2xvYmFsT2JqZWN0Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7CiB9CiAKIHZvaWQgSlNUZXN0R2xvYmFs
T2JqZWN0OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKaW5kZXggNThmNzM2ODQ3MmU5YjQ1NzljMGQxNTE0ZjQx
ZDFiZDQxNzM1NzJiZS4uZTJmYWEwM2FiYjQyODQ2MjRkMTU4NmYxYjk4NDk0MzllOTU0M2NhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaApAQCAtNDksNyArNDksMTIgQEAgY2xhc3MgSlNUZXN0
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0R2xvYmFsT2JqZWN0PiB7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pIHsgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCmluZGV4IGQ1YTlmYWI5ZTBiNjdmMTU2MDc5ZjA4ODcxYmRhZGUwNWUxYTIz
ZWIuLmFlOWVkZTA2M2Q4NTk0NmI0MTQ3ZWRjZmQzNDhjMTA2ZTZiODExMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIyLDE2ICsy
MiwyMCBAQAogI2luY2x1ZGUgIkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1Myw2
ICsyNTcsMjYgQEAgYm9vbCBzZXRKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAgICByZXR1cm4gcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7Cisg
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlm
ICgmSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FS
TklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCog
Y2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4IDFhMDIzYzdmMTVi
ZmMzNDgyN2Y4MDI1YjgwZGZlNGZmOGMwYjE2NjguLjc5NTNiMGVlOGViMzZiNDM1NTFmZDJkY2Mx
ZjY2ODU5Yjc0OWU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEluZGV4ZWRTZXR0ZXJOb0kKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzUwNGFlMjA5
YTUxYjI3NTA2ZDY5ZjQwNjA4MDMxNjJlN2RiNmRiNy4uNTNiOTVmNTdjODM1ZTZkY2VkNDQzNTIx
NGE1YTQxZDU0ZDNjMWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTIyLDE2ICsyMiwyMCBAQAogI2luY2x1ZGUg
IkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjUzLDYgKzI1NywyNiBAQCBi
b29sIHNldEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsRwogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYg
YW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCBlMzY4M2VmZGU2ZGJlM2I3
MzgwNjk5MTBlZDBmNmNiNWFhOGFiNWFkLi4xY2Q1NTY4ZmQ5ZDAzZWYxZTgwYmM3MzMzNmQ3YzVi
ZTE3N2UyNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5oCkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbmRleGVkU2V0
dAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpW
TSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
SlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0g
SlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAg
ICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA5NjlmYjAxZjFj
NTQwZDFiZDM0NTBmYWFiMGE2Y2Q0MDYxYzkwYjEwLi5lMTRiY2I5ZjM5MDk1MDFjMGI5MDA2ZTMw
NGE5NTQ0MmM0MGEwMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCkBAIC0zMCwxMCArMzEsMTMgQEAKICNpbmNsdWRl
ICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1By
b3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjg2LDYgKzI5MCwyNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllclByb3RvdHlwZUZ1bmN0aW9uSQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50
U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJO
SU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYg
YW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAppbmRleCAwNWE5MmY5ZGE3YWU4ZThlMzNmYjMxNGYy
MTY3MTI2OWVkYmI2MzM2Li5mZmYxNTI2YzU1YjZiY2IxOWEyYmJlZWExOTAyMDIwYWM0YjNiMjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5o
CkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbmRleGVkU2V0dGVyVwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwNzdh
OTFlMGUyNzJhYTg3M2QyMTFkYjExOTdhNWRhMDkwOGZlZjdmLi40YTUxZmM1OTM4NjhjZjA5N2I4
M2E1OWFlNmI5NWUxNDA1MDQwNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEludGVyZmFjZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKQEAgLTM4LDEwICszOSwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVu
dGFsLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMTExMCw2ICsxMTE0LDI2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKCiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJmb3JFYWNoIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVy
ZmFjZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SW50ZXJmYWNlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RJbnRlcmZhY2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0SW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNlKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQo
KTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEludGVy
ZmFjZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5E
CisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEludGVyZmFjZTo6YW5hbHl6ZUhl
YXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmgKaW5kZXggMzU2ODk3MTQ5NDRjYWI5OTZmNDk2ZTMwOWEwZGM3MjZjYmZhNGQ3Ni4uYTZlYTgz
YzZkNGFiZWE4OGNmM2ZjMzZmNzA5Yzc5ZDdmYmJkZmNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApA
QCAtNTMsNiArNTMsMTMgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1v
ZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAKICAgICAvLyBDdXN0b20gYXR0cmli
dXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5j
cHAKaW5kZXggNjVmMjE5MTk3ZjQyZmUwNTY2MzU5ZWI0NTFkOWY5NjBkYzMzYjkxNC4uMjJlZmVi
MDgzYWY4Yjc2MmNiYTEwOTc4ODMwMTk2YjYxNjI1ODk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAj
aW5jbHVkZSAiSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaCIKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1
ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTE4NCw2ICsxODgsMjYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEcKICAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Z2V0
PGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJyZWFkb25seSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgZWxzZQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlm
ICgmSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGll
bnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwog
dm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihjZWxsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKaW5kZXggYTBmMGNl
ZmMxYWM2MjUwMGNkNzc1MDM3MjFiN2YzYzQxMWY0MDU2Yy4uYjE5ZjM4NTUyMzA0NWJlNzQ1ZGM2
YzU2ODZjODNhYTdkMjI1NDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlTGVh
ZGluCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggMmE2Yjg2YWZkMDliYzIyYjc2
MmNlNzc2N2UwYTVkYjUzMDA1NzQ1Ny4uMzAxNzM2OWVkNTQwMTkzMzQ0MWQ0MzJhM2ZiYjg0ZWM4
NDgzMWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk
ZSAiSlNUZXN0SXRlcmFibGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjM5LDYgKzI0MywyNiBAQCBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2go
SlNDOjpKUwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0SXRlcmFibGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0SXRlcmFibGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0SXRlcmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJdGVyYWJs
ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5n
ZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEl0
ZXJhYmxlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2Vz
KCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19F
TkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SXRlcmFibGU6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEl0ZXJhYmxlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5o
CmluZGV4IGY3MjdiYTFiMDViMzg5NTk4ZWZkYzhlYWIxYjg0NmYwODk0YWZiMjUuLjBmMzc4MDY2
YzU0ZTNmMDBiZjQ5NmY1N2Y5ODBmOTFmMzE4MzIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCkBAIC00
OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RJdGVyYWJsZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8
VGVzdEl0ZXJhYmxlPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SXRlcmFibGUoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SXRlcmFibGU+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOGVjZTFmNDZiZjE1ZGIwZjMy
ZWFmNWVlYWRiOGJjYmRhYzJjODM0ZC4uOTRlMDdlZWJkZTM1MjU2OWIyNzgzOGZhYTdiMDM4ZDFi
Zjk3ZmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01CdWlsdGluQ29uc3RydWN0b3IuaCIKQEAgLTI4LDggKzI5LDExIEBACiAjaW5j
bHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAKQEAg
LTIzMyw1ICsyMzcsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3QKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FsbDxqc1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uQm9keT4oKmxl
eGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgIGVs
c2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ig
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRD
b25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCAwMGZhMjNiMjY5YzA1YWE3ZjNhNzIw
MjI1YmQ3NmYwNDc3MzM1OTE1Li5hNDI5YmNkMDk2YTE0MTBlYjkwZTliZGI3ZWU2MmQzMDk3ZTA1
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDYsNiAr
NDYsMTMgQEAgY2xhc3MgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01P
YmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKIAogICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIHRlc3RBdHRy
aWJ1dGVDdXN0b20oSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGI2ZGQwYjFiYzE1MjlhN2Q1YzI5
MGY4YjI5Yjc1ODc4YmQyYTY4NjMuLjQ0ZDJlOWJiMzRkMWU5ZjBhM2MzZWE0Yzc5NjU4ZmViNjgx
ZTkwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNr
cy5oIgpAQCAtMzEsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIkpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xOTQsNiArMTk4LDI2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyPjo6Y2FsbDxqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
Im1ldGhvZCIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjphbmFs
eXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCBmZjE4
ODBkODQ3NjZjY2QwZTVjMzBkN2Y5NzM0ZDQwMjllNmVmMWJjLi5mMzkwZDA1N2M4NTZjNTE2ZTA3
ZjllNjkwNmQzMGFkNmIzYzc3YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlCiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6
OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90
ZWN0ZWQ6CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAKaW5kZXggYjUzYjk4ZDQwNDMxNDVlMDgzMWMwMGFjNWM2NWUzNTI2NjA1MDI3
MS4uOTBhNjg0OGI5ZjRiYzAwMzQ0YmEyMWUzMDUyYzNkYjMwYTkyYjdiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMyMSw2ICszMjUsMjYgQEAg
Ym9vbCBzZXRKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWMKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNs
aWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVf
V0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhl
YXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmgKaW5kZXggZmRkN2IwM2VjMmZlNWExMWRlMzI5ZDZlMzVjMjNmMjg4
YWMxYzE1Yi4uZTRhMjI4NmNmY2M0OWVlZDM0MWI3M2M5YTg1YWE0ZDBhMGNlNWNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRBbmQKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNl
bmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IGEzZDU4MjMxZTJlNTQyMWIyMzRlMTBkNWFiMWQ1
ZjEzNzI2ZTBiZjIuLjFlOWI4MDViMDRkYTkzODRhNDQ0NjMyZTEzYzA0NTk4OTc0YTAxMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgiCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSwxMCAr
MzAsMTMgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0zMjEsNiArMzI1LDI2IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCoKICAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCkp
CisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNv
ZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAg
aWYgKCZKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCAx
OTc1Nzk2Zjg2Njg3MjVlZDAyZjZkNGU0ZmIwMjI1YzU5NzE0YmVhLi4wNjA1MzZiYWNhYmQ4OTQ4
MTJhMjMzZjRlY2RhYmQxNjA2YjI1ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNTUsNiAr
NTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24gOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW0KICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CmluZGV4IGUyOTE4ZjUyNGYyMTViN2UwOGZmODVmZDNjZTUxYTA0MzVmYjI5NDQuLjVlZTFiY2Y1
M2I5NmZiMjRkN2E5MDdmZjYyZDM2NmM2MjVhZDNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAt
MjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJh
dGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFy
cmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzc3LDYgKzM4MSwyNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlRgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0
KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsK
KyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0
KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjphbmFseXplSGVhcChK
U0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuaAppbmRleCBjYTIwMWUwNzg3NDMxMzA1NWFhY2Y3YjIyMWUxZDll
YjZlNDE3YjBkLi4zNjYyYTNmZjJmYTBmYmMxOTFjZjlmN2QzOWMwZTY0NDVkNzViNjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZEEKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVy
dHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA4MjFkN2M0N2Iw
YzYzNTM3MGExNWFmN2NkNDQ1NTAzZjM3YzA5NTM2Li4wNmI2YTFmOTkzM2I1MTg0MTZjOTVhMWYy
MWYzMGJkODBlMGM3NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAg
LTMwLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjA3LDYgKzIxMSwyNiBAQCBib29sIHNldEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRQogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAor
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVu
cmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29t
cGFyZSIpCisgICAgaWYgKCZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9
CisKIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmgKaW5kZXggODU5Y2QzYmRhOWJkMjI3YTA4OTc2YzdjMTE1YzNiOWI4NjIwYjliMC4u
MDc0MDM4M2E5ZWI4ZTBjYjg2NDZmYTQ0NzkwODZjZThiZTU0NDkzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC01MCw2ICs1MCwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gewog
CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3Qg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TmFtZWRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5k
ZXggODc4M2UxNWMyODEzNzY2MzRmZGM3NWRlZmZjODVkZGE5NjU0ODlhMi4uMjE2OTUyYjQ3MWQy
YTRiNjQ5YzFkNTY5YzU3ZmQ4ZGViMzFlZWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJz
dHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTIzNSw2ICsyMzksMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE8KICAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgIGVs
c2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAg
ICBpZiAoJkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNs
aWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVf
V0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgKaW5kZXggMTM4ZDRjMThmOGY0
NmJjMzQzMzEwOWJkMDMyMzk1NjM3ZDBhYzM5YS4uMzM0MmI3YjUxMmEyZWQxZjM2YzdjZWEyMDlj
ODFhY2FkMDc3OGRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuaApAQCAtNTQsNiArNTQsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyTm9JZGUKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlB
YnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA1NzlmMmEwZTZhOGM3YTkyNTU2
MTlkODQ0NTI2YmE4ZGRiMmRhYThkLi45ZmJiMzhjN2Y1YzVmY2UzY2Q4MzdiMzQ4MmEwNTRiYTMx
YmVhMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
MjQ5LDYgKzI1MywyNiBAQCBib29sIHNldEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbAogICAgIHJldHVybiBwcm90
b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDA1NWQzZGY5MjM4
MThjMDA3NjdmMTg5NWRmNjcyNWY1YmMwZWRmZjUuLjVmYTQyZDVmYmE2MTEwZWMwODViN2RhOGM5
ZWFmYzEwMDYzODM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC01NCw2ICs1NCwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkRGVs
ZXRlcgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MDIzYTMxYTE0NjQy
Mjg3YTBiMWI1MGRkZjRkZjQ2MTlkZGYyNWMuLjA5ODdlZWE5NjUxOTU3YWNmZjc2ZjcwMTZmZGNl
OTFlYzAzZTFkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjY3LDYgKzI3MSwy
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXJCb2R5PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm5hbWVkRGVsZXRlciIpOwogfQogCitKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmgKaW5kZXggYTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcy
NTA2Zi4uZTQ1Yzc0OTA5YjkyMjlhN2EwZjBiMjVlOTA2MDFmMjE3MTllODQwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU0LDYgKzU0
LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpT
RE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyV2l0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJy
ZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNw
YWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpT
Q2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKaW5kZXggZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJkMDc4OThmOThiNjZj
Ni4uZWQwMzNhZWM5MDk3ZDUwNTJhYTU3MzRiMDE4OTY4NGU0ZDA3ZWViMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGUuaCIKQEAgLTI5LDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1MSw2ICsyNTUsMjYgQEAgYm9vbCBzZXRKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2wKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVy
OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0
KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICBlbHNlCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIp
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CisgICAgaWYgKCZKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisg
ICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7
CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjphbmFs
eXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaAppbmRleCAyZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUy
Li41NDA1NjVlOTYwMzBjYTllNWFjODQzMWJjMjMwYjlmYzFiZTMwMGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNTQsNiAr
NTQsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgOiBwdWJs
aWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZERlbGV0ZXIKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKaW5kZXgg
Y2EwOWQzYjgxMzY5MjQxYjVmZDYwMzdiZTQ4ODk2NDAyYjg2ZDk3Yi4uMWVhMTJmZmU5YmVlOWU3
MTc4ZmE4OWIzZTNjNTU2NDQ4ODIwMjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGguaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxMyw2ICsyMTcs
MjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGg6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdl
dHRlckNhbGxXaXRoID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdl
dHRlckNhbGxXaXRoLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAg
IGlmICgmSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVh
cEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5oCmluZGV4IDk2YTk4YzViYjk0NGQyYmVjOGZjZDNiOWU4MTZkOWFkZGU0Mzc5
YzQuLmVlYTY4YmQ2YzU4MzM5YjczZTVhMzVlNTZjNmU2MzQ4MDgzZjI2ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsK
KyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFw
QW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xv
dElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiNzY5ZmE5MTA5
MGQ4YzA5YmY5MTgwYzVmOGE0OWVjNjdjODk0MDcyLi4wYWI4ZWI4MTMyYWZjZmIzZmI1NDljOTcz
ZTNjY2Q1ZDc5ZmZlYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjEzLDYgKzIx
NywyNiBAQCBib29sIHNldEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYgogICAgIHJldHVybiBwcm90b3R5cGUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50
U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJO
SU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllci5oCmluZGV4IGZlOThiNjExOTY2NmYyZGM3NGJhMWQwMDNiY2U4ZjIwZmNhMWY0MjYu
LjJjMTgxMGY5ZjMyYzY5MzYwMzg5NWExNjY1NmMyNGIxYWU0YzU3NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFz
cyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkR2V0dGVyTm9JZGVudAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVy
dHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA0
NWVlYjJiZWY5ZDdjMDE5ZDA0ZWQyZTBmZTFiYWU4ZWM1MWZmNTM5Li43NjUxNTA1OTZkMmZhMmU3
NjhiMDIzZDM1MjljN2ExN2U0YzZiMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI0
Miw2ICsyNDYsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25HZXQKICAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWVCb2R5PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImdldHRlck5hbWUiKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVy
biBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBw
ZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAg
ICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
cjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyLmgKaW5kZXggNGZhMDJkMTQ4M2NkNDU3MzQ0NzZiMjcxNmE1YzhhMTFhMmEyZDFhMy4uZDE5
ZDY4Zjk3YTE3NzI0ZTVkNzg2NTAzYjk4YmQ1YjdlYTkyNWI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFz
cyBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0TmFtZWRHZXR0ZXJXaXRoSQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVy
dHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDQ2NzUx
NTFlZGUxMzcyYjMxNDYxZTg1YmVmNmNkNzA4M2Q4MTU1MDQuLmUxY2M2YzcwMzM2ZjdiZWY0MzZi
MDUxM2FmMjk3N2NkYzQ1YTBhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNzYs
NiArMjgwLDI2IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iCiAgICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAg
IGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgp
OworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyLmgKaW5kZXggYzExNGQyOGFkNTdhYmE2MTY3ZGE5NmFlZjAyMjI0MmU1OTQ5
NzIzMy4uYjcyYjZkMzhhOTk5NTQ0ZDJmZTYzZmE5NjYyNGNiM2UxMWZjMzY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBA
IGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRTZXR0ZXJOb0lkZW50CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggYjVhODE2ZGU0NjhhM2Zi
NDQ4NzA2NDliNzVhMTU5YzFiMmJhOGI2OS4uYjMzNDE4MGY2OTNiYTY4Zjk1NjNhN2Y5OWQzOGY1
ZGU0OTgwMTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTI3Niw2ICsyODAsMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAgICByZXR1cm4gcHJv
dG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7Cisg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklO
R1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBh
bmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDQ3OWYxNjFkOTg4NjEwNDc4YWViMjEz
MTlkN2IwNDI5NzEyNzQyZjguLmE5ZjdjMmYzNTVlYmRhMWI5ZWRjZDkxMzRkNjg0YWQxNzZmOTgx
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyVGgKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNl
bmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRl
eCA5NzIwZjM2OWY3ZDM3ZjNmOGVjMjU5MWU0NDA2YTM0NTJmZDExZDhkLi5lNDM4MDViMGY5OTlh
MjU5ZWUzOWQ5ZGNhZTkxOWQyN2ZhZGE3MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01B
YnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTMwOCw2ICszMTIsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW0KICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJuYW1lZFNldHRlciIpOwogfQogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9
IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5k
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaAppbmRleCBkMTUzNWNkZmE4YzQ5NjMxNGY5NTlkYzY0OTg5ZTBkM2UyOTg0NDY1
Li42N2M1ZjgyNDUxNTBkMTU0MGRhYjFlNWZlMzc2NWFlODkwMjdmMzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBA
IGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3ROYW1lZFNldHRlcldpdGhJCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggNjQ2OTRkMWU0OGUxMjgy
ZGRkMTdjN2IzMjJjODk2ZDU1MTBlNTZjNi4uMjU4MDFkMDQ0Y2U4ZDhhZGViYzNmOWRhY2E5OTFh
MDNkYzc5ZTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMxLDEwICszMiwxMyBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zNTEsNiArMzU1LDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdl
dCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlND
OjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oCmluZGV4IDNlODJlYWY2
ZWZkMmMxMWJiNmY5YjY3Njg4M2VhOTBhOGNkM2JiODMuLmRiYzQwNzM4ZDEyMGRlNjQwMDk0Zjc3
MmM4NzdkY2VhYTI5OTcwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0
dGVyV2kKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2Rl
ID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7
CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXIm
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJl
Rm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1By
b3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCA3YjFjYzg0MjFmODVkMzFi
MjAwODEwZjEyODg3NDE1MmQ2OTEyMzAxLi5jZGI2MmYwNWQ2M2FhYzcxZWJlY2Y0N2YyZDAxYjZh
NTdlNWRlOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oIgogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpA
QCAtMzEsMTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTQwMyw2ICs0MDcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXAKICAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQ
cm90b3R5cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitKU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgIGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAg
ICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3Bh
Y2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaAppbmRleCBlYjM3
ZDIzZDg1OWQ1ZTdiY2Q1MDc3ZmQxNWExODIyZGVkYjA4ZWNmLi5hNTZmNzJiMGYwZDY1MjMzYmRh
NWRhYTI3ZjkwMzIxNDFkOGE3ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgKQEAgLTU1LDYgKzU1LDEz
IEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgOiBw
dWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggYWEyYTc1
OTQwYWNhMzAxZTMzMmNhMzAzYzBlZWY5NWYxMzAzYjk1Zi4uYzYwMTdmODMwZTJkZTdmMDI3Mzkz
NGQzY2MyYmNiMmUzOGNhMDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1
ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkg
KzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBB
bmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KQEAgLTI2Myw2ICsyNjcsMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWwKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyk7CisgICAgZWxzZQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5z
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4IDdkZTUxZGY5ZDU0MDYxYjI3MjdlMmRi
NTNmZDRlZWYxMjAwOTVhNWQuLjA1ZmE0OTVhYzYwYzU2YjZmNzg2YTA5ZGE2YzZkNTdlNmY0Yzg0
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRl
QnVpbHRpbnMuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGUKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3Rh
dGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMu
Y3BwCmluZGV4IGM4NGIxMDY0YzRlMWIxMjdiOGM1MmY4NDkzNWIyYzNiMjk2YTMzZjguLjM5NjIw
OWEzMTBjOTg5NWQ1MGRhN2VkMmMyOGQzM2Q4M2Y5ZGQ0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CkBAIC0zMSw5ICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtMzQ2LDYgKzM1MCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFu
Y2VGdQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXM+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9w
ZXJ0aWVzSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxH
bG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwogfQogCitK
U0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
czo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllcz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllcyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKKyAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgKaW5kZXggYTAxNDNkNzRmOTU2YzZhNTdhOGEyYWU1
MjFlODZkNTdkMTkwZDlmNC4uNGQxZWUwZWU1MDU0ZDFjMGUzYThjNzI0MjgxM2UxOTU1OTYwMmNh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFt
ZWRTCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZv
clByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGI5ZjcwMjU0YjE4
NDczZDFkMjZiNWZhN2M1MDc3NGM0Mzc4Zjk0MzkuLjE5ODlmOGExZmNjMTZjNzIyMGYzZGRhZGJi
OGFkMjk0MGViNjdkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJy
aWRlQnVpbHRpbnMuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zMSw5ICszMiwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAt
MzMzLDYgKzMzNywyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZAogICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0FuZE92ZXJyaWRlQnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRp
b25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9yZ2VhYmxlT3Bl
cmF0aW9uIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRp
bnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVy
cmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zLmgKaW5kZXggZjg1NjQ2ZmVhZjI4YWQ2NDgzM2FhMGJhY2QxMDQ4OWRlNDM2MzdjNC4uY2Rm
ZDRhNDcyNzM4OTRjZTk0YmQwYjMwY2RlYTBjOTYzNzM3ZTJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xh
c3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1
aWx0aW5zIDogcHVibGljIEpTRE8KICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYg
Y29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBs
KHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3Bl
cnR5U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRl
eCAxZmIzZjFiZWE4ZGFmMmYwZDA5ZTI5NmM1ODdmZmUwNDcwODYzZmU4Li5mMDZhZGJjOGUxZDcz
MGExNjJmYjAzMjAxYjNkNDAyZGJkNTQ4YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0yMiw2ICsyMiw3
IEBACiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yLmgiCkBAIC0zNiwxMCArMzcsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC00NDMsNiArNDQ3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBsCiAg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25Ub0pTT05Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
InRvSlNPTiIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROb2RlOjpzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNs
aWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0Tm9kZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5vZGUpOworICAgIGVsc2UKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5vZGUpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dE5vZGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROb2RlOjphbmFseXplSGVhcChK
U0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3ROb2RlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAppbmRleCBjMzViM2M0ODg3
MmNiZmQyZTgxMDZiYTI3OGI0N2NjNTM1MDRjMzc2Li40YmI2OWViNWViMGM1ODJiZWJjMmNiM2E3
YWZkZWIwMjEzMzFiZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIEpTVGVzdE5vZGUgOiBwdWJsaWMgSlNOb2RlIHsKIAogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU1Rlc3ROb2RlJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6
VGhyb3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdE5vZGUmIHdyYXBw
ZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4
MTg3M2QyNTIwYWE4ZTUzNS4uYjQ5MTIwZjNmYWQxMDgzYmYzZTkyNjM1NTNjODIyZWM1MGU0ZjY3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIK
IAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgogI2luY2x1ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtODksOSArOTAsMTEgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtODk0OSw2ICs4
OTUyLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNUZXN0T2JqOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE9iaik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RP
YmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RPYmopOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0T2JqOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9
ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5H
U19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQg
SlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCBiYmJmYTA0OWViMjBjMGNmZWYwNzk2M2Q0NmVjYTc1NmM4YzFhYjdjLi42ZDU4
ZWM2ZTUwNjI3YTk1YTIwMGFkNTkxMDE4YmQ4NTUwYjQ3ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC02Myw2ICs2
MywxMyBAQCBjbGFzcyBKU1Rlc3RPYmogOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPYmo+IHsK
ICNpZiBFTkFCTEUoQ09ORElUSU9OKQogICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlND
OjpVbmtub3duPiBtX2NhY2hlZEF0dHJpYnV0ZTM7CiAjZW5kaWYKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0
b3ImKTsKIAogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
aW5kZXggMTBjODJiOTFmMDljMGFkOWQxN2NjMWI4YzE3YzMwNjAzZjg5MDZkYy4uZDk2OTkwZWMw
MDFkYWM4YWU2MjQwNDk4NDJiMDdhNjgzYzljYjAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIK
QEAgLTMzLDkgKzM0LDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI2Niw2ICsyNzAsMjYgQEAgYm9vbCBzZXRKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmoKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQorICAgIGlmICgmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmFuYWx5emVIZWFwKEpTQ2Vs
bCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDZhNTA5NDM3NzI1MmVjMjkx
MjdhMDE4NTRlMzU2ZGI2M2ZhNTk3NTkuLjg2NzA1ODVkNzJmYTYwNWQ1YmMyZDM4ODZmNDcwNjRi
MTJhZjU5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApA
QCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3QKICAgICB9CiAKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZt
KQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
CmluZGV4IDYyNTUyMTJkYmM1ZDk4YWQyZDI4NDIyMDM0M2FmODgyZGMyMGI2ZDYuLjFlNDUzNjJl
NjQ4NjUyYTQ2Njk3MmVhZjg3MWVlZDRiMDkzNDU4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01J
c29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC0z
MCwxMSArMzEsMTQgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXRlcmF0b3JPcGVyYXRp
b25zLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxNiw2
ICsyMjAsMjYgQEAgYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGkKICAgICByZXR1cm4gcHJvdG90eXBl
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3Bh
Y2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQorICAgIGlmICgmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2U6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oCmluZGV4IGQ3ZWE5MDNl
ZTI1NGJjMGJjZTRjMDQ3M2VkOWMwMTkyYjE2MjI0YmEuLjIwMzA0MzY1YTUwNzBmNDVmN2VlNmVl
OGFiZjdlZDA2NDMyNDllYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3Mg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdE92ZXJsb2EKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGYxMTgxMWU4NTk0YzJkMTJlNGY0ODc5YTJlZGFl
ODYwYThiYzRhOTQuLmJhMTRhMDUyMTI1M2FjZTBmZjE1ZmY5Y2I2MDJmMGIwOTk4YzA2NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFi
c3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMyw5ICszNCwxMiBAQAog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI0NSw2ICsy
NDksMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oSlMKICAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAibmFtZWRJdGVtIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4IDQ0N2YzZmY3NGM5ZWVhNmU4
YWUyY2UyM2RhMzk4ZjNiY2IzNTQ1MWEuLjViYzAzYTgxMzk4MjIzYTA3MDg4MDRhMzBiZjI2OWUy
YTA4MmQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaApAQCAtNTIsNiArNTIs
MTMgQEAgY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8
VGVzdE92ZXJyaWRlQnVpbHRpbnM+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blBy
b3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwCmluZGV4IDRiODAyNzY2M2IxNjVjNWMwMDc1ZjFiNWJmYjczOGRhNjBk
YjA0ZmYuLmNjMmMzNjg3ZmQwNTA3N2Y0OGRmMjVhNjU2M2M2MTE0OTlkZTg4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0yMiwxNSArMjIsMTkgQEAKICNpbmNsdWRl
ICJKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxNyw2ICsyMjEsMjYgQEAg
Ym9vbCBzZXRKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW4KICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBz
cGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgIGVsc2UKKyAgICAgICAg
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFBsdWdpbkludGVyZmFjZTo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisg
ICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7
CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlLmgKaW5kZXggYmZkOTU2NWIwODMyNTgxZDMyNjY5ODkwNDU1NzZlNjMwNjNkMzc4
Ny4uNTMyZTNiYzgxZjJiYTYzYzY0YmRlOTRmYzM2YmI0NmJkZDY1MTNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQbHVnaW5JbnRlcmZhY2UuaApAQCAtNTYsNiArNTYsMTMgQEAgY2xhc3MgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPiB7CiAg
ICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6
OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4
IDc3ZjE5ZjJmMzBjNjA1YWRlZjNlMzA4NGU1NzA4YzA0Y2Y0YjcxODAuLmM5YzBiZmQ5OTkyODE3
ZjBkYTAxNmYzNTdlNGM0MDNjYWZlMjMyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNp
bmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpA
QCAtMzUsOCArMzYsMTEgQEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yOTMsNiArMjk3LDI2IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+OjpnZXQ8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicmVhc29uIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKaW5kZXggNmUyZjdj
N2YwMGQ4YzZkZDJkOGJkZTcyYzk2MDEzZTMwYTdhNzFkOC4uNjVjNzI4YzY2NGJhNzZiN2FjMzFl
MWM0MzQ4MzkyMTBiYWRhMjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50IDogcHVibGljIEpTRXZlbnQgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBp
ZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvcklt
cGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBK
U0M6OkhlYXBBbmFseXplciYpOwogICAgIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHdyYXBw
ZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCA1YmVh
ZTE2Njk1YzE4NTFjODAxNWY2NjA0OTVkZTYyZTRjNjczNTliLi4xYzIwZDQ5MDRiNDA0NmFiOWJk
MDU0YWU3YWQxMjJjN2Y3N2JmNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBA
IC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbi5oIgogCiAjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAj
aW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzksMTEgKzQw
LDE0IEBACiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2Uu
aCIKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KQEAgLTY3NCw2ICs2NzgsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWwK
ICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYWxsPGpzVGVz
dFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAidG9KU09OIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdFNlcmlhbGl6YXRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbiA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbik7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXphdGlvbjo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb246OmFuYWx5emVIZWFwKEpTQ2Vs
bCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXph
dGlvbi5oCmluZGV4IDI3OWUyMjYyNDAyNjc5MmFmMmI1MDE3N2M0ZjI1OTA1MDkyOWU1YTguLjI5
MzY4MjRkMDUwOGRhNDBiNDU4MmQ1N2IyNjgwYWFjZTM2ZDc5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb24uaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0U2VyaWFsaXphdGlvbiA6
IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFNlcmlhbGl6YXRpb24+IHsKIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9i
amVjdCYsIEpTQzo6VGhyb3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0
ZWQ6CiAgICAgSlNUZXN0U2VyaWFsaXphdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0JiwgUmVmPFRlc3RTZXJpYWxpemF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDc5ZWJj
YTEyNjg4OWJhOGQyMzNmZTA5NDViMjcyODRlZTI5OTc0MDIuLmZmMzg3YWUxN2FlY2IyMWRlMDYy
MTFlOTFmNzZlOWY3NTc5Yjg3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjIsMTMgKzIyLDE3IEBACiAj
aW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKIAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xNTMsNiArMTU3LDI2IEBAIGJvb2wg
c2V0SlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJ
bmhlcml0YW5jZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5j
ZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0
aW9uSW5kaXJlY3RJbmhlcml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXph
dGlvbkluZGlyZWN0SW5oZXJpdGFuY2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UqPihjZWxsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgK
aW5kZXggZDljOWFjMzRiYjUzMTYzNmJhOGYxMjM4MTgzNTg1Nzg1ODMwNWM3My4uZTBiYzJiOWRh
Y2Q0MmQxNzIzMThjY2YxY2QwNmUyYWMyZTQ0MmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgKQEAgLTQ4LDYgKzQ4LDEz
IEBAIGNsYXNzIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIDogcHVibGlj
IEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdElu
aGVyaXRhbmNlJiB3cmFwcGVkKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0LmNwcAppbmRleCBhNmU4MmUyZTFlNzE5MDE5ZGI2MGVjNDQ4MGRlNTBh
ZTgzZGMwNzE4Li41ZmJlN2E0ZGNiMWMzMzFjY2JjZjhkMjMyZmY5OWZhZTk1MDNjYzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTIyOSw2ICsyMzMsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEoKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FsbDxqc1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sK
KyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsK
KyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojp2
aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICBy
ZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OmFuYWx5
emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCmluZGV4IDM0N2UwMDhlNTIz
ZWUzYWExYzBhODU1NjYyOGRiY2QwNDVlYjVlODQuLjk1NmE1NGQ3MzkwNDg0YWFkMmVlMTU1OWNl
MWQzZmUzODQwYTRhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5o
CkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCA6IHB1
YmxpYyBKU1Rlc3RTZXJpYWxpemF0aW9uIHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdCYgdGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmLCBK
U0M6OlRocm93U2NvcGUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogICAgIFRlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdCYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwCmluZGV4IDBiMzE4NmYzOTdkMTE3NjBm
ZTc4ZjljMTU3OWRmYzA5ZWYwZGU0ODMuLjI4MTM1ODg5MzZlMmI1ZGI0NDk0YjczZDBkOTBiOTdm
NTlmNDJmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRG
aW5hbC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0
cnVjdG9yLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjY0LDYgKzI2OCwyNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5
cGVGdW5jdGlvblRvSgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbD46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWwuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWw+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdEZpbmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwu
Z2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFw
QW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgKaW5kZXggNmNjOGY0NzQ2OTY4OTc2NjhkZDk3
MWE3NDlkZGQxZTliNGI2N2RkNy4uNzI3YTM1M2I3NzIyNzk4ODc0ODc0YWEzODQzOGFmYTgzNjdi
MDcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5o
CkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
IDogcHVibGljIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0IHsKIAogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsJiB0aGlzT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwog
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
CiAgICAgVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwmIHdyYXBwZWQoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKaW5kZXggNTYxYWJhZjU2ODk4MzdmMTQ4MTg3YWU4MWU0ODM3OGUyMGY1ZDYwNS4u
ZWNiNDgzNzAzNGZiNGE3OWU3YmZhZjMwMWUwMDMxYTgyZGY4MWYwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
QEAgLTM4LDEwICszOSwxMyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTM0Nyw2ICszNTEsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvblJldHVybmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZnVu
Y3Rpb25SZXR1cm5pbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCAyNDNmNjNh
MmFhMTkyZGNhMjVkZjRlOTQzYTk3NGVhNzcyZTQwZTEyLi5hMmE2NzM4YWQwNjI0M2YxN2RmYTU5
ZDU4ZGQ4NDVjYTI0NDEwMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC01Myw2ICs1MywxMyBAQCBjbGFzcyBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RT
ZXJpYWxpemVkUwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpW
TSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBtdXRhYmxlIEpTQzo6V3JpdGVC
YXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRWYWx1ZTsKICAgICBtdXRhYmxlIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV9jYWNoZWRSZWFkb25seVZhbHVlOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpT
bG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlND
OjpIZWFwQW5hbHl6ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCmluZGV4IGMzY2E3ZDE5
MDg3NTk2ZDU1NDc5NjRkMTlhY2QwYjAxNTM5YzMyMDMuLjZhM2E4MjU5YTVmNDgyODNhNDg4ZWE5
MDhjMmY3MDAwMjFkZTY4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFN0cmluZ2lmaWVyLmgiCiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5LDkgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNo
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBA
IC0xODcsNiArMTkxLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3Ry
aW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsCiAgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmll
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RTdHJpbmdpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmlu
Z2lmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmlu
Z2lmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgm
SlNUZXN0U3RyaW5naWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdp
Zmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXIqPihjZWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKaW5kZXggYzAxNGI5N2QyOGFhODY5Y2FmMzg1ODU3YTQx
MDk2OWY1NmVmYWIyNS4uNjE4NzQwNDIyMjYyNGRjMGU5NmQ4MGRmMTI2ZGUyYzI5N2FjMWQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0
cmluZ2lmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWZpZXI+IHsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3Rl
ZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCA3NzFmNTlhYzViNTFiMWE2
NmM5ZWI2MWNhYTgxZDVkZTc3YTI5NWM4Li5kYThmNmMyN2EzZjI4ZmMyYWFkM2Y5ODY4NzJkZWM4
MjhjMjRhODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbi5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUg
IkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTg3LDYgKzE5
MSwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3RpbwogICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9TdHJpbmciKTsKIH0KIAorSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+
KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09w
ZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7CisgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJ
R05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
ICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50
RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJO
SU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZv
aWQgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OmFuYWx5emVIZWFwKEpTQ2Vs
bCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKj4oY2VsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCmlu
ZGV4IDU5ZjUxZTRiMmIzNWNlMDgwOTg0MjVhYmZjODg0N2Y4YzY1YTM0NWYuLjJjY2MwZGVhZmYy
N2M2YTk2ZTcyOWE0NDIwZTI3MGI3NmFmOGI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFz
cyBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXI8VGVzdFN0cmluZ2lmaWVyQQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRleCAzMjNhYmY4NmMyZTNiYWQ0ZmYx
OGVhMzE5MzNlOTZhM2RjZmQ0YmNiLi5mNDYzMDJlNjJhNmJkZTgzYTVjNjcyZWU2OTEwMDU0NjEz
MWRiY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjAzLDYgKzIwNywyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90
b3R5cGVGdW5jdGlvblRvUwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgInRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgm
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2Vs
bCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oCmluZGV4IGE3YzYzNTkzZGViMDA2
Zjg4N2Q4YzExMzMwZWExMmU1OTUwNDRhOTYuLmI5NDYyM2ZhNjY0ZGFiOGI4Y2U3NDkwMDJjNTJl
YzJiOWUzMjg3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24uaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyTmFtZWQKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3Rl
ZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzLmNwcAppbmRleCBlNmI1NDllNzFhNjE0YTBmMjI5MzA3NjQwNTMwMGFiMTk1OWE5
ODM5Li45OWNlNjc3NDU1NjIyODE4NjM0ZjMxNGRiMzQyNTc0ODFmOGJiZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3Bl
cmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjAzLDYgKzIwNywyNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc1Byb3RvdHlwZUZ1bgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGlj
YWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1
YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0g
Y2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICBlbHNlCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRT
cGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5J
TkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oCmluZGV4IDE5
NDQ2MTk4NjYwYTI2NGNmYWFiMTg2ZWZkODgwOTJlM2MxN2I4ZGIuLmNlM2NiMDhkNGI4NDIwNTMy
Mzk2ZTZlZGZlYTFiNzEzM2ZiMzg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNs
YXNzIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdFN0cmluZ2lmCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBS
ZWY8VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CmluZGV4IDhjN2NiYTllNjg0YjlhMTAxNDFmNWU4MDE5MjIzOTg3NTQ3NGUxN2QuLmViMDE2ZDE3
NzgwODBkNDQzMDU2OTQyNGRlYmYzMTc1N2Y4MTdhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmlu
Z3MuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xODcsNiArMTkxLDI2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJv
dG90eXBlRnVuCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZ1Byb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgInRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6
Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1
YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVu
ZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZzo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVy
KQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmgKaW5kZXggMWRiNmJiM2NlYWI0NjIy
YzI2MjdiMTc5NDdjYTJkNzk4YTRhNTk2Ny4uMTY1ZWU2ZTlmNDhkNjJhNGIzNTdhNDM2NTU4NWJh
ODQxOTE5OWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmcuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
U3RyaW5naWYKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCA5YWM5MTQ3YTA2ZTAzOWZj
ODg1NmFlYmQwZTYxNmE1MWJiYWQ0NDE1Li4xZDIwZDA1Y2VkNGIxOWFjMDFiMzkzYmQ3MGU1ZmZk
ZGE4ZjgxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIwOSw2ICsyMTMsMjYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlUHJvdG90eXBlRnVuY3Rpb24KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4pCisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFp
bnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dB
Uk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXpl
ciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaAppbmRleCA2NmY5ZjZmMWYzY2YwMjBiMzNk
OGRjZDYyOGYxMDQ2ZjdkN2UzZWIyLi5kNWFjNTNmYWZiYzVhYzc0YmI2ZGI5MDc4MjQ5YzZmNzQz
NGIwNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0
cmlidXRlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZmllclJlCiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0
ZWQ6CiAgICAgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZShKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuY3BwCmluZGV4IDU2ZWY3YmQzNWYxMGMxZDlmMTkwMzAwYzY3Nzg2Njg3OGEzOWY5
ZjUuLmI1ZDJiOTdlM2YyZmQ4MjVkMGE2N2JkYzEyYTFiZDUwYTQ2MWE1M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAt
MjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgpAQCAtMjI4LDYgKzIzMiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVu
Y3RpbwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGU+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90
eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAidG9TdHJpbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRv
bG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0
cmlidXRlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2Vz
KCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19F
TkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGU6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVy
UmVhZFdyaXRlQXR0cmlidXRlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCmluZGV4IGE3Zjk2OWMyMDgyZGU2NjdhMGJjODIy
OTgzMjUzNDE0ZDZlNTI2NmMuLmRlNjhjMjk3YzNlNjEzNDMwZjBiMmRmM2IzMDJiNjZkY2M4MmVm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyUgogICAgIH0K
IAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMg
dm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVk
OgogICAgIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGQ4ODczOTIxN2I1ZDRhZjdlZTFkMmZk
YWU1ZWNlZTgzMGNjMjA1YzYuLjBkNmI4Y2I3NGE2ZWQxYjYxMGI3MjczMjYwMzliMTM1ODYzZmFi
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpT
VGVzdFR5cGVkZWZzLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKQEAgLTQ2
LDEwICs0NywxMyBAQAogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5h
bHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNzcx
LDYgKzc3NSwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKAogICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dFR5cGVkZWZzOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwor
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFR5cGVkZWZzPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdFR5cGVkZWZzKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFR5cGVkZWZzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOwor
ICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RUeXBlZGVm
czo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFR5cGVkZWZzOjphbmFseXplSGVhcChK
U0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAppbmRl
eCBhZWYyYzlmZTVlYjk5MmNiOTE4ZGFlMDU5NGUxMjkwMDUzOWI2OGNiLi42NGU3ZWU4ZjRmYTM3
NjMyMzA4MDg1ZmY5OTExMmFiZWY0MTZlZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaApAQCAtNDksNiAr
NDksMTMgQEAgY2xhc3MgSlNUZXN0VHlwZWRlZnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RU
eXBlZGVmcz4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392521</attachid>
            <date>2020-03-04 17:40:21 -0800</date>
            <delta_ts>2020-03-04 18:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205107-20200304174020.patch</filename>
            <type>text/plain</type>
            <size>291144</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQwYWNhZGYyNzYzYWFh
MzBmYzJlODA2N2I3NDc5NWI2YjAyNTY2NC4uZjcwNjY4ZDJlOWQwNDA5ZDU2NzQ1MmNmN2MyZjE5
MWZhOGM3MjcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwMiBAQAorMjAyMC0wMy0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFB1dCBhbGwgZ2VuZXJh
dGVkIEpTQ2VsbHMgaW4gV2ViQ29yZSBpbnRvIElzb1N1YnNwYWNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUxMDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVzIElzb1N1YnNwYWNlIHBlciBXZWJDb3JlIERPTSBvYmplY3QgdHlwZS4KKyAgICAg
ICAgSW4gcHJlcHJvY2Vzcy1pZGxzLnBsLCB3ZSBjb2xsZWN0IGFsbCB0aGUgRE9NIG9iamVjdCB0
eXBlcyBhbmQgZ2VuZXJhdGUgRE9NSXNvU3Vic3BhY2VzIGNsYXNzLAorICAgICAgICB3aGljaCBj
b250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBJc29TdWJzcGFjZXMuIEFuZCBpdCBpcyBoZWxkIGJ5
IFdlYkNvcmVKU0NsaWVudERhdGEuCisKKyAgICAgICAgQ29kZUdlbmVyYXRvckpTLnBtIHN0YXJ0
cyBwdXR0aW5nIGBzdWJzcGFjZUZvcmAgYW5kIGBzdWJzcGFjZUZvckltcGxgIGZvciBlYWNoIEpT
IERPTSB3cmFwcGVyIGNsYXNzZXMuCisgICAgICAgIEFuZCB3ZSBkeW5hbWljYWxseSBjcmVhdGUg
SXNvU3Vic3BhY2UgYW5kIHNldCBpdCB0byBXZWJDb3JlSlNDbGllbnREYXRhJ3MgRE9NSXNvU3Vi
c3BhY2VzLiBBdCB0aGUgc2FtZQorICAgICAgICB0aW1lLCB3ZSByZWdpc3RlciBJc29TdWJzcGFj
ZSB0byBtX291dHB1dENvbnN0cmFpbnRTcGFjZXMgaWYgdGhlIGNsYXNzIGhhcyBvdXRwdXQgY29u
c3RyYWl0cyBjYWxsYmFjay4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZU1hY3Jvcy5jbWFrZToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3V0cHV0Q29uc3Ry
YWludFN1YnNwYWNlRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdy
YXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNWTUNsaWVudERhdGE6OmZvckVhY2hPdXRwdXRDb25zdHJhaW50U3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1ZNQ2xpZW50RGF0YTo6b3V0cHV0Q29uc3RyYWludFNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJzcGFjZUZvckpTRE9NV2luZG93KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJzcGFjZUZvckpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNW
TUNsaWVudERhdGE6OnN1YnNwYWNlRm9ySlNSZW1vdGVET01XaW5kb3cpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OnN1YnNwYWNlRm9ySlNXb3JrZXJHbG9iYWxT
Y29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6c3Vic3Bh
Y2VGb3JKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU1ZNQ2xpZW50RGF0YTo6c3Vic3BhY2VGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpzdWJzcGFjZUZv
ckpTV29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MtYWxsLnBsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJl
cHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVy
ZmFjZU5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNlTmFtZTo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNYXBMaWtlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWFwTGlrZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRPbmx5
TWFwTGlrZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNSZWFkT25seU1hcExpa2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlN
YXBMaWtlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTUmVhZE9ubHlTZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZE9ubHlTZXRM
aWtlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1JlYWRPbmx5U2V0TGlrZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkT25seVNldExp
a2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNT
ZXRMaWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NldExpa2U6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnM6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uczo6c3Vic3BhY2VGb3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnN1YnNw
YWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
YWxsVHJhY2VyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxs
VHJhY2VyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERP
TUpJVDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVQ6OnN1YnNw
YWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEVuYWJsZWRGb3JDb250ZXh0OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3Q6
OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6c3Vi
c3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJdGVyYWJsZTo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SXRlcmFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlOjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNl
Rm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBs
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1w
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
OjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXI6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
czo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhV
bmZvcmdhYmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9y
SW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRP
dmVycmlkZUJ1aWx0aW5zOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6
c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpzdWJzcGFjZUZvckltcGwpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iajo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VG
b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpzdWJz
cGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFj
ZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6c3Vic3BhY2VGb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb246OnN1YnNwYWNlRm9ySW1wbCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb246OnN1YnNwYWNlRm9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbklu
ZGlyZWN0SW5oZXJpdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXph
dGlvbkluZGlyZWN0SW5oZXJpdGFuY2U6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRh
bmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhl
cml0YW5jZTo6c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjpzdWJzcGFjZUZvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbDo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6c3Vic3BhY2VGb3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c3Vic3Bh
Y2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VG
b3JJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyOjpzdWJzcGFjZUZv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246
OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpzdWJz
cGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnN1YnNwYWNlRm9ySW1wbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmc6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpzdWJzcGFj
ZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6
c3Vic3BhY2VGb3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlOjpzdWJzcGFjZUZvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZz
OjpzdWJzcGFjZUZvckltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6OnN1YnNw
YWNlRm9yKToKKwogMjAyMC0wMy0wNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhbiBTUEkgdG8gYWxsb3cgVXNlclN0eWxlU2hlZXQgaW5qZWN0aW9u
IHRvIHRhcmdldCBhIHNwZWNpZmljIFdLV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAz
N2NiMWJlZTQ5YzdlOTU1YTcxMjRkMWUyZDZhZTljZDE1NWMwNzliLi4zNTU0OTM4MWJjNGUwMmFi
Y2YxZmIyZmFiNGUyNjEyYzExMzM0NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTYzNiw2
ICsxNjM2LDcgQEAgc2V0KE1BS0VfTkFNRVNfREVQRU5ERU5DSUVTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KICkKIHNldChTVVBQTEVNRU5UQUxf
REVQRU5ERU5DWV9GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9zdXBwbGVtZW50
YWxfZGVwZW5kZW5jeS50bXApCitzZXQoSVNPX1NVQlNQQUNFU19IRUFERVJfRklMRSAke1dlYkNv
cmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vRE9NSXNvU3Vic3BhY2VzLmgpCiBzZXQoV0lORE9XX0NP
TlNUUlVDVE9SU19GSUxFICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9ET01XaW5kb3dD
b25zdHJ1Y3RvcnMuaWRsKQogc2V0KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxF
ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9ycy5pZGwpCiBzZXQoREVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJ
TEUgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzLmlkbCkKQEAgLTE4MDQsNiArMTgwNSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVUZXN0U3VwcG9ydF9JRExfRklMRVMgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9
L0ludGVybmFsCiBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlQmluZGluZ3MKICAgICBPVVRQVVRf
U09VUkNFIFdlYkNvcmVfU09VUkNFUwogICAgIElOUFVUX0ZJTEVTICR7V2ViQ29yZV9JRExfRklM
RVN9CisgICAgUFBfSU5QVVRfRklMRVMgJHtXZWJDb3JlX0lETF9GSUxFU30gJHtXZWJDb3JlVGVz
dFN1cHBvcnRfSURMX0ZJTEVTfQogICAgIEJBU0VfRElSICR7V0VCQ09SRV9ESVJ9CiAgICAgSURM
X0lOQ0xVREVTICR7V2ViQ29yZV9JRExfSU5DTFVERVN9ICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJD
RVNfRElSfQogICAgIEZFQVRVUkVTICR7RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFR9CkBAIC0x
ODExLDggKzE4MTMsOSBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlQmluZGluZ3MKICAgICBH
RU5FUkFUT1IgSlMKICAgICBTVVBQTEVNRU5UQUxfREVQRklMRSAke1NVUFBMRU1FTlRBTF9ERVBF
TkRFTkNZX0ZJTEV9CiAgICAgUFBfRVhUUkFfT1VUUFVUCi0gICAgICAgICR7V0lORE9XX0NPTlNU
UlVDVE9SU19GSUxFfSAke1dPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RF
RElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQorICAgICAgICAke0lT
T19TVUJTUEFDRVNfSEVBREVSX0ZJTEV9ICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfSAke1dP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfSAke0RFRElDQVRFRFdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgIFBQX0VYVFJBX0FSR1MKKyAgICAgICAgLS1p
c29TdWJzcGFjZXNIZWFkZXJGaWxlICR7SVNPX1NVQlNQQUNFU19IRUFERVJfRklMRX0KICAgICAg
ICAgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICR7V0lORE9XX0NPTlNUUlVDVE9SU19GSUxFfQog
ICAgICAgICAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke1dPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFfQogICAgICAgICAtLWRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzRmlsZSAke0RFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNU
UlVDVE9SU19GSUxFfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA2MGExMTMxM2EwZDQwZGQ4YmVmMjRmZTcxZDc1MmMxNjEzNWQ3MmU0
Li43MGNmYWVhNzMxMTBkNGNjZjEzMTVlZjI4ZmEwMThlNzY0MzZiOWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtOSw2ICs5LDcg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVL
ZXl3b3Jkcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9D
b2xvckRhdGEuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9Db3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTUlzb1N1YnNwYWNlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3JzLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNWJhMjZiODA4MmRl
Njg5MDFjMmUxMjY2MmY2NDc0YTg2NzA3MjQyMy4uNGQ5ZWRhZjFhNjZiNmRhZDk1NzE1MGFiYzY0
OWQzZWVkMjFmNzY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNzE4LDYg
KzE3MTgsNyBAQCBKU19CSU5ESU5HU19TQ1JJUFRTID0gJChDT01NT05fQklORElOR1NfU0NSSVBU
UykgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySgogCiBTVVBQTEVNRU5UQUxfREVQRU5E
RU5DWV9GSUxFID0gU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLnR4dAogU1VQUExFTUVOVEFMX01B
S0VGSUxFX0RFUFMgPSBTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCitJU09fU1VCU1BBQ0VT
X0hFQURFUl9GSUxFID0gRE9NSXNvU3Vic3BhY2VzLmgKIFdJTkRPV19DT05TVFJVQ1RPUlNfRklM
RSA9IERPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwKIFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFID0gV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCiBERURJQ0FURURX
T1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSA9IERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JzLmlkbApAQCAtMTczOCw2ICsxNzM5LDcgQEAgZW5kZWYKIElETF9J
TlRFUk1FRElBVEVfRklMRVMgPSBcCiAgICAgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykg
XAogICAgICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgXAorICAgICQoSVNPX1NVQlNQ
QUNFU19IRUFERVJfRklMRSkgXAogICAgICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAg
ICAgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgXAogICAgICQoREVESUNB
VEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKQEAgLTE3NDksNyArMTc1
MSw3IEBAIElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMgPSAkKHN1YnN0IC4sJSwkKElETF9JTlRF
Uk1FRElBVEVfRklMRVMpKQogCiAkKElETF9JTlRFUk1FRElBVEVfUEFUVEVSTlMpIDogJChQUkVQ
Uk9DRVNTX0lETFNfU0NSSVBUUykgJChKU19CSU5ESU5HX0lETFMpICQoUExBVEZPUk1fRkVBVFVS
RV9ERUZJTkVTKSBEZXJpdmVkU291cmNlcy5tYWtlCiAJJChmb3JlYWNoIGYsJChKU19CSU5ESU5H
X0lETFMpLEBlY2hvICQoZik+PiQoSURMX0ZJTEVTX1RNUCkkKE5MKSkKLQkkKFBFUkwpICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZF
QVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMpICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFO
R1VBR0VfSkFWQVNDUklQVCIgLS1pZGxGaWxlc0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoU1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS13
aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9XX0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAk
KERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmls
ZSAkKFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQQUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxNYWtlZmlsZURlcHMgJChTVVBQTEVNRU5UQUxf
TUFLRUZJTEVfREVQUykKKwkkKFBFUkwpICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVw
cm9jZXNzLWlkbHMucGwgLS1kZWZpbmVzICIkKEZFQVRVUkVfQU5EX1BMQVRGT1JNX0RFRklORVMp
ICQoQURESVRJT05BTF9JRExfREVGSU5FUykgTEFOR1VBR0VfSkFWQVNDUklQVCIgLS1pZGxGaWxl
c0xpc3QgJChJRExfRklMRVNfVE1QKSAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoU1VQ
UExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRSkgLS1pc29TdWJzcGFjZXNIZWFkZXJGaWxlICQoSVNP
X1NVQlNQQUNFU19IRUFERVJfRklMRSkgLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlICQoV0lORE9X
X0NPTlNUUlVDVE9SU19GSUxFKSAtLXdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAk
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSAtLWRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKERFRElDQVRFRFdPUktFUkdMT0JBTFNDT1BFX0NP
TlNUUlVDVE9SU19GSUxFKSAtLXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0Zp
bGUgJChTRVJWSUNFV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIC0td29ya2xl
dEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSAkKFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJV
Q1RPUlNfRklMRSkgLS1wYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUgJChQ
QUlOVFdPUktMRVRHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSkgLS1zdXBwbGVtZW50YWxN
YWtlZmlsZURlcHMgJChTVVBQTEVNRU5UQUxfTUFLRUZJTEVfREVQUykKIAkkKERFTEVURSkgJChJ
RExfRklMRVNfVE1QKQogCiBKUyUuY3BwIEpTJS5oIDogJS5pZGwgJChKU19CSU5ESU5HU19TQ1JJ
UFRTKSAkKElETF9BVFRSSUJVVEVTX0ZJTEUpICQoSURMX0lOVEVSTUVESUFURV9GSUxFUykgJChQ
TEFURk9STV9GRUFUVVJFX0RFRklORVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlTWFjcm9zLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZU1hY3Jvcy5jbWFrZQppbmRl
eCA5M2E0NDlmZmI1NTllM2RmYjczNTcyYmIyNTU2ZjU4NTMxMDNhOTdkLi44NTMyMGYyNzFmYjk2
YTE0M2NiZDQyODEwOGM4MWEyZGNmNWI2MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlTWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmVNYWNyb3MuY21h
a2UKQEAgLTQ4LDYgKzQ4LDcgQEAgb3B0aW9uKFNIT1dfQklORElOR1NfR0VORVJBVElPTl9QUk9H
UkVTUyAiU2hvdyBwcm9ncmVzcyBvZiBnZW5lcmF0aW5nIGJpbmRpbmdzIgogIyAgIHRhcmdldCBp
cyBhIG5ldyB0YXJnZXQgbmFtZSB0byBiZSBhZGRlZAogIyAgIE9VVFBVVF9TT1VSQ0UgaXMgYSBs
aXN0IG5hbWUgd2hpY2ggd2lsbCBjb250YWluIGdlbmVyYXRlZCBzb3VyY2VzLihlZy4gV2ViQ29y
ZV9TT1VSQ0VTKQogIyAgIElOUFVUX0ZJTEVTIGFyZSBJREwgZmlsZXMgdG8gZ2VuZXJhdGUuCisj
ICAgUFBfSU5QVVRfRklMRVMgYXJlIElETCBmaWxlcyB0byBwcmVwcm9jZXNzLgogIyAgIEJBU0Vf
RElSIGlzIGJhc2UgZGlyZWN0b3J5IHdoZXJlIHNjcmlwdCBpcyBjYWxsZWQuCiAjICAgSURMX0lO
Q0xVREVTIGlzIHZhbHVlIG9mIC0taW5jbHVkZSBhcmd1bWVudC4gKGVnLiAke1dFQkNPUkVfRElS
fS9iaW5kaW5ncy9qcykKICMgICBGRUFUVVJFUyBpcyBhIHZhbHVlIG9mIC0tZGVmaW5lcyBhcmd1
bWVudC4KQEAgLTU5LDExICs2MCwxMiBAQCBvcHRpb24oU0hPV19CSU5ESU5HU19HRU5FUkFUSU9O
X1BST0dSRVNTICJTaG93IHByb2dyZXNzIG9mIGdlbmVyYXRpbmcgYmluZGluZ3MiCiBmdW5jdGlv
bihHRU5FUkFURV9CSU5ESU5HUyB0YXJnZXQpCiAgICAgc2V0KG9wdGlvbnMpCiAgICAgc2V0KG9u
ZVZhbHVlQXJncyBPVVRQVVRfU09VUkNFIEJBU0VfRElSIEZFQVRVUkVTIERFU1RJTkFUSU9OIEdF
TkVSQVRPUiBTVVBQTEVNRU5UQUxfREVQRklMRSkKLSAgICBzZXQobXVsdGlWYWx1ZUFyZ3MgSU5Q
VVRfRklMRVMgSURMX0lOQ0xVREVTIFBQX0VYVFJBX09VVFBVVCBQUF9FWFRSQV9BUkdTKQorICAg
IHNldChtdWx0aVZhbHVlQXJncyBJTlBVVF9GSUxFUyBQUF9JTlBVVF9GSUxFUyBJRExfSU5DTFVE
RVMgUFBfRVhUUkFfT1VUUFVUIFBQX0VYVFJBX0FSR1MpCiAgICAgY21ha2VfcGFyc2VfYXJndW1l
bnRzKGFyZyAiJHtvcHRpb25zfSIgIiR7b25lVmFsdWVBcmdzfSIgIiR7bXVsdGlWYWx1ZUFyZ3N9
IiAke0FSR059KQogICAgIHNldChiaW5kaW5nX2dlbmVyYXRvciAke1dFQkNPUkVfRElSfS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLWFsbC5wbCkKICAgICBzZXQoaWRsX2F0dHJp
YnV0ZXNfZmlsZSAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbikKICAgICBzZXQoaWRsX2ZpbGVzX2xpc3QgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9
L2lkbF9maWxlc18ke3RhcmdldH0udG1wKQorICAgIHNldChwcF9pZGxfZmlsZXNfbGlzdCAke0NN
QUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcHBfaWRsX2ZpbGVzXyR7dGFyZ2V0fS50bXApCiAgICAg
c2V0KF9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeSkKIAogICAgIHNldChjb250ZW50KQpAQCAtNzUs
MTEgKzc3LDIxIEBAIGZ1bmN0aW9uKEdFTkVSQVRFX0JJTkRJTkdTIHRhcmdldCkKICAgICBlbmRm
b3JlYWNoICgpCiAgICAgZmlsZShXUklURSAke2lkbF9maWxlc19saXN0fSAke2NvbnRlbnR9KQog
CisgICAgc2V0KHBwX2NvbnRlbnQpCisgICAgZm9yZWFjaCAoZiAke2FyZ19QUF9JTlBVVF9GSUxF
U30pCisgICAgICAgIGlmIChOT1QgSVNfQUJTT0xVVEUgJHtmfSkKKyAgICAgICAgICAgIHNldChm
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8ke2Z9KQorICAgICAgICBlbmRpZiAoKQorICAg
ICAgICBzZXQocHBfY29udGVudCAiJHtwcF9jb250ZW50fSR7Zn1cbiIpCisgICAgZW5kZm9yZWFj
aCAoKQorICAgIGZpbGUoV1JJVEUgJHtwcF9pZGxfZmlsZXNfbGlzdH0gJHtwcF9jb250ZW50fSkK
KwogICAgIHNldChhcmdzCiAgICAgICAgIC0tZGVmaW5lcyAke2FyZ19GRUFUVVJFU30KICAgICAg
ICAgLS1nZW5lcmF0b3IgJHthcmdfR0VORVJBVE9SfQogICAgICAgICAtLW91dHB1dERpciAke2Fy
Z19ERVNUSU5BVElPTn0KICAgICAgICAgLS1pZGxGaWxlc0xpc3QgJHtpZGxfZmlsZXNfbGlzdH0K
KyAgICAgICAgLS1wcElETEZpbGVzTGlzdCAke3BwX2lkbF9maWxlc19saXN0fQogICAgICAgICAt
LXByZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVSQVRPUl9QUkVQUk9DRVNTT1J9IgogICAgICAgICAt
LWlkbEF0dHJpYnV0ZXNGaWxlICR7aWRsX2F0dHJpYnV0ZXNfZmlsZX0KICAgICApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcAppbmRleCA4ZDAyNzY1MGYyYTFj
ZWVjODgwMTRhYzc2NTk0ZTNjMzhiMWQyMGQ3Li4xMzk5Njc2NTNiYzk3MmI1MjBkNmZhODIyNGQ1
YzAzYzM2NDVlZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5jcHAKQEAgLTQ0LDExICs0NCw2IEBAIEpTRE9NT2JqZWN0OjpKU0RPTU9iamVjdChKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPCiAgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCBnbG9iYWxPYmplY3QuY2xhc3NJbmZvKGds
b2JhbE9iamVjdC52bSgpKSA9PSBKU1JlbW90ZURPTVdpbmRvdzo6aW5mbygpKTsKIH0KIAotSlND
OjpDb21wbGV0ZVN1YnNwYWNlKiBvdXRwdXRDb25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCi17Ci0gICAgcmV0dXJuICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5vdXRwdXRDb25zdHJhaW50U3BhY2UoKTsKLX0KLQogSlNDOjpKU1ZhbHVlIGNsb25l
QWNyb3NzV29ybGRzKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNv
bnN0IEpTRE9NT2JqZWN0JiBvd25lciwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmIChp
c1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IGExNDE2MGZlMDEwNjIwM2IyZjRi
YTkxNzMxZmI2ODc3ZjU0Y2E5YzQuLmI1MzEyMzg3NGUwYjY4Y2I5MTE5MDJmNTAxMmE4MWE2YTg0
Y2ExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC02
Niw4ICs2Niw2IEBAIGNsYXNzIEpTRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgIFdFQkNPUkVfRVhQT1JUIEpTRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJl
KiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpDb21w
bGV0ZVN1YnNwYWNlKiBvdXRwdXRDb25zdHJhaW50U3Vic3BhY2VGb3IoSlNDOjpWTSYpOwotCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRhdGlvbkNsYXNzPiBjbGFzcyBKU0RPTVdyYXBwZXIg
OiBwdWJsaWMgSlNET01PYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNET01PYmplY3Qg
QmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50
RGF0YS5jcHAKaW5kZXggNzM3NjIyYTkwNmEzZWE3ODNkZGMwNGU2MmY3ZWQwYjY2YmVjMzA5Yi4u
MmQ4MGFkNDZlODg2ZTE4ODdiNWQ4YzgyYWFjMTA2ZjQzMGM4YzZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAKICNpbmNsdWRlICJE
T01HQ091dHB1dENvbnN0cmFpbnQuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ckJhc2UuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgpAQCAtNzcsMTggKzc4LDcgQEAgSlNW
TUNsaWVudERhdGE6OkpTVk1DbGllbnREYXRhKFZNJiB2bSkKICAgICAsIG1fcnVudGltZU1ldGhv
ZFNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFJ1bnRpbWVNZXRob2QpIC8vIEhhc2g6MHhmNzBjNGE4NQogICAgICwgbV9ydW50aW1lT2Jq
ZWN0U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9ydW50aW1lT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0KQogICAgICwgbV93aW5k
b3dQcm94eVNwYWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1fd2luZG93UHJveHlIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTV2luZG93UHJveHkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNET01X
aW5kb3cgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU0RPTVdp
bmRvdy5nZXQoKSwgSlNET01XaW5kb3cpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlw
ZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNSZW1vdGVET01XaW5kb3cgSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU1JlbW90ZURPTVdpbmRvdy5n
ZXQoKSwgSlNSZW1vdGVET01XaW5kb3cpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNXb3JrZXJHbG9i
YWxTY29wZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBDZWxsVHlwZUZvckpTV29y
a2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTV29ya2VyR2xvYmFsU2NvcGUpCi0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgICwgbV9zdWJzcGFjZUZvckpTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIG1faGVhcENlbGxUeXBlRm9ySlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBtX2hlYXBD
ZWxsVHlwZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCksIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUpCi0gICAgLCBtX3N1YnNwYWNlRm9ySlNXb3JrbGV0R2xvYmFsU2NvcGUgSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgbV9oZWFwQ2VsbFR5cGVGb3JKU1dvcmtsZXRHbG9iYWxT
Y29wZS5nZXQoKSwgSlNXb3JrbGV0R2xvYmFsU2NvcGUpCi0jZW5kaWYKLSAgICAsIG1fb3V0cHV0
Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2
bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RN
YWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3NzI0YzJlNAorICAgICwgbV9zdWJzcGFj
ZXMobWFrZVVuaXF1ZTxET01Jc29TdWJzcGFjZXM+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAppbmRleCAzZWQyMWU0MzBi
YjBlOTlkZWM5OTMxMGI4MDA0MzI1MmRhNzkzODg5Li5kNGU5MmY2M2U4OGRmNjk5Zjk0YjI3ZTUx
YjY1MmFjMzg0NTEzODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRE9NSXNvU3Vic3BhY2VzOworCiBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6IHB1
YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU1ZN
Q2xpZW50RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBW
TVdvcmxkSXRlcmF0b3I7CkBAIC02NywzNyArNjksMTcgQEAgY2xhc3MgSlNWTUNsaWVudERhdGEg
OiBwdWJsaWMgSlNDOjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgSlNDOjpJc29TdWJzcGFjZSYgcnVu
dGltZU9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9ydW50aW1lT2JqZWN0U3BhY2U7IH0KICAgICBK
U0M6Oklzb1N1YnNwYWNlJiB3aW5kb3dQcm94eVNwYWNlKCkgeyByZXR1cm4gbV93aW5kb3dQcm94
eVNwYWNlOyB9CiAgICAgCi0gICAgSlNDOjpDb21wbGV0ZVN1YnNwYWNlJiBvdXRwdXRDb25zdHJh
aW50U3BhY2UoKSB7IHJldHVybiBtX291dHB1dENvbnN0cmFpbnRTcGFjZTsgfQorICAgIFZlY3Rv
cjxKU0M6Oklzb1N1YnNwYWNlKj4gb3V0cHV0Q29uc3RyYWludFNwYWNlcygpIHsgcmV0dXJuIG1f
b3V0cHV0Q29uc3RyYWludFNwYWNlczsgfQogCi0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3Bh
Y2VGb3JKU0RPTVdpbmRvdygpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdzsgfQot
ICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZSgpIHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OyB9Ci0gICAgSlNDOjpJc29TdWJzcGFjZSYgc3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdygp
IHsgcmV0dXJuIG1fc3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdzsgfQotICAgIEpTQzo6SXNv
U3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNXb3JrZXJHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vi
c3BhY2VGb3JKU1dvcmtlckdsb2JhbFNjb3BlOyB9Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEpTQzo6SXNvU3Vic3BhY2UmIHN1YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUoKSB7IHJldHVybiBtX3N1YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7
IH0KLSNlbmRpZgotI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIEpTQzo6SXNvU3Vi
c3BhY2UmIHN1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1f
c3Vic3BhY2VGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOyB9Ci0gICAgSlNDOjpJc29TdWJz
cGFjZSYgc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fc3Vic3Bh
Y2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZTsgfQotI2VuZGlmCi0gICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hPdXRwdXRDb25zdHJhaW50U3BhY2UoY29u
c3QgRnVuYyYgZnVuYykKICAgICB7Ci0gICAgICAgIGZ1bmMobV9vdXRwdXRDb25zdHJhaW50U3Bh
Y2UpOwotICAgICAgICBmdW5jKG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdyk7Ci0gICAgICAgIGZ1
bmMobV9zdWJzcGFjZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwotICAgICAgICBm
dW5jKG1fc3Vic3BhY2VGb3JKU1JlbW90ZURPTVdpbmRvdyk7Ci0gICAgICAgIGZ1bmMobV9zdWJz
cGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGUpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICAgICAgZnVuYyhtX3N1YnNwYWNlRm9ySlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi0gICAgICAgIGZ1bmMobV9zdWJz
cGFjZUZvckpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOwotICAgICAgICBmdW5jKG1fc3Vic3Bh
Y2VGb3JKU1dvcmtsZXRHbG9iYWxTY29wZSk7Ci0jZW5kaWYKKyAgICAgICAgZm9yIChhdXRvKiBz
cGFjZSA6IG1fb3V0cHV0Q29uc3RyYWludFNwYWNlcykKKyAgICAgICAgICAgIGZ1bmMoKnNwYWNl
KTsKICAgICB9CiAKKyAgICBET01Jc29TdWJzcGFjZXMmIHN1YnNwYWNlcygpIHsgcmV0dXJuICpt
X3N1YnNwYWNlcy5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIEhhc2hTZXQ8RE9NV3JhcHBlcldv
cmxkKj4gbV93b3JsZFNldDsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX25vcm1hbFdv
cmxkOwpAQCAtMTA4LDcgKzkwLDcgQEAgY2xhc3MgSlNWTUNsaWVudERhdGEgOiBwdWJsaWMgSlND
OjpWTTo6Q2xpZW50RGF0YSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBl
PiBtX3J1bnRpbWVBcnJheUhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpI
ZWFwQ2VsbFR5cGU+IG1fcnVudGltZU9iamVjdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1fd2luZG93UHJveHlIZWFwQ2VsbFR5cGU7Ci0KK3B1
YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpIZWFwQ2VsbFR5cGU+IG1faGVhcENlbGxU
eXBlRm9ySlNET01XaW5kb3c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBl
PiBtX2hlYXBDZWxsVHlwZUZvckpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpTQzo6SGVhcENlbGxUeXBlPiBtX2hlYXBDZWxsVHlwZUZvckpTUmVtb3Rl
RE9NV2luZG93OwpAQCAtMTIwLDcgKzEwMiw3IEBAIGNsYXNzIEpTVk1DbGllbnREYXRhIDogcHVi
bGljIEpTQzo6Vk06OkNsaWVudERhdGEgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBD
ZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkhlYXBDZWxsVHlwZT4gbV9oZWFwQ2VsbFR5cGVGb3JKU1dv
cmtsZXRHbG9iYWxTY29wZTsKICNlbmRpZgotCitwcml2YXRlOgogICAgIEpTQzo6SXNvU3Vic3Bh
Y2UgbV9kb21CdWlsdGluQ29uc3RydWN0b3JTcGFjZTsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1f
ZG9tQ29uc3RydWN0b3JTcGFjZTsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fZG9tV2luZG93UHJv
cGVydGllc1NwYWNlOwpAQCAtMTI4LDIwICsxMTAsOCBAQCBjbGFzcyBKU1ZNQ2xpZW50RGF0YSA6
IHB1YmxpYyBKU0M6OlZNOjpDbGllbnREYXRhIHsKICAgICBKU0M6Oklzb1N1YnNwYWNlIG1fcnVu
dGltZU1ldGhvZFNwYWNlOwogICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9ydW50aW1lT2JqZWN0U3Bh
Y2U7CiAgICAgSlNDOjpJc29TdWJzcGFjZSBtX3dpbmRvd1Byb3h5U3BhY2U7Ci0KLSAgICBKU0M6
Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU0RPTVdpbmRvdzsKLSAgICBKU0M6Oklzb1N1YnNw
YWNlIG1fc3Vic3BhY2VGb3JKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOwotICAgIEpTQzo6
SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTUmVtb3RlRE9NV2luZG93OwotICAgIEpTQzo6SXNv
U3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTV29ya2VyR2xvYmFsU2NvcGU7Ci0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIEpTQzo6SXNvU3Vic3BhY2UgbV9zdWJzcGFjZUZvckpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOwotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
Ci0gICAgSlNDOjpJc29TdWJzcGFjZSBtX3N1YnNwYWNlRm9ySlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZTsKLSAgICBKU0M6Oklzb1N1YnNwYWNlIG1fc3Vic3BhY2VGb3JKU1dvcmtsZXRHbG9iYWxT
Y29wZTsKLSNlbmRpZgotICAgIAotICAgIEpTQzo6Q29tcGxldGVTdWJzcGFjZSBtX291dHB1dENv
bnN0cmFpbnRTcGFjZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NSXNvU3Vic3BhY2VzPiBtX3N1
YnNwYWNlczsKKyAgICBWZWN0b3I8SlNDOjpJc29TdWJzcGFjZSo+IG1fb3V0cHV0Q29uc3RyYWlu
dFNwYWNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYjdjZDFmY2E0
Mzk5Y2U4OTk2YWFhNmVjYTc5NTA3MzZjMDUzMjM5ZS4uMGFhOGZkM2M4Y2MyMjVkYWExYzU5ZTE1
MDVmZmFkMzdjOTkyMjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3OTUsMTIgKzI3OTUsMTMgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAjIEZJWE1FOiBXZSBwdXQgdGhpcyB1
bmNvbmRpdGlvbmFsbHkgdG8gcHV0IGFsbCB0aGUgV2ViQ29yZSBKUyB3cmFwcGVycyBpbiBlYWNo
IElzb1N1YnNwYWNlLgotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTEwNwotICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pIHsgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7IH1cbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pO1xuIik7Ci0gICAgfQorICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKVxuIik7CisgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3Vy
cmVudGx5KVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgICAgIHJldHVy
biBudWxscHRyO1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IHN1YnNwYWNlRm9ySW1wbCh2bSk7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IH1cbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7XG4iKTsKIAogICAgICMgdmlzaXQg
ZnVuY3Rpb24KICAgICBpZiAoJG5lZWRzVmlzaXRDaGlsZHJlbikgewpAQCAtMjgyMSw5ICsyODIy
LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICAjIHByb2dyYW0gcmVzdW1lZCBz
aW5jZSB0aGUgbGFzdCBjYWxsIHRvIHZpc2l0Q2hpbGRyZW4gb3IgdmlzaXRPdXRwdXRDb25zdHJh
aW50cy4gU2luY2UKICAgICAgICAgICAgICMgdGhpcyBqdXN0IGNhbGxzIHZpc2l0QWRkaXRpb25h
bENoaWxkcmVuLCB5b3UgdXN1YWxseSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMuCiAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIHZpc2l0T3V0
cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpO1xuIik7Ci0gICAgICAg
ICAgICBpZiAoIUlzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6Q29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pIHsgcmV0dXJuIG91dHB1dENvbnN0cmFpbnRTdWJzcGFjZUZvcih2bSk7IH1cbiIp
OwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC00NjYyLDEzICs0NjYwLDMz
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgR2VuZXJhdGVJdGVyYWJsZURlZmlu
aXRpb24oJGludGVyZmFjZSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CiAgICAgR2VuZXJhdGVT
ZXJpYWxpemVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSBpZiAkaW50ZXJmYWNl
LT5zZXJpYWxpemFibGU7CiAKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiRE9NSXNvU3Vic3BhY2Vz
LmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7Cisg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPiIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+Iik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6Oklz
b1N1YnNwYWNlKiAke2NsYXNzTmFtZX06OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSlcbiIp
OworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yJHtpbnRlcmZhY2VO
YW1lfS5nZXQoKSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
c3BhY2U7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKLSAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SXNvU3Vic3BhY2UqICR7Y2xhc3NOYW1lfTo6c3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAmc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+c3Vic3BhY2VGb3Ike2NsYXNz
TmFtZX0oKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAg
fQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7
aW50ZXJmYWNlTmFtZX0gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBlRm9yJHtjbGFzc05hbWV9LmdldCgp
LCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCAke2NsYXNzTmFtZX0+KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksICR7Y2xhc3NOYW1lfSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvciR7aW50ZXJmYWNlTmFtZX0gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCAke2NsYXNzTmFtZX0pO1xuIik7CisgICAgfQorICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3Ike2lu
dGVyZmFjZU5hbWV9LmdldCgpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJJR05PUkVf
V0FSTklOR1NfQkVHSU4oXCJ1bnJlYWNoYWJsZS1jb2RlXCIpXG4iKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIklHTk9SRV9XQVJOSU5HU19CRUdJTihcInRhdXRvbG9naWNhbC1jb21wYXJlXCIp
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJiR7Y2xhc3NOYW1lfTo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTtcbiIpOworICAgIHB1c2goQGltcGxD
b250ZW50LCAiSUdOT1JFX1dBUk5JTkdTX0VORFxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJJR05PUkVfV0FSTklOR1NfRU5EXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gc3BhY2U7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAg
ICBpZiAoJG5lZWRzVmlzaXRDaGlsZHJlbikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InZvaWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MtYWxsLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGwKaW5kZXggYWZhMDIxMDIwOTBiYzY4MzMz
YTVlMGE5MTA5YmI0ZTU0YTg0ZWY3Yi4uMjk4MmEzOTEwZDMzOTc1Nzg0MjliNDRhNjRlYjgyNGM2
ZmZkMzM2MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5l
cmF0ZS1iaW5kaW5ncy1hbGwucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9nZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGwKQEAgLTM4LDYgKzM4LDcgQEAKIG15IEBpZGxEaXJl
Y3RvcmllczsKIG15ICRvdXRwdXREaXJlY3Rvcnk7CiBteSAkaWRsRmlsZXNMaXN0OworbXkgJHBw
SURMRmlsZXNMaXN0OwogbXkgJGdlbmVyYXRvcjsKIG15IEBnZW5lcmF0b3JEZXBlbmRlbmN5Owog
bXkgJGRlZmluZXM7CkBAIC01Miw2ICs1Myw3IEBACiBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9
PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0
RGlyZWN0b3J5LAogICAgICAgICAgICAnaWRsRmlsZXNMaXN0PXMnID0+IFwkaWRsRmlsZXNMaXN0
LAorICAgICAgICAgICAncHBJRExGaWxlc0xpc3Q9cycgPT4gXCRwcElETEZpbGVzTGlzdCwKICAg
ICAgICAgICAgJ2dlbmVyYXRvcj1zJyA9PiBcJGdlbmVyYXRvciwKICAgICAgICAgICAgJ2dlbmVy
YXRvckRlcGVuZGVuY3k9c0AnID0+IFxAZ2VuZXJhdG9yRGVwZW5kZW5jeSwKICAgICAgICAgICAg
J2RlZmluZXM9cycgPT4gXCRkZWZpbmVzLApAQCAtNjksMTYgKzcxLDIxIEBACiBAaWRsRmlsZXMg
PSBtYXAgeyBDeWd3aW5QYXRoSWZOZWVkZWQocy9ccj9cbj8kLy9yKSB9IDwkZmg+OwogY2xvc2Uo
JGZoKSBvciBkaWU7CiAKK215IEBwcElETEZpbGVzOworb3BlbihteSAkZmgsICc8JywgJHBwSURM
RmlsZXNMaXN0KSBvciBkaWUgIkNhbm5vdCBvcGVuICRwcElETEZpbGVzTGlzdCI7CitAcHBJRExG
aWxlcyA9IG1hcCB7IEN5Z3dpblBhdGhJZk5lZWRlZChzL1xyP1xuPyQvL3IpIH0gPCRmaD47Citj
bG9zZSgkZmgpIG9yIGRpZTsKKwogbXkgJW9sZFN1cHBsZW1lbnRzOwogbXkgJW5ld1N1cHBsZW1l
bnRzOwogaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewogICAgIG15IEBvdXRwdXQg
PSAoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlLCBAcHBFeHRyYU91dHB1dCk7Ci0gICAgbXkg
QGRlcHMgPSAoJGlkbEZpbGVzTGlzdCwgQGlkbEZpbGVzLCBAZ2VuZXJhdG9yRGVwZW5kZW5jeSk7
CisgICAgbXkgQGRlcHMgPSAoJHBwSURMRmlsZXNMaXN0LCBAcHBJRExGaWxlcywgQGdlbmVyYXRv
ckRlcGVuZGVuY3kpOwogICAgIGlmIChuZWVkc1VwZGF0ZShcQG91dHB1dCwgXEBkZXBzKSkgewog
ICAgICAgICByZWFkU3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUoJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlLCBcJW9sZFN1cHBsZW1lbnRzKSBpZiAtZSAkc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGU7CiAgICAgICAgIG15IEBhcmdzID0gKEZpbGU6OlNwZWMtPmNhdGZpbGUoJHNjcmlwdERp
ciwgJ3ByZXByb2Nlc3MtaWRscy5wbCcpLAogICAgICAgICAgICAgICAgICAgICAnLS1kZWZpbmVz
JywgJGRlZmluZXMsCi0gICAgICAgICAgICAgICAgICAgICctLWlkbEZpbGVzTGlzdCcsICRpZGxG
aWxlc0xpc3QsCisgICAgICAgICAgICAgICAgICAgICctLWlkbEZpbGVzTGlzdCcsICRwcElETEZp
bGVzTGlzdCwKICAgICAgICAgICAgICAgICAgICAgJy0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZp
bGUnLCAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUsCiAgICAgICAgICAgICAgICAgICAgIEBw
cEV4dHJhQXJncyk7CiAgICAgICAgIHByaW50UHJvZ3Jlc3MoIlByZXByb2Nlc3MgSURMIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRs
cy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBs
CmluZGV4IGExNDRhNTFiODkxMGM5OGE2OTI4MzU3OTNhMjJlNTlmNDQ2NjBmMzguLjQ4NTJjNTM1
NjNkZjk4Y2RlOTJkMDBmYWQzY2YxYzQ0ZjZlMDYyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0zMyw2ICszMyw3IEBA
CiBteSAkaWRsRmlsZXNMaXN0OwogbXkgJHRlc3RHbG9iYWxDb250ZXh0TmFtZTsKIG15ICRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZTsKK215ICRpc29TdWJzcGFjZXNIZWFkZXJGaWxlOwogbXkg
JHdpbmRvd0NvbnN0cnVjdG9yc0ZpbGU7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlOwogbXkgJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZTsK
QEAgLTQ3LDYgKzQ4LDcgQEAKICAgICAgICAgICAgJ2lkbEZpbGVzTGlzdD1zJyA9PiBcJGlkbEZp
bGVzTGlzdCwKICAgICAgICAgICAgJ3Rlc3RHbG9iYWxDb250ZXh0TmFtZT1zJyA9PiBcJHRlc3RH
bG9iYWxDb250ZXh0TmFtZSwKICAgICAgICAgICAgJ3N1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
PXMnID0+IFwkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUsCisgICAgICAgICAgICdpc29TdWJz
cGFjZXNIZWFkZXJGaWxlPXMnID0+IFwkaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSwKICAgICAgICAg
ICAgJ3dpbmRvd0NvbnN0cnVjdG9yc0ZpbGU9cycgPT4gXCR3aW5kb3dDb25zdHJ1Y3RvcnNGaWxl
LAogICAgICAgICAgICAnd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwk
d29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLAogICAgICAgICAgICAnZGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlPXMnID0+IFwkZGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNGaWxlLApAQCAtNjgsNiArNzAsNyBAQAogZGllKCdNdXN0
IHNwZWNpZnkgdGhlIGZpbGUgbGlzdGluZyBhbGwgSURMcyB1c2luZyAtLWlkbEZpbGVzTGlzdC4n
KSB1bmxlc3MgZGVmaW5lZCgkaWRsRmlsZXNMaXN0KTsKIAogJHN1cHBsZW1lbnRhbERlcGVuZGVu
Y3lGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSk7
CiskaXNvU3Vic3BhY2VzSGVhZGVyRmlsZSA9IEN5Z3dpblBhdGhJZk5lZWRlZCgkaXNvU3Vic3Bh
Y2VzSGVhZGVyRmlsZSk7CiAkd2luZG93Q29uc3RydWN0b3JzRmlsZSA9IEN5Z3dpblBhdGhJZk5l
ZWRlZCgkd2luZG93Q29uc3RydWN0b3JzRmlsZSk7CiAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcnNGaWxlID0gQ3lnd2luUGF0aElmTmVlZGVkKCR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yc0ZpbGUpOwogJGRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzRmlsZSA9
IEN5Z3dpblBhdGhJZk5lZWRlZCgkZGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cnNGaWxlKTsKQEAgLTkzLDYgKzk2LDIxIEBACiBteSAkcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvcnNDb2RlID0gIiI7CiBteSAkdGVzdEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzQ29k
ZSA9ICIiOwogCitteSAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSA9IDw8RU5EOworI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNwcmFn
bWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTUlzb1N1YnNwYWNlcyB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRE9NSXNvU3Vic3BhY2VzKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChET01Jc29TdWJzcGFjZXMpOworcHVibGljOgorICAgIERPTUlzb1N1
YnNwYWNlcygpID0gZGVmYXVsdDsKK0VORAorCiAjIEdldCByaWQgb2YgZHVwbGljYXRlcyBpbiBp
ZGxGaWxlcyBhcnJheS4KIG15ICVpZGxGaWxlSGFzaCA9IG1hcCB7ICRfLCAxIH0gQGlkbEZpbGVz
OwogCkBAIC0xMzQsNiArMTUyLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoIWlz
Q2FsbGJhY2tJbnRlcmZhY2VGcm9tSURMKCRpZGxGaWxlQ29udGVudHMpKSB7CisgICAgICAgICRp
c29TdWJzcGFjZXNIZWFkZXJDb2RlIC49ICIgICAgc3RkOjp1bmlxdWVfcHRyPEpTQzo6SXNvU3Vi
c3BhY2U+IG1fc3Vic3BhY2VGb3Ike2ludGVyZmFjZU5hbWV9O1xuIgorICAgIH0KKwogICAgICMg
Rm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQgaW4gYSBnaXZlbiBFQ01BU2NyaXB0
IGdsb2JhbCBlbnZpcm9ubWVudCBhbmQ6CiAgICAgIyAtIGlzIGEgY2FsbGJhY2sgaW50ZXJmYWNl
IHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwgb3IKICAgICAjIC0gaXMgYSBub24t
Y2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdpdGggdGhlIFtOb0ludGVy
ZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlLCBhIGNvcnJlc3BvbmRpbmcKQEAgLTE4OSw2
ICsyMTEsMTIgQEAKICAgICBkZWxldGUgJHN1cHBsZW1lbnRhbHN7JGlkbEZpbGV9OwogfQogCitp
ZiAoJGlzb1N1YnNwYWNlc0hlYWRlckZpbGUpIHsKKyAgICAkaXNvU3Vic3BhY2VzSGVhZGVyQ29k
ZSAuPSAifTtcbiI7CisgICAgJGlzb1N1YnNwYWNlc0hlYWRlckNvZGUgLj0gIn0gLy8gbmFtZXNw
YWNlIFdlYkNvcmVcbiI7CisgICAgV3JpdGVGaWxlSWZDaGFuZ2VkKCRpc29TdWJzcGFjZXNIZWFk
ZXJGaWxlLCAkaXNvU3Vic3BhY2VzSGVhZGVyQ29kZSk7Cit9CisKICMgT3V0cHV0cyB0aGUgZGVw
ZW5kZW5jeS4KICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6
CiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNJbnRlcmZhY2VOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCmluZGV4IGZjMzliMjI1ZWI2YTg5ZTc3Y2Y0NTZjZmRk
OGM1Y2NiNWMwMzI1YTYuLjc1ZWYxOGNiNDM3YzUxNTAzZTdlZTgzNzA5ZWE4NTQ2ZTVjNDA5YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCkBAIC0yMiwxNCArMjIsMTggQEAKICNpbmNsdWRlICJK
U0ludGVyZmFjZU5hbWUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE2MSw2ICsx
NjUsMjYgQEAgYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEoKICAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTSW50ZXJmYWNlTmFt
ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJmYWNlTmFtZS5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3Ry
dWN0aWJsZU9iamVjdCwgSlNJbnRlcmZhY2VOYW1lPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JJbnRlcmZhY2VOYW1lID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U0ludGVyZmFjZU5hbWUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JJ
bnRlcmZhY2VOYW1lID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNJbnRlcmZhY2VOYW1lKTsKKyAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9ySW50ZXJmYWNlTmFtZS5nZXQoKTsK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTSW50ZXJmYWNlTmFt
ZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTSW50ZXJmYWNlTmFtZTo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmgK
aW5kZXggNTA2OTEzZGEzZmY0NjlmMzEzODAyOTJhZjgxMjQzMmYyYWRiNDcwMS4uMWYzZDE3ZjVm
NmZiMmVjOGNkMmNmZTFlZDYzYjk3MjYyMzMyZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaApAQCAt
NTAsNiArNTAsMTMgQEAgY2xhc3MgSlNJbnRlcmZhY2VOYW1lIDogcHVibGljIEpTRE9NV3JhcHBl
cjxJbnRlcmZhY2VOYW1lPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpOwogCiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKaW5kZXggOWY4MGFlMWQ1YmJlMTIzOGVkNmFj
ZjgzMzQxYzQ0YTUxNmEwMjhhOS4uOTY1ODJhMzQ5MWJkNzE5Mzc2ZTljZmNhNmE1YWUzYTQ2MjAy
MjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTTWFwTGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTTWFwTGlrZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU01hcExpa2Uu
aCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNw
YWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAg
LTMyLDEwICszMywxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtMzU0LDYgKzM1OCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBsZQogICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRl
bGV0ZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZGVsZXRlIik7CiB9
CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTTWFwTGlrZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yTWFwTGlr
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNNYXBMaWtlPikKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBKU01hcExpa2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JNYXBMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNNYXBMaWtlKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yTWFwTGlrZS5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTTWFwTGlrZTo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTTWFwTGlrZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNYXBMaWtl
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNNYXBMaWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmgKaW5kZXggOGVlZWMzZDFiMmRiMzAwMjc3NTU4MDZiN2IwNThmZDQ1ZjBj
MGNiMC4uNDlhMDBhM2Y4MDU4OTkxZGQxMGVlMTFhODljNzgyOTFiOThmMDE4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuaApA
QCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNNYXBMaWtlIDogcHVibGljIEpTRE9NV3JhcHBlcjxN
YXBMaWtlPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNNYXBMaWtlKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QmLCBSZWY8TWFwTGlrZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcApp
bmRleCBkOTQzMTY3NzhkYzIyYzEzZTI0NGRiNTViY2MwMzJlM2M4M2U3MmZhLi4xNWI5MDk4ZDhi
ZjQwY2FjODFjNTAwNjUwNDRmMzY4MDMxMjE1MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1JlYWRPbmx5TWFwTGlrZS5oIgogCiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzIsMTAg
KzMzLDEzIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVp
bHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yOTgs
NiArMzAyLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExp
a2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNHbG9iYWxPCiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbkZvckVhY2hCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImZv
ckVhY2giKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNSZWFkT25seU1hcExpa2U6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlrZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNSZWFkT25seU1hcExpa2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clJlYWRPbmx5TWFwTGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNS
ZWFkT25seU1hcExpa2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JS
ZWFkT25seU1hcExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1JlYWRPbmx5TWFwTGlrZSk7
CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5TWFwTGlrZS5n
ZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTUmVhZE9u
bHlNYXBMaWtlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNSZWFkT25seU1hcExpa2U6OmFu
YWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUmVhZE9ubHlNYXBMaWtlKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25s
eU1hcExpa2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Jl
YWRPbmx5TWFwTGlrZS5oCmluZGV4IDI2NDA3OTJlYzAwYTJkZjNlODEwNTIxNDU4OTdiNzQwODY2
NDAyMWEuLjIyZDMwYmU2OTc1ZjIyZmFjNzg4MzYxZDU5MzEwZDhhN2Q2Njg5ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFw
TGlrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Jl
YWRPbmx5TWFwTGlrZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1JlYWRPbmx5TWFwTGlr
ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8UmVhZE9ubHlNYXBMaWtlPiB7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNj
ZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2
bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNj
ZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFu
YWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNSZWFkT25seU1hcExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxSZWFkT25seU1hcExpa2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5jcHAKaW5kZXggNDVj
MmRkZGM1YjFhNjIwZDA4MjVlNjkyZTk0MWQ1NTdiZjhjMzEyMS4uMTM2NDYzNGVhNzg5OTMxODc3
NjdhMDUyNjg3OTE4YTA3M2M1MzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seVNldExpa2UuY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNSZWFkT25seVNldExpa2UuaCIKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1
ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTMyLDEwICszMywxMyBA
QAogI2luY2x1ZGUgIkpTRE9NU2V0TGlrZS5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI3OSw2ICsyODMsMjYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5U2V0TGlrZVByb3RvdHlw
ZUZ1bmN0aW9uRm9yRWFjaChKU0dsb2JhbE8KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVh
ZE9ubHlTZXRMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5U2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9y
RWFjaEJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZm9yRWFjaCIpOwog
fQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1JlYWRPbmx5U2V0TGlrZTo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yUmVhZE9ubHlTZXRMaWtlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1JlYWRPbmx5U2V0TGlrZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlT
ZXRMaWtlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1JlYWRPbmx5U2V0
TGlrZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclJlYWRPbmx5U2V0
TGlrZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTUmVhZE9ubHlTZXRMaWtlKTsKKyAgICBhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yUmVhZE9ubHlTZXRMaWtlLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNSZWFkT25seVNldExpa2U6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBl
bmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1JlYWRPbmx5U2V0TGlrZTo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNSZWFkT25seVNldExpa2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5U2V0TGlrZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRM
aWtlLmgKaW5kZXggZDMxMWJlNDBiMDdjNzg0NDNlODZlYjE3NTNiZWUzMTA1MTc3NzVhYi4uN2Y1
MDc3OWM4YzVjNWU4NzA5OGE5M2RlOTllODA0NmMxNTdjNDI2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRMaWtlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlTZXRM
aWtlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTUmVhZE9ubHlTZXRMaWtlIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxSZWFkT25seVNldExpa2U+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1JlYWRPbmx5
U2V0TGlrZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFJlYWRPbmx5
U2V0TGlrZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NldExpa2UuY3BwCmluZGV4IGRhMjRhNWIwMzU5ZTY5NzVlMzNiYTI5ZWZjNzQ3
ZGMwNTQ3MmQyODYuLjE2MTRlYmUwZWViY2YwMzYxZTE3NjIwYzE1MWE2MDFhN2QzOGU4NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExp
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Nl
dExpa2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNTZXRMaWtlLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMiwxMCAr
MzMsMTMgQEAKICNpbmNsdWRlICJKU0RPTVNldExpa2UuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRp
bk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMzMsNiAr
MzM3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNTZXRMaWtlUHJvdG90eXBl
RnVuY3Rpb25EZWxldGUoSlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1NldExpa2U+OjpjYWxsPGpzU2V0TGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9keT4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJkZWxldGUiKTsKIH0KIAorSlNDOjpJ
c29TdWJzcGFjZSogSlNTZXRMaWtlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7Cisg
ICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Cisg
ICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JTZXRMaWtlLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1NldExpa2U+KQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclNldExpa2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTU2V0TGlrZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclNldExp
a2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldExpa2UpOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JTZXRMaWtlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQorICAgIGlmICgmSlNTZXRMaWtlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9
ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5H
U19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQg
SlNTZXRMaWtlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldExpa2UqPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Nl
dExpa2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NldExp
a2UuaAppbmRleCAwYjJmZjQ1ODJjODhhNzczOTk0M2NmNGVlOGQwZDg4NGM0ZjViNjQwLi5hMWEx
NTUzNjZmZjgwYjNkYzA1NTBkMWFiOTZlY2NiMzhlMjVhYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXRMaWtlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2V0TGlrZS5oCkBAIC00OSw2ICs0
OSwxMyBAQCBjbGFzcyBKU1NldExpa2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFNldExpa2U+IHsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHBy
b3RlY3RlZDoKICAgICBKU1NldExpa2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxTZXRMaWtlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5k
ZXggMTI0Mzc5NjJjMmRiNDI2ODhmYzAyMmNlMDA0ZWJiNDhiMTFiYmNiYS4uN2M1OGQ0M2ZjOTIw
MDExMDhlNWRhOWRlMjhmYzk5MTI2YjZiZWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0eS5oIgpAQCAtMzUs
OSArMzYsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpT
Tm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CkBAIC0zMTAsNiArMzE0LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0CiAgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYWxsPGpzVGVzdEFjdGl2ZURP
TU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZE92ZXJsb2FkRGlzcGF0Y2hl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJvdmVybG9hZGVkTWV0aG9kIik7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEFjdGl2ZURPTU9iamVjdC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0QWN0aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RBY3RpdmVET01PYmplY3QpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0QWN0aXZlRE9NT2JqZWN0ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEFjdGl2ZURPTU9iamVjdC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKKyAgICBpZiAoJkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNs
aWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVf
V0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQor
CiB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmgKaW5kZXggMWY1NjYxNDdkZDhkYzk3MzY4YjJjZTkzODY1NGU2NTZhMmZiMzRjMy4uMmZjOWYw
Njg5YTQ3YjdiYzEzMWVlYTAzYzg4NTYzNTUyZGZlNTg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
IDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0QWN0aXZlRE9NT2JqZWN0PiB7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sgfCBKU0M6Okhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCBkYzYxMGY3MGE0
NzA4NTNkMTY5ZTdmN2QwYTM1MTNmNjllM2FkNWE0Li5jMGE4MTE3ZjAwNWRhYjk3MGI2ZWE3OWZm
MjA2MzhmN2RjMGY3ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTIzLDYgKzIz
LDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM1LDkgKzM2LDEyIEBACiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQ0Miw2
ICs0NDYsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9u
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3QKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zTm90TmVlZGVkQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRoQ0VSZWFjdGlvbnNOb3ROZWVkZWQiKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q0VSZWFjdGlvbnM6OnN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0
YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RDRVJlYWN0aW9ucy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0Q0VSZWFjdGlvbnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0
aW9ucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q0VSZWFjdGlv
bnMpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlv
bnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2
bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDRVJlYWN0aW9ucyk7CisgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDRVJlYWN0aW9ucy5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdENFUmVhY3Rpb25zOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICBy
ZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6OmFuYWx5emVIZWFwKEpT
Q2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
cy5oCmluZGV4IDk4OTNhMTI1YjhiMDAxOTFiMDMyOTc4NTNiZjMzYTE3YTllMDg0ZmYuLjRmNjdh
NzBjOTBmNTVhNDVkMjc2Y2FiMDBiZTY0Yzc5ZGU4ODFkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9u
cy5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RDRVJlYWN0aW9ucyA6IHB1YmxpYyBK
U0RPTVdyYXBwZXI8VGVzdENFUmVhY3Rpb25zPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJy
ZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNw
YWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpT
Q2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q0VSZWFj
dGlvbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q0VSZWFj
dGlvbnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3Bw
CmluZGV4IDEzZDY5MGE5MzQ4ZGMzMWI5MTk0NDAzZDhhMmQzOWQyM2VjMTA1NDIuLmY2MTJhNDY1
ZDFlYTgwMGE5NjRlOGUxNjRlMGI3NjM4YzkwZjNiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEsOSArMzIsMTIgQEAKICNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI2Niw2ICsyNzAsMjYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYWxsPGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdT
X0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
CiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
aAppbmRleCBlMDYwNWM5MDdjOWVkYTUyNmQ2NjJmNzA1ZTdiNDVmY2EzNDk4NjIzLi44M2MyMmNh
YzJmZDFmZTU2ZTdlZDZkMzkyYmMyYWVkMzBjMTdlODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcihKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA5OTU1ODRmNTliODQ3ZTg2
YTkwM2RmMjExODE2ODY5N2I5MzgxN2JjLi5hMGI3NzdhMDM0MTA1M2QyMmU3MTJiMGM5NzQyOGE2
NWY0MDdmMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDYWxsVHJhY2VyLmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgpAQCAtMzgsOSArMzksMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC01MDYsNiArNTEwLDI2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uVGVzdE9w
ZXJhdGlvbldpdGhECiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDYWxsVHJhY2VyPjo6
Y2FsbDxqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25UZXN0T3BlcmF0aW9uV2l0aERl
ZmF1bHRWYXJpYW50QXJndW1lbnRCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFt
ZSwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCIpOwogfQogCitKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RDYWxsVHJhY2VyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2Fs
bFRyYWNlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q2FsbFRy
YWNlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENhbGxUcmFjZXIgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIpOworICAgIGVs
c2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdENhbGxUcmFjZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0Q2FsbFRyYWNlci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdENhbGxUcmFjZXI6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3RDYWxsVHJhY2VyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBB
bmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RDYWxsVHJhY2VyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuaAppbmRleCA5MmM2ZWU4ODE4
NzkyYmZiNzg4MzlkZGQ3NzJiYTAzNTkzOWJjZjA1Li5hNzcyYmYzOWZjNjQ3Njk3MzY4YzVhMzUx
MDc5Yzc0NWU0N2FkNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBA
IGNsYXNzIEpTVGVzdENhbGxUcmFjZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDYWxsVHJh
Y2VyPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0Q2FsbFRyYWNlcihKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDYWxsVHJhY2VyPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDY2ZjIw
OGRhMzk1M2RlZjc2MGViMWU1ZWI5MDZkYzE2MjE4ZDBiYzUuLmEyMWMzMzMyNmIyYTAxYmI2OThm
YzljNTg4NzE1MTQ0MWE4MGZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjIsMTUgKzIyLDE5IEBACiAjaW5jbHVk
ZSAiSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpAQCAtMTY3LDYgKzE3MSwyNiBAQCBib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbAogICAgIHJldHVy
biBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSog
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNw
YWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQo
KTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IDI3MDM1
ZTdiOThiM2UyMjAwMGJjMTEzZTAzN2E0YWM3MzNkOTdlYzQuLmNjNjYwNDk1YjY2YzQ3MmIwOGFi
ODIxMTdiZDE5N2IxODk1ODU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENs
YXNzV2l0aEpTQgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIg
KG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAg
IH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggNmYzZTM0ZWM5
MTRkODMzZGU2ZDhjMGUxNDQ5YTVhM2QwOTlkZWRkMS4uNzBmNzYyZjdjYzg5YzIyMDM5ZWMzOTQ5
YzRhYzk4ZmFlYmI2YzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RET01KSVQuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkRPTUpJVEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCIKICNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCiAjaW5jbHVkZSAi
RE9NSklUSURMVHlwZS5oIgpAQCAtNDIsOSArNDMsMTIgQEAKICNpbmNsdWRlICJKU0VsZW1lbnQu
aCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CkBAIC0xMjg1LDYgKzEyODksMjYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNC
eU5hbWUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPE5vZGVM
aXN0Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC5nZXRFbGVtZW50c0J5TmFtZShXVEZNb3ZlKGVsZW1lbnROYW1lKSkpKTsKIH0KIAorSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0RE9NSklUOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
Cit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2Vz
KCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklU
LmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RET01KSVQ+KQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdERPTUpJVCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RET01KSVQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RET01K
SVQpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RE9NSklULmdl
dCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0RE9N
SklUOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0RE9NSklUOjphbmFseXplSGVhcChK
U0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RET01KSVQqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAppbmRleCA5YTVk
MDVkNjZlMTU1MGVhNWM5NGEwZjg5MDBiNmRmNzdiODE5YzBjLi5jYmYzM2MyY2EwZjFjODhlZGZh
YWQ0MTM1YWJkZWFlZTZhZjVlMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCkBAIC00OSw2ICs0OSwxMyBAQCBj
bGFzcyBKU1Rlc3RET01KSVQgOiBwdWJsaWMgSlNOb2RlIHsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKICAgICBUZXN0RE9NSklUJiB3cmFwcGVk
KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXgg
ZTYzMzIzOWRhZWZjZWYwNDA5YzhiNDYzYjg3MGY2NmI4MTA1ZDc1ZS4uMDY3MTlhZTBjNTc1ZjQw
YjhmMzk5MTVjODA4ZTZjYzExZGRiZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0
aW5nLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEVuYWJsZWRCeVNldHRp
bmcuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM2LDYgKzM3LDggQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMxMSw2ICszMTQsMjYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkQnlTZXQKIAogI2VuZGlmCiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmc6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
PikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7
CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0
aW5nID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RFbmFibGVkQnlTZXR0aW5nLmdl
dCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZzo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWlu
dFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FS
TklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmc6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEVuYWJsZWRCeVNldHRpbmcq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCmluZGV4IDkwZjg2MDdhZDJk
MjJiN2FiNTllZDNjMjIyN2JkMWRlY2UxNTM1MmIuLmM0NzYyMTk5MGRiMzA5OGI5ODMzZWJiYjVj
MTZlZDlhMjJiMWE4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuaApAQCAtNDks
NiArNDksMTMgQEAgY2xhc3MgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdEVuYWJsZWRCeVNldHRpbmc+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNw
cAppbmRleCBhZThlYjkxZGY4YWZmMTNjNTM1OTQ1YWZmN2Q4ZDExZjA4NzVjNjU4Li44NmFjNDk1
MzAwNTAwMmYwZTQ4MzQwM2UxYjFkMzgwODVlNzk4MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJK
U0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtMzUsNiArMzYs
OCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjAwLDYgKzIwMywy
NiBAQCBib29sIHNldEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0VGVzdFN1Yk9iakVuYWJsZWRGb3JD
b250ZXh0Q29uc3RydWN0b3IoSlNHbG9iYWxPYgogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RW5hYmxlZEZvckNvbnRleHQ+OjpzZXQ8c2V0SlNUZXN0RW5hYmxlZEZvckNvbnRleHRUZXN0
U3ViT2JqRW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFN1Yk9iakVuYWJsZWRGb3JDb250
ZXh0Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Ojpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0PikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KTsKKyAgICBlbHNlCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEVuYWJsZWRGb3JDb250ZXh0ID0gbWFrZVVu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQpOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RW5hYmxlZEZvckNvbnRleHQuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5E
CisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Ojph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dCo+KGNlbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaAppbmRleCBjMDVmYzdiZTRmZDRmNTE4
YzQxNzM2ZDZlNmY3OTVmMmEzNTdkOWRmLi41ZjhlOTQ2MTEyYzY3MjNlZDlkNzYxZDVhMmQzZGQ3
NTdjNTZkMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuaApAQCAtNDksNiAr
NDksMTMgQEAgY2xhc3MgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3RFbmFibGVkRm9yQ29udGV4dD4gewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFz
U3RhdGljUHJvcGVydHlUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApp
bmRleCBmY2ZjMDQ1YWM2MDQ5NDY4NDQyMGYxMTkyMWE2MjYzMzkxOTYzMTNkLi5jMWJkMzhkNjc4
NDI4NjNkMGMyYWFiNjYyYWZjMmZlZGNkMWJkZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCkBAIC0zMSw4ICsz
MiwxMSBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJK
U0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzE0LDYgKzMxOCwyNiBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsCiAKICNlbmRpZgogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIGVs
c2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RXZlbnRDb25zdHJ1Y3Rvci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1
dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMo
KS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VO
RAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjph
bmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oY2VsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA1ZTBiZWRkMmQzMTkwMzQwZWJj
MjMyZmNjYzMwZjQ0Yjk4OTczZDljLi45YjEzZTZjNWE0ZDI1Njg1ODU4ZDhkN2E3N2JjMGJkNzQ0
ZmQ5ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTQ5LDYgKzQ5LDEz
IEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IgOiBwdWJsaWMgSlNFdmVudCB7CiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVz
dEV2ZW50Q29uc3RydWN0b3ImIHdyYXBwZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IGM0Y2VkNTA5MDA2NGUzNjZlMzUyM2U5NjM2ZGFjNDQ4YTM3ZmU4MDYu
LjM3YmRkMjBjODBjNTRkNjFhMzc5ZDE3NmI0Mjk2Y2EwZWE2MTMyMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFy
Z2V0LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCkBAIC0zMyw5ICszNCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1Niw2ICsyNjAsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShKU0dsb2Jh
bE9iamUKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6Y2FsbDxq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqY2FsbEZyYW1lLCAiaXRlbSIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3RFdmVudFRhcmdldDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RFdmVudFRhcmdldD4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV2ZW50VGFyZ2V0ID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3RFdmVudFRhcmdldCk7CisgICAgZWxzZQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RFdmVudFRhcmdldCA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdEV2ZW50VGFyZ2V0KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEV2ZW50VGFyZ2V0LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNo
YWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUi
KQorICAgIGlmICgmSlNUZXN0RXZlbnRUYXJnZXQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0g
JkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRh
Lm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdT
X0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBK
U1Rlc3RFdmVudFRhcmdldDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRU
YXJnZXQqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggOTUxZTQ2ZGU2NGFiMDI1
YWFmMWZmMDhkMmFkM2MzOWUwYTRiMzdjYS4uMWZhZmI0NjA5OWIxNWQ0NjJmZTM5ODU3NGIzMGZj
Zjg2NWQxZWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTUzLDYgKzUzLDEzIEBAIGNs
YXNzIEpTVGVzdEV2ZW50VGFyZ2V0IDogcHVibGljIEpTRXZlbnRUYXJnZXQgewogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9p
ZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogICAgIFRlc3RFdmVu
dFRhcmdldCYgd3JhcHBlZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRl
eCBhYzc0MTEyZWVkNDE3YjY1NTI0YzIyYTU2Njc0MWE3OTQ2NGYxNWE5Li42NWE0YWM2MjdhYzM1
ZjAwMWRhMDNjNThhZWEwMjc3ZmVkZDAzMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAt
MjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEV4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMTg0LDYgKzE4OCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25O
YW1lKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RXhjZXB0aW9uPjo6Z2V0PGpzVGVzdEV4Y2VwdGlvbk5h
bWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJuYW1lIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dEV4Y2VwdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
KyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlvbi5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0RXhjZXB0aW9uPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RFeGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0RXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RXhjZXB0
aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEV4Y2VwdGlv
bi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVz
dEV4Y2VwdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklO
R1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmgKaW5kZXggOWMyNmRhYWQxMTZjNGZiNDhkNTBiZjU2MWIyYmM0ODA5MTYwMzYyMi4u
NjMxNjJkOTAyYjk1M2IxMDFkMThlMDcyYjFiODJlMjIzYTljYjNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uaApAQCAtNTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0RXhjZXB0aW9uIDogcHVibGljIEpT
RE9NV3JhcHBlcjxUZXN0RXhjZXB0aW9uPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0RXhjZXB0aW9u
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEV4Y2VwdGlvbj4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZWY2NjAz
MzRlMzE4MWI2N2RlNTI0YjNkMzVkZjE2NTY0ZjY1NmFmNS4uY2FjZGU0M2RkMTU0NTRlOTg2Mjdj
Y2ZjZWQ3ODg4NmYwNDIyZjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlz
b1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE5NCw2ICsxOTgsMjYgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUFTZWNyZXRBdHRyaWJ1dGUoSlNHbG9iYWxP
YmplY3QqIGxleGljYWwKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU+OjpnZXQ8anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUFTZWNyZXRBdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJhU2VjcmV0QXR0cmlidXRlIik7CiB9CiAKK0pTQzo6SXNvU3Vic3Bh
Y2UqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0
dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihjZWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCmluZGV4IDgwYmQxODI4MzJhYmZkZDQ1
ZTI3ODlmYzhjYjBlM2FjNTk1MGNiM2MuLjNhZWU0ZjM4M2NjZDRmMzU3Nzg5MThjMjBjMTkyYWYz
MDMzMGZkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaApAQCAtNDks
NiArNDksMTMgQEAgY2xhc3MgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA6IHB1YmxpYyBKU0RP
TVdyYXBwZXI8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IHsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBS
ZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cAppbmRleCA2NjYzM2IyNjkxYzY0OGFkYTZiZTFiYmZjMzZkMmEzNTAyMjExZjI4Li5jNjhmZmQ4
OGYwMzk2OTZjYzk3OTI2YzBjNjE5MTljNjQ3M2M2Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEdsb2JhbE9iamVjdC5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01BdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTEwMCw2ICsxMDEsOCBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjc3OSw3ICsyNzgyLDE5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjCiAKIEpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdsb2Jh
bE9iamVjdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewotICAgIHJldHVybiAmc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+c3Vic3BhY2VGb3JKU1Rl
c3RHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RHbG9iYWxPYmplY3QuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RHbG9iYWxPYmplY3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCBjbGllbnREYXRhLm1faGVhcENlbGxUeXBl
Rm9ySlNUZXN0R2xvYmFsT2JqZWN0LmdldCgpLCBKU1Rlc3RHbG9iYWxPYmplY3QpOworICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2xvYmFsT2JqZWN0LmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0R2xvYmFsT2Jq
ZWN0Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7CiB9CiAKIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmgKaW5kZXggNThmNzM2ODQ3MmU5YjQ1NzljMGQxNTE0ZjQxZDFiZDQxNzM1NzJiZS4u
ZTJmYWEwM2FiYjQyODQ2MjRkMTU4NmYxYjk4NDk0MzllOTU0M2NhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuaApAQCAtNDksNyArNDksMTIgQEAgY2xhc3MgSlNUZXN0R2xvYmFsT2JqZWN0IDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0R2xvYmFsT2JqZWN0PiB7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pIHsgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KICAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmlu
ZGV4IGQ1YTlmYWI5ZTBiNjdmMTU2MDc5ZjA4ODcxYmRhZGUwNWUxYTIzZWIuLmFlOWVkZTA2M2Q4
NTk0NmI0MTQ3ZWRjZmQzNDhjMTA2ZTZiODExMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIyLDE2ICsyMiwyMCBAQAogI2luY2x1
ZGUgIkpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI1Myw2ICsyNTcsMjYgQEAgYm9v
bCBzZXRKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWwKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdl
dCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgp
OworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0Nl
bGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29u
c3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05P
UkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5
emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4IDFhMDIzYzdmMTViZmMzNDgyN2Y4MDI1Yjgw
ZGZlNGZmOGMwYjE2NjguLjc5NTNiMGVlOGViMzZiNDM1NTFmZDJkY2MxZjY2ODU5Yjc0OWU4OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAt
NTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEluZGV4ZWRTZXR0ZXJOb0kKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNzUwNGFlMjA5YTUxYjI3NTA2ZDY5ZjQw
NjA4MDMxNjJlN2RiNmRiNy4uNTNiOTVmNTdjODM1ZTZkY2VkNDQzNTIxNGE1YTQxZDU0ZDNjMWM4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAKQEAgLTIyLDE2ICsyMiwyMCBAQAogI2luY2x1ZGUgIkpTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjUzLDYgKzI1NywyNiBAQCBib29sIHNldEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsRwogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAor
SlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpz
dWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNw
YWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24g
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQorICAgIGlmICgmSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNw
YWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1
cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCBlMzY4M2VmZGU2ZGJlM2I3MzgwNjk5MTBlZDBmNmNi
NWFhOGFiNWFkLi4xY2Q1NTY4ZmQ5ZDAzZWYxZTgwYmM3MzMzNmQ3YzViZTE3N2UyNGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5o
CkBAIC01NSw2ICs1NSwxMyBAQCBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RJbmRleGVkU2V0dAogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA5NjlmYjAxZjFjNTQwZDFiZDM0NTBmYWFi
MGE2Y2Q0MDYxYzkwYjEwLi5lMTRiY2I5ZjM5MDk1MDFjMGI5MDA2ZTMwNGE5NTQ0MmM0MGEwMTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnROdW1iZXJzLmgiCkBAIC0zMCwxMCArMzEsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjg2LDYgKzI5MCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZUZ1
bmN0aW9uSQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyPjo6Y2FsbDxqc1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5
cGVGdW5jdGlvbkluZGV4ZWRTZXR0ZXJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgImluZGV4ZWRTZXR0ZXIiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7
CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7
CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1
YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2Fs
LWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICBy
ZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
OjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaAppbmRleCAwNWE5MmY5ZGE3YWU4ZThlMzNmYjMxNGYyMTY3MTI2OWVkYmI2MzM2
Li5mZmYxNTI2YzU1YjZiY2IxOWEyYmJlZWExOTAyMDIwYWM0YjNiMjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01NSw2ICs1NSwx
MyBAQCBjbGFzcyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFRlc3RJbmRleGVkU2V0dGVyVwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwNzdhOTFlMGUyNzJhYTg3M2Qy
MTFkYjExOTdhNWRhMDkwOGZlZjdmLi40YTUxZmM1OTM4NjhjZjA5N2I4M2E1OWFlNmI5NWUxNDA1
MDQwNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdEludGVyZmFjZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTM4
LDEwICszOSwxMyBAQAogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXN0U3VwcGxlbWVudGFsLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0
aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTExMCw2
ICsxMTE0LDI2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKCiAgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uRm9yRWFjaENhbGxlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJmb3JF
YWNoIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEludGVyZmFjZTo6c3Vic3BhY2VG
b3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBj
bGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0SW50ZXJmYWNlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50
ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRlcmZh
Y2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SW50ZXJmYWNl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0SW50ZXJmYWNlKTsKKyAgICBhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZS5nZXQoKTsKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEludGVyZmFjZTo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisg
ICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7
CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNw
YWNlOworfQorCiB2b2lkIEpTVGVzdEludGVyZmFjZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggMzU2ODk3
MTQ5NDRjYWI5OTZmNDk2ZTMwOWEwZGM3MjZjYmZhNGQ3Ni4uYTZlYTgzYzZkNGFiZWE4OGNmM2Zj
MzZmNzA5Yzc5ZDdmYmJkZmNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtNTMsNiArNTMsMTMg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSlNUZXN0SW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3Jh
cHBlcjxUZXN0SW50ZXJmYWNlPiB7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1w
bCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiAKICAgICAvLyBDdXN0b20gYXR0cmlidXRlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKaW5kZXggNjVmMjE5
MTk3ZjQyZmUwNTY2MzU5ZWI0NTFkOWY5NjBkYzMzYjkxNC4uMjJlZmViMDgzYWY4Yjc2MmNiYTEw
OTc4ODMwMTk2YjYxNjI1ODk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmli
dXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4NCw2
ICsxODgsMjYgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVSZWFkb25seShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEcKICAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Z2V0PGpzVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyZWFkb25seSIpOwog
fQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBz
cGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgpKQor
ICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKTsKKyAgICBhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmdldCgp
OworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlND
ZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENv
bnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdO
T1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKaW5kZXggYTBmMGNlZmMxYWM2MjUwMGNkNzc1
MDM3MjFiN2YzYzQxMWY0MDU2Yy4uYjE5ZjM4NTUyMzA0NWJlNzQ1ZGM2YzU2ODZjODNhYTdkMjI1
NDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNlTGVhZGluCiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAg
ICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggMmE2Yjg2YWZkMDliYzIyYjc2MmNlNzc2N2UwYTVkYjUz
MDA1NzQ1Ny4uMzAxNzM2OWVkNTQwMTkzMzQ0MWQ0MzJhM2ZiYjg0ZWM4NDgzMWJjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SXRlcmFibGUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0SXRlcmFi
bGUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJm
YWNlLmgiCkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5o
IgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMjM5LDYgKzI0MywyNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpKUwogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJv
dG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgImZvckVhY2giKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0SXRlcmFibGU6
OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0g
KnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYg
c3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNw
YWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0
aWJsZU9iamVjdCwgSlNUZXN0SXRlcmFibGU+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RJdGVyYWJsZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0
SXRlcmFibGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0SXRl
cmFibGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RJdGVyYWJsZSk7CisgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RJdGVyYWJsZS5nZXQoKTsKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4o
InRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEl0ZXJhYmxlOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4g
c3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0SXRlcmFibGU6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2Vs
bCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdEl0ZXJhYmxlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCmluZGV4IGY3MjdiYTFi
MDViMzg5NTk4ZWZkYzhlYWIxYjg0NmYwODk0YWZiMjUuLjBmMzc4MDY2YzU0ZTNmMDBiZjQ5NmY1
N2Y5ODBmOTFmMzE4MzIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCkBAIC00OSw2ICs0OSwxMyBAQCBj
bGFzcyBKU1Rlc3RJdGVyYWJsZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEl0ZXJhYmxlPiB7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0SXRlcmFibGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0SXRlcmFibGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOGVjZTFmNDZiZjE1ZGIwZjMyZWFmNWVlYWRiOGJjYmRh
YzJjODM0ZC4uOTRlMDdlZWJkZTM1MjU2OWIyNzgzOGZhYTdiMDM4ZDFiZjk3ZmViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuaCIKIAorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01CdWls
dGluQ29uc3RydWN0b3IuaCIKQEAgLTI4LDggKzI5LDExIEBACiAjaW5jbHVkZSAiSlNET01PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAKQEAgLTIzMyw1ICsyMzcsMjUg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FsbDxqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKIH0KIAorSlNDOjpJc29TdWJz
cGFjZSogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJz
cGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRw
dXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2Vz
KCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19F
TkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaAppbmRleCAwMGZhMjNiMjY5YzA1YWE3ZjNhNzIwMjI1YmQ3NmYwNDc3MzM1
OTE1Li5hNDI5YmNkMDk2YTE0MTBlYjkwZTliZGI3ZWU2MmQzMDk3ZTA1Mzk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDYsNiArNDYsMTMgQEAgY2xhc3Mg
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01PYmplY3QgewogICAgIH0K
IAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKIAogICAgIC8vIEN1
c3RvbSBhdHRyaWJ1dGVzCiAgICAgSlNDOjpKU1ZhbHVlIHRlc3RBdHRyaWJ1dGVDdXN0b20oSlND
OjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwCmluZGV4IGI2ZGQwYjFiYzE1MjlhN2Q1YzI5MGY4YjI5Yjc1ODc4YmQy
YTY4NjMuLjQ0ZDJlOWJiMzRkMWU5ZjBhM2MzZWE0Yzc5NjU4ZmViNjgxZTkwNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTIyLDYgKzIyLDcg
QEAKICNpbmNsdWRlICJKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAKICNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgpAQCAtMzEsOSAr
MzIsMTIgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CkBAIC0xOTQsNiArMTk4LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Pjo6Y2FsbDxqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgIm1ldGhvZCIpOwogfQog
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9
IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4pCisgICAgICAg
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIp
OworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
KyAgICBpZiAoJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnZpc2l0T3V0cHV0Q29uc3Ry
YWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBj
bGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JF
X1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30K
Kwogdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCBmZjE4ODBkODQ3NjZjY2QwZTVj
MzBkN2Y5NzM0ZDQwMjllNmVmMWJjLi5mMzkwZDA1N2M4NTZjNTE2ZTA3ZjllNjkwNmQzMGFkNmIz
Yzc3YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAg
LTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgOiBwdWJs
aWMgSlNET01XcmFwcGVyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlCiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5k
ZXggYjUzYjk4ZDQwNDMxNDVlMDgzMWMwMGFjNWM2NWUzNTI2NjA1MDI3MS4uOTBhNjg0OGI5ZjRi
YzAwMzQ0YmEyMWUzMDUyYzNkYjMwYTkyYjdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIyLDYgKzIy
LDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNw
YWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKQEAgLTI5LDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJh
eS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMyMSw2ICszMjUsMjYgQEAgYm9vbCBzZXRKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWMKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpK
U0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0
Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJ
R05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxs
LCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
LmgKaW5kZXggZmRkN2IwM2VjMmZlNWExMWRlMzI5ZDZlMzVjMjNmMjg4YWMxYzE1Yi4uZTRhMjI4
NmNmY2M0OWVlZDM0MWI3M2M5YTg1YWE0ZDBhMGNlNWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTUsNiAr
NTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIDog
cHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRBbmQKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCmluZGV4IGEzZDU4MjMxZTJlNTQyMWIyMzRlMTBkNWFiMWQ1ZjEzNzI2ZTBiZjIuLjFl
OWI4MDViMDRkYTkzODRhNDQ0NjMyZTEzYzA0NTk4OTc0YTAxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0yOSwxMCArMzAsMTMgQEAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zMjEsNiAr
MzI1LDI2IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCoKICAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0KCkpCisgICAgICAgIHJldHVy
biBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKTsKKyAgICBlbHNl
CisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uZ2V0
KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FS
TklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAppbmRleCAxOTc1Nzk2Zjg2Njg3MjVl
ZDAyZjZkNGU0ZmIwMjI1YzU5NzE0YmVhLi4wNjA1MzZiYWNhYmQ4OTQ4MTJhMjMzZjRlY2RhYmQx
NjA2YjI1ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3Mg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24gOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFRlc3ROYW0KICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGUyOTE4ZjUy
NGYyMTViN2UwOGZmODVmZDNjZTUxYTA0MzVmYjI5NDQuLjVlZTFiY2Y1M2I5NmZiMjRkN2E5MDdm
ZjYyZDM2NmM2MjVhZDNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgiCiAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CkBAIC0zMSwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1
ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzc3LDYgKzM4MSwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlRgogICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEu
c3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuaAppbmRleCBjYTIwMWUwNzg3NDMxMzA1NWFhY2Y3YjIyMWUxZDllYjZlNDE3YjBkLi4zNjYy
YTNmZjJmYTBmYmMxOTFjZjlmN2QzOWMwZTY0NDVkNzViNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaApAQCAt
NTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZEEKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA4MjFkN2M0N2IwYzYzNTM3MGExNWFmN2Nk
NDQ1NTAzZjM3YzA5NTM2Li4wNmI2YTFmOTkzM2I1MTg0MTZjOTVhMWYyMWYzMGJkODBlMGM3NWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAgLTMwLDkgKzMxLDEyIEBA
CiAjaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VS
TC5oPgpAQCAtMjA3LDYgKzIxMSwyNiBAQCBib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRQogICAgIHJl
dHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFj
ZSogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29u
c3RydWN0b3IuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29u
c3RydWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYg
KCZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5kZXgg
ODU5Y2QzYmRhOWJkMjI3YTA4OTc2YzdjMTE1YzNiOWI4NjIwYjliMC4uMDc0MDM4M2E5ZWI4ZTBj
Yjg2NDZmYTQ0NzkwODZjZThiZTU0NDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oCkBAIC01MCw2ICs1MCwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yIDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gewogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6
OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90
ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggODc4M2UxNWMyODEz
NzY2MzRmZGM3NWRlZmZjODVkZGE5NjU0ODlhMi4uMjE2OTUyYjQ3MWQyYTRiNjQ5YzFkNTY5YzU3
ZmQ4ZGViMzFlZWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1
YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIzNSw2ICsy
MzksMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE8KICAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5n
ZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpK
U0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0
Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJ
R05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyLmgKaW5kZXggMTM4ZDRjMThmOGY0NmJjMzQzMzEwOWJkMDMy
Mzk1NjM3ZDBhYzM5YS4uMzM0MmI3YjUxMmEyZWQxZjM2YzdjZWEyMDljODFhY2FkMDc3OGRmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaApAQCAtNTQs
NiArNTQsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyIDogcHVibGlj
IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWREZWxldGVyTm9JZGUKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAppbmRleCA1NzlmMmEwZTZhOGM3YTkyNTU2MTlkODQ0NTI2YmE4ZGRi
MmRhYThkLi45ZmJiMzhjN2Y1YzVmY2UzY2Q4MzdiMzQ4MmEwNTRiYTMxYmVhMGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjQ5LDYgKzI1MywyNiBA
QCBib29sIHNldEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbAogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24pOworICAg
IGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyVGhyb3dp
bmdFeGNlcHRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IDA1NWQzZGY5MjM4MThjMDA3NjdmMTg5NWRm
NjcyNWY1YmMwZWRmZjUuLjVmYTQyZDVmYmE2MTEwZWMwODViN2RhOGM5ZWFmYzEwMDYzODM3OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oCkBAIC01NCw2ICs1NCwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkRGVsZXRlcgogICAgIH0KIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFj
ZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9p
ZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2Vu
Y2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDI1MDIzYTMxYTE0NjQyMjg3YTBiMWI1MGRkZjRk
ZjQ2MTlkZGYyNWMuLjA5ODdlZWE5NjUxOTU3YWNmZjc2ZjcwMTZmZGNlOTFlYzAzZTFkYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjY3LDYgKzI3MSwyNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlRnVuY3Rpb25OYQogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlRnVuY3Rpb25OYW1lZERlbGV0ZXJCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNh
bGxGcmFtZSwgIm5hbWVkRGVsZXRlciIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcik7CisgICAg
ZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQor
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIqPihj
ZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgK
aW5kZXggYTg1OGEyNzE1NGJkM2M2MzY0ZmM0NWE2NDdmZjQyYjZiNDcyNTA2Zi4uZTQ1Yzc0OTA5
YjkyMjlhN2EwZjBiMjVlOTA2MDFmMjE3MTllODQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU0LDYgKzU0LDEzIEBAIGNsYXNzIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
TmFtZWREZWxldGVyV2l0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7
CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlND
OjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVh
cEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5k
ZXggZjZmMzY2ZTIyMmU0MTQ0YTc0YjYzNzU0ZmJkMDc4OThmOThiNjZjNi4uZWQwMzNhZWM5MDk3
ZDUwNTJhYTU3MzRiMDE4OTY4NGU0ZDA3ZWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAj
aW5jbHVkZSAiSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5
LDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTI1MSw2ICsyNTUsMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2wKICAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVu
dERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuZ2V0KCkpCisgICAgICAgIHJl
dHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNE
ZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRH
ZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIpOworICAgIGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcio+KGNlbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRl
eCAyZmVhOGQ5MGY0ZjRhMTg0MmM4ZTE5MmFmMzVkODVjN2QxODY4OWUyLi41NDA1NjVlOTYwMzBj
YTllNWFjODQzMWJjMjMwYjlmYzFiZTMwMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaApAQCAtNTQsNiArNTQsMTMgQEAgY2xhc3Mg
SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIgOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3ROYW1lZERlbGV0ZXIKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZt
KTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChK
U0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpI
ZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKaW5kZXggY2EwOWQzYjgxMzY5MjQx
YjVmZDYwMzdiZTQ4ODk2NDAyYjg2ZDk3Yi4uMWVhMTJmZmU5YmVlOWU3MTc4ZmE4OWIzZTNjNTU2
NDQ4ODIwMjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaCIK
IAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxMyw2ICsyMTcsMjYgQEAgYm9vbCBzZXRK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7
CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdldCgpKQorICAgICAgICByZXR1
cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoPikKKyAgICAgICAgc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmdl
dCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9X
QVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGg6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGgqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oCmlu
ZGV4IDk2YTk4YzViYjk0NGQyYmVjOGZjZDNiOWU4MTZkOWFkZGU0Mzc5YzQuLmVlYTY4YmQ2YzU4
MzM5YjczZTVhMzVlNTZjNmU2MzQ4MDgzZjI2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGguaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+IHsK
ICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0m
LCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpT
Qzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAg
c3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBiNzY5ZmE5MTA5MGQ4YzA5YmY5MTgwYzVm
OGE0OWVjNjdjODk0MDcyLi4wYWI4ZWI4MTMyYWZjZmIzZmI1NDljOTczZTNjY2Q1ZDc5ZmZlYjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5o
IgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgpAQCAtMjksOSArMzAsMTIgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjEzLDYgKzIxNywyNiBAQCBib29sIHNl
dEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYgogICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6
OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0g
KnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYg
c3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+
KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9n
aWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJh
aW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5k
KHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICBy
ZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmFu
YWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyKj4o
Y2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCmluZGV4
IGZlOThiNjExOTY2NmYyZGM3NGJhMWQwMDNiY2U4ZjIwZmNhMWY0MjYuLjJjMTgxMGY5ZjMyYzY5
MzYwMzg5NWExNjY1NmMyNGIxYWU0YzU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllci5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkR2V0dGVyTm9J
ZGVudAogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA0NWVlYjJiZWY5ZDdjMDE5
ZDA0ZWQyZTBmZTFiYWU4ZWM1MWZmNTM5Li43NjUxNTA1OTZkMmZhMmU3NjhiMDIzZDM1MjljN2Ex
N2U0YzZiMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI0Miw2ICsyNDYsMjYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyUHJvdG90eXBlRnVuY3Rpb25HZXQKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5h
bWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGVGdW5jdGlvbkdldHRlck5hbWVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgImdldHRlck5hbWUiKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+KQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyKTsKKyAgICBl
bHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkR2V0
dGVyV2l0aElkZW50aWZpZXIuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CisgICAgaWYgKCZKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAg
ICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7
Cit9CisKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgKaW5kZXggNGZh
MDJkMTQ4M2NkNDU3MzQ0NzZiMjcxNmE1YzhhMTFhMmEyZDFhMy4uZDE5ZDY4Zjk3YTE3NzI0ZTVk
Nzg2NTAzYjk4YmQ1YjdlYTkyNWI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllci5oCkBAIC01Miw2ICs1MiwxMyBAQCBjbGFzcyBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRHZXR0ZXJX
aXRoSQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDQ2NzUxNTFlZGUxMzcyYjMxNDYx
ZTg1YmVmNmNkNzA4M2Q4MTU1MDQuLmUxY2M2YzcwMzM2ZjdiZWY0MzZiMDUxM2FmMjk3N2NkYzQ1
YTBhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0yNzYsNiArMjgwLDI2IEBAIGJv
b2wgc2V0SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSkpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERh
dGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBh
dXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFj
ZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
Zmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAor
ICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
cjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmgK
aW5kZXggYzExNGQyOGFkNTdhYmE2MTY3ZGE5NmFlZjAyMjI0MmU1OTQ5NzIzMy4uYjcyYjZkMzhh
OTk5NTQ0ZDJmZTYzZmE5NjYyNGNiM2UxMWZjMzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggYjVhODE2ZGU0NjhhM2ZiNDQ4NzA2NDliNzVhMTU5
YzFiMmJhOGI2OS4uYjMzNDE4MGY2OTNiYTY4Zjk1NjNhN2Y5OWQzOGY1ZGU0OTgwMTg1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI3Niw2ICsyODAsMjYg
QEAgYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG8KICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbik7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1
bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNv
bXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChz
cGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0
dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oCmluZGV4IDQ3OWYxNjFkOTg4NjEwNDc4YWViMjEzMTlkN2IwNDI5NzEyNzQy
ZjguLmE5ZjdjMmYzNTVlYmRhMWI5ZWRjZDkxMzRkNjg0YWQxNzZmOTgxMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaApAQCAtNTUsNiAr
NTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiA6IHB1Ymxp
YyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyVGgKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA5NzIwZjM2OWY3ZDM3
ZjNmOGVjMjU5MWU0NDA2YTM0NTJmZDExZDhkLi5lNDM4MDViMGY5OTlhMjU5ZWUzOWQ5ZGNhZTkx
OWQyN2ZhZGE3MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllci5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTMwOCw2ICszMTIsMjYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyUHJvdG90eXBlRnVuY3Rpb25OYW0KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJQcm90b3R5cGVGdW5jdGlvbk5hbWVkU2V0dGVyQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJuYW1lZFNldHRlciIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4pCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIpOwor
ICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRo
SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5y
ZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21w
YXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQor
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAppbmRl
eCBkMTUzNWNkZmE4YzQ5NjMxNGY5NTlkYzY0OTg5ZTBkM2UyOTg0NDY1Li42N2M1ZjgyNDUxNTBk
MTU0MGRhYjFlNWZlMzc2NWFlODkwMjdmMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3ROYW1lZFNl
dHRlcldpdGhJCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3Rv
cihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAg
fQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggNjQ2OTRkMWU0OGUxMjgyZGRkMTdjN2IzMjJjODk2
ZDU1MTBlNTZjNi4uMjU4MDFkMDQ0Y2U4ZDhhZGViYzNmOWRhY2E5OTFhMDNkYzc5ZTBmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKQEAgLTMxLDEwICszMiwxMyBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zNTEsNiArMzU1LDI2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlw
ZUZ1bmN0aW9uCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJv
dG90eXBlRnVuY3Rpb25JbmRleGVkU2V0dGVyQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJpbmRleGVkU2V0dGVyIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7Cisg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmdldCgpOworSUdOT1JFX1dB
Uk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigi
dGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNw
YWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklO
R1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBh
bmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oCmluZGV4IDNlODJlYWY2ZWZkMmMxMWJiNmY5YjY3
Njg4M2VhOTBhOGNkM2JiODMuLmRiYzQwNzM4ZDEyMGRlNjQwMDk0Zjc3MmM4NzdkY2VhYTI5OTcw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGVyV2kKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNl
bmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCA3YjFjYzg0MjFmODVkMzFiMjAwODEwZjEyODg3NDE1
MmQ2OTEyMzAxLi5jZGI2MmYwNWQ2M2FhYzcxZWJlY2Y0N2YyZDAxYjZhNTdlNWRlOWNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oIgogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzEsMTAgKzMyLDEz
IEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQwMyw2
ICs0MDcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyUHJvdG90eXAKICAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OjpjYWxsPGpz
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGVGdW5jdGlv
bkluZGV4ZWRTZXR0ZXJPdmVybG9hZERpc3BhdGNoZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAiaW5kZXhlZFNldHRlciIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERh
dGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAg
IGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5n
ZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWlu
dHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGll
bnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dB
Uk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwog
dm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaAppbmRleCBlYjM3ZDIzZDg1OWQ1ZTdiY2Q1
MDc3ZmQxNWExODIyZGVkYjA4ZWNmLi5hNTZmNzJiMGYwZDY1MjMzYmRhNWRhYTI3ZjkwMzIxNDFk
OGE3ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIgOiBwdWJsaWMgSlNET01XcmFw
cGVyPFRlc3ROYW1lCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpQcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggYWEyYTc1OTQwYWNhMzAxZTMzMmNh
MzAzYzBlZWY5NWYxMzAzYjk1Zi4uYzYwMTdmODMwZTJkZTdmMDI3MzkzNGQzY2MyYmNiMmUzOGNh
MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVy
cmlkZUJ1aWx0aW5zLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
U2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJh
Y3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
QEAgLTI2Myw2ICsyNjcsMjYgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWwKICAgICByZXR1cm4g
cHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zPikKKyAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWls
dGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyk7CisgICAgYXV0
byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlk
ZUJ1aWx0aW5zLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlm
ICgmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluczo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJp
ZGVCdWlsdGlucy5oCmluZGV4IDdkZTUxZGY5ZDU0MDYxYjI3MjdlMmRiNTNmZDRlZWYxMjAwOTVh
NWQuLjA1ZmE0OTVhYzYwYzU2YjZmNzg2YTA5ZGE2YzZkNTdlNmY0Yzg0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaApAQCAt
NTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlu
cyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkU2V0dGUKICAgICB9CiAKICAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBK
U0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IGM4NGIx
MDY0YzRlMWIxMjdiOGM1MmY4NDkzNWIyYzNiMjk2YTMzZjguLjM5NjIwOWEzMTBjOTg5NWQ1MGRh
N2VkMmMyOGQzM2Q4M2Y5ZGQ0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcApAQCAtMjIsNiArMjIsNyBA
QAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgi
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFj
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpT
RE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zMSw5ICszMiwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpAQCAtMzQ2LDYgKzM1MCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VGdQogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXM+
OjpjYWxsPGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlT3BlcmF0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsICJ1bmZvcmdlYWJsZU9wZXJhdGlvbiIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNl
KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpKQorICAg
ICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxK
U0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllcz4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcyk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklU
KHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXM6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6
SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBj
ZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMqPihjZWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmgKaW5kZXggYTAxNDNkNzRmOTU2YzZhNTdhOGEyYWU1MjFlODZkNTdkMTkwZDlm
NC4uNGQxZWUwZWU1MDU0ZDFjMGUzYThjNzI0MjgxM2UxOTU1OTYwMmNhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVz
LmgKQEAgLTU1LDYgKzU1LDEzIEBAIGNsYXNzIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRTCiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5j
ZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlND
OjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGll
c0FuZE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4IGI5ZjcwMjU0YjE4NDczZDFkMjZiNWZhN2M1
MDc3NGM0Mzc4Zjk0MzkuLjE5ODlmOGExZmNjMTZjNzIyMGYzZGRhZGJiOGFkMjk0MGViNjdkMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMuY3Bw
CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3Jn
YWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCkBAIC0zMSw5ICszMiwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzMzLDYgKzMzNywyNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPjo6
Y2FsbDxqc1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRl
QnVpbHRpbnNJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVPcGVyYXRpb25Cb2R5PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInVuZm9yZ2VhYmxlT3BlcmF0aW9uIik7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlND
OjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMpOworICAgIGVsc2UK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJs
ZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5z
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluczo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluczo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zKj4oY2VsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmgKaW5kZXggZjg1
NjQ2ZmVhZjI4YWQ2NDgzM2FhMGJhY2QxMDQ4OWRlNDM2MzdjNC4uY2RmZDRhNDcyNzM4OTRjZTk0
YmQwYjMwY2RlYTBjOTYzNzM3ZTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0Fu
ZE92ZXJyaWRlQnVpbHRpbnMuaApAQCAtNTUsNiArNTUsMTMgQEAgY2xhc3MgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIDogcHVibGlj
IEpTRE8KICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2Rl
ID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7
CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXIm
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJl
IHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCAxZmIzZjFiZWE4ZGFm
MmYwZDA5ZTI5NmM1ODdmZmUwNDcwODYzZmU4Li5mMDZhZGJjOGUxZDczMGExNjJmYjAzMjAxYjNk
NDAyZGJkNTQ4YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
SlNUZXN0Tm9kZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCkBAIC0zNiwx
MCArMzcsMTMgQEAKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00
NDMsNiArNDQ3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBsCiAgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pT
T05Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvSlNPTiIpOwogfQog
CitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROb2RlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3Bh
Y2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9k
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpp
c19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Tm9kZT4pCisgICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5vZGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVGVzdE5vZGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0Tm9kZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5vZGUpOworICAg
IGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Tm9kZS5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdE5vZGU6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQor
ICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2Up
OworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBz
cGFjZTsKK30KKwogdm9pZCBKU1Rlc3ROb2RlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3ROb2RlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAppbmRleCBjMzViM2M0ODg3MmNiZmQyZTgxMDZiYTI3
OGI0N2NjNTM1MDRjMzc2Li40YmI2OWViNWViMGM1ODJiZWJjMmNiM2E3YWZkZWIwMjEzMzFiZDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb2RlLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEpTVGVz
dE5vZGUgOiBwdWJsaWMgSlNOb2RlIHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RO
b2RlJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhyb3dTY29wZSYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdE5vZGUmIHdyYXBwZWQoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggZjU2ODQzMjRhNjY3YmE5NmRlNzUzNjA4MTg3M2QyNTIwYWE4ZTUz
NS4uYjQ5MTIwZjNmYWQxMDgzYmYzZTkyNjM1NTNjODIyZWM1MGU0ZjY3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgpAQCAtODksOSArOTAsMTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Fy
cmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtODk0OSw2ICs4OTUyLDI2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
SlNHbG9iYWxPYmplY3QqIGxlCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNU
ZXN0T2JqOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0T2JqLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPYmo+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPYmogPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE9iaik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPYmogPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3RPYmopOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0T2JqLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1j
b2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAg
IGlmICgmSlNUZXN0T2JqOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJh
aW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9X
QVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0T2JqOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBiYmJm
YTA0OWViMjBjMGNmZWYwNzk2M2Q0NmVjYTc1NmM4YzFhYjdjLi42ZDU4ZWM2ZTUwNjI3YTk1YTIw
MGFkNTkxMDE4YmQ4NTUwYjQ3ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC02Myw2ICs2MywxMyBAQCBjbGFzcyBK
U1Rlc3RPYmogOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RPYmo+IHsKICNpZiBFTkFCTEUoQ09O
RElUSU9OKQogICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpVbmtub3duPiBtX2Nh
Y2hlZEF0dHJpYnV0ZTM7CiAjZW5kaWYKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJz
cGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJz
cGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMTBjODJiOTFm
MDljMGFkOWQxN2NjMWI4YzE3YzMwNjAzZjg5MDZkYy4uZDk2OTkwZWMwMDFkYWM4YWU2MjQwNDk4
NDJiMDdhNjgzYzljYjAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKQEAgLTMzLDkgKzM0LDEy
IEBACiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
dW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KQEAgLTI2Niw2ICsyNzAsMjYgQEAgYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAg
ICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vi
c3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7Cisg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vi
c3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IG1ha2VVbmlxdWU8SXNvU3Vic3Bh
Y2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAgZWxzZQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7CisgICAg
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlND
OjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDZhNTA5NDM3NzI1MmVjMjkxMjdhMDE4NTRlMzU2ZGI2
M2ZhNTk3NTkuLjg2NzA1ODVkNzJmYTYwNWQ1YmMyZDM4ODZmNDcwNjRiMTJhZjU5Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNDksNiArNDksMTMg
QEAgY2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3QKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VG
b3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCmluZGV4IDYyNTUyMTJk
YmM1ZDk4YWQyZDI4NDIyMDM0M2FmODgyZGMyMGI2ZDYuLjFlNDUzNjJlNjQ4NjUyYTQ2Njk3MmVh
Zjg3MWVlZDRiMDkzNDU4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgiCiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC0zMCwxMSArMzEsMTQgQEAK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXRlcmF0b3JPcGVyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxNiw2ICsyMjAsMjYgQEAgYm9v
bCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGkKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2U6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRv
JiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAo
YXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZSk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSk7CisgICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlm
ICgmSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJ
R05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmFu
YWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oCmluZGV4IGQ3ZWE5MDNlZTI1NGJjMGJjZTRjMDQ3
M2VkOWMwMTkyYjE2MjI0YmEuLjIwMzA0MzY1YTUwNzBmNDVmN2VlNmVlOGFiZjdlZDA2NDMyNDll
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJs
b2EKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09
IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAg
ICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuY3BwCmluZGV4IGYxMTgxMWU4NTk0YzJkMTJlNGY0ODc5YTJlZGFlODYwYThiYzRhOTQuLmJh
MTRhMDUyMTI1M2FjZTBmZjE1ZmY5Y2I2MDJmMGIwOTk4YzA2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNs
dWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMyw5ICszNCwxMiBAQAogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTI0NSw2ICsyNDksMjYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVu
Y3Rpb25OYW1lZEl0ZW0oSlMKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibmFtZWRJdGVt
Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpKQorICAgICAgICByZXR1cm4g
c3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPikKKyAgICAgICAgc3BhY2VzLm1f
c3Vic3BhY2VGb3JUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAgZWxzZQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RPdmVycmlkZUJ1aWx0aW5zLmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMp
CisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmFuYWx5emVIZWFwKEpT
Q2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4IDQ0N2YzZmY3NGM5ZWVhNmU4YWUyY2UyM2RhMzk4ZjNi
Y2IzNTQ1MWEuLjViYzAzYTgxMzk4MjIzYTA3MDg4MDRhMzBiZjI2OWUyYTA4MmQyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaApAQCAtNTIsNiArNTIsMTMgQEAgY2xhc3MgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE92ZXJyaWRlQnVp
bHRpbnM+IHsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICht
b2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6
ZXImKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1w
dXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3Bw
CmluZGV4IDRiODAyNzY2M2IxNjVjNWMwMDc1ZjFiNWJmYjczOGRhNjBkYjA0ZmYuLmNjMmMzNjg3
ZmQwNTA3N2Y0OGRmMjVhNjU2M2M2MTE0OTlkZTg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCkBAIC0yMiwxNSArMjIsMTkgQEAKICNpbmNsdWRlICJKU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIxNyw2ICsyMjEsMjYgQEAgYm9vbCBzZXRKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW4KICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAK
K0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFBsdWdpbkludGVyZmFjZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAg
IGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVj
dCwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2UpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3Bh
Y2VGb3JUZXN0UGx1Z2luSW50ZXJmYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFBsdWdpbkludGVyZmFjZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
KyAgICBpZiAoJkpTVGVzdFBsdWdpbkludGVyZmFjZTo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAh
PSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERh
dGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklO
R1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lk
IEpTVGVzdFBsdWdpbkludGVyZmFjZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKaW5k
ZXggYmZkOTU2NWIwODMyNTgxZDMyNjY5ODkwNDU1NzZlNjMwNjNkMzc4Ny4uNTMyZTNiYzgxZjJi
YTYzYzY0YmRlOTRmYzM2YmI0NmJkZDY1MTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuaApAQCAtNTYsNiArNTYsMTMgQEAgY2xhc3MgSlNUZXN0UGx1Z2luSW50ZXJmYWNlIDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPiB7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNz
IG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkK
KyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5
emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDc3ZjE5ZjJmMzBjNjA1
YWRlZjNlMzA4NGU1NzA4YzA0Y2Y0YjcxODAuLmM5YzBiZmQ5OTkyODE3ZjBkYTAxNmYzNTdlNGM0
MDNjYWZlMjMyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQu
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJET01Qcm9taXNlUHJveHkuaCIKICNpbmNsdWRlICJKU0RP
TUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtMzUsOCArMzYsMTEg
QEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5h
bHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC0yOTMsNiArMjk3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudFJlYXNvbihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
CiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+Ojpn
ZXQ8anNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UmVhc29uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicmVh
c29uIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8
SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PikK
KyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50ID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKKyAgICBpZiAoJkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6YW5hbHl6ZUhlYXAoSlNDZWxs
KiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmgKaW5kZXggNmUyZjdjN2YwMGQ4YzZkZDJkOGJk
ZTcyYzk2MDEzZTMwYTdhNzFkOC4uNjVjNzI4YzY2NGJhNzZiN2FjMzFlMWM0MzQ4MzkyMTBiYWRh
MjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaApAQCAtNDks
NiArNDksMTMgQEAgY2xhc3MgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IDogcHVibGljIEpT
RXZlbnQgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwogICAgIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHdyYXBwZWQoKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCA1YmVhZTE2Njk1YzE4NTFjODAx
NWY2NjA0OTVkZTYyZTRjNjczNTliLi4xYzIwZDQ5MDRiNDA0NmFiOWJkMDU0YWU3YWQxMjJjN2Y3
N2JmNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01B
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzksMTEgKzQwLDE0IEBACiAjaW5jbHVk
ZSAiSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXku
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAg
LTY3NCw2ICs2NzgsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJp
YWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oSlNHbG9iYWwKICAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Q
cm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZy
YW1lLCAidG9KU09OIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFNlcmlhbGl6YXRp
b246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXphdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+
IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0U2VyaWFsaXphdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RTZXJpYWxpemF0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXphdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50
cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVu
dERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FS
TklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2
b2lkIEpTVGVzdFNlcmlhbGl6YXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dFNlcmlhbGl6YXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5oCmluZGV4IDI3
OWUyMjYyNDAyNjc5MmFmMmI1MDE3N2M0ZjI1OTA1MDkyOWU1YTguLjI5MzY4MjRkMDUwOGRhNDBi
NDU4MmQ1N2IyNjgwYWFjZTM2ZDc5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaApAQCAt
NTAsNiArNTAsMTMgQEAgY2xhc3MgSlNUZXN0U2VyaWFsaXphdGlvbiA6IHB1YmxpYyBKU0RPTVdy
YXBwZXI8VGVzdFNlcmlhbGl6YXRpb24+IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rl
c3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6VGhy
b3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1v
ZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0
U2VyaWFsaXphdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRl
c3RTZXJpYWxpemF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDc5ZWJjYTEyNjg4OWJhOGQyMzNm
ZTA5NDViMjcyODRlZTI5OTc0MDIuLmZmMzg3YWUxN2FlY2IyMWRlMDYyMTFlOTFmNzZlOWY3NTc5
Yjg3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRp
cmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjIsMTMgKzIyLDE3IEBACiAjaW5jbHVkZSAiSlNUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgi
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFw
QW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvVVJMLmg+CkBAIC0xNTMsNiArMTU3LDI2IEBAIGJvb2wgc2V0SlNUZXN0U2VyaWFs
aXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhCiAgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQogCitKU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6c3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFj
ZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6
YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NV
QlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdl
dCgpLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZSk7CisgICAgZWxzZQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhl
cml0YW5jZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVj
dEluaGVyaXRhbmNlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9s
b2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5o
ZXJpdGFuY2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdT
X0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZTo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXIm
IGFuYWx5emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFs
aXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgKaW5kZXggZDljOWFjMzRi
YjUzMTYzNmJhOGYxMjM4MTgzNTg1Nzg1ODMwNWM3My4uZTBiYzJiOWRhY2Q0MmQxNzIzMThjY2Yx
Y2QwNmUyYWMyZTQ0MmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmgKQEAgLTQ4LDYgKzQ4LDEzIEBAIGNsYXNzIEpTVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIDogcHVibGljIEpTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNw
YWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiAgICAgVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlJiB3cmFw
cGVkKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
LmNwcAppbmRleCBhNmU4MmUyZTFlNzE5MDE5ZGI2MGVjNDQ4MGRlNTBhZTgzZGMwNzE4Li41ZmJl
N2E0ZGNiMWMzMzFjY2JjZjhkMjMyZmY5OWZhZTk1MDNjYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIyOSw2ICsyMzMsMjYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEoKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJ0b0pTT04iKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQ6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZt
LmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdC5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKKyAgICBpZiAoJkpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojp2aXNpdE91dHB1dENvbnN0
cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAg
Y2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9S
RV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9
CisKIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OmFuYWx5emVIZWFwKEpTQ2VsbCog
Y2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCmluZGV4IDM0N2UwMDhlNTIzZWUzYWExYzBhODU1NjYy
OGRiY2QwNDVlYjVlODQuLjk1NmE1NGQ3MzkwNDg0YWFkMmVlMTU1OWNlMWQzZmUzODQwYTRhMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5oCkBAIC00OSw2ICs0OSwx
MyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCA6IHB1YmxpYyBKU1Rlc3RTZXJp
YWxpemF0aW9uIHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdCYgdGhpc09iamVjdCwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlRocm93U2NvcGUm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVu
dGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFj
ZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogICAgIFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCYg
d3JhcHBlZCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwuY3BwCmluZGV4IDBiMzE4NmYzOTdkMTE3NjBmZTc4ZjljMTU3OWRmYzA5
ZWYwZGU0ODMuLjI4MTM1ODg5MzZlMmI1ZGI0NDk0YjczZDBkOTBiOTdmNTlmNDJmYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmgi
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFj
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0z
MCw5ICszMSwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgpAQCAtMjY0LDYgKzI2OCwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGVGdW5jdGlvblRvSgog
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46
OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b0pTT04iKTsKIH0K
IAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6c3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFj
ZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuZ2V0KCkpCisgICAg
ICAgIHJldHVybiBzcGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+
KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZp
bmFsID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuZ2V0KCk7CitJR05PUkVf
V0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5
emVyKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbCo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsLmgKaW5kZXggNmNjOGY0NzQ2OTY4OTc2NjhkZDk3MWE3NDlkZGQxZTliNGI2
N2RkNy4uNzI3YTM1M2I3NzIyNzk4ODc0ODc0YWEzODQzOGFmYTgzNjdiMDcxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0RmluYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oCkBAIC00OSw2ICs0OSwx
MyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIDogcHVibGljIEpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0IHsKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsJiB0aGlzT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6VGhyb3dTY29wZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiAgICAgVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwmIHdyYXBwZWQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
NTYxYWJhZjU2ODk4MzdmMTQ4MTg3YWU4MWU0ODM3OGUyMGY1ZDYwNS4uZWNiNDgzNzAzNGZiNGE3
OWU3YmZhZjMwMWUwMDMxYTgyZGY4MWYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCIKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKQEAgLTM4LDEwICszOSwx
MyBAQAogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM0Nyw2ICszNTEs
MjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGkKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZ0Jv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiZnVuY3Rpb25SZXR1cm5pbmci
KTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50
RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAg
IGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNw
YWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CisgICAgZWxz
ZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dp
Y2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCAyNDNmNjNhMmFhMTkyZGNhMjVkZjRl
OTQzYTk3NGVhNzcyZTQwZTEyLi5hMmE2NzM4YWQwNjI0M2YxN2RmYTU5ZDU4ZGQ4NDVjYTI0NDEw
MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCkBAIC01Myw2ICs1MywxMyBAQCBjbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RTZXJpYWxpemVkUwogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5r
bm93bj4gbV9jYWNoZWRWYWx1ZTsKICAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6
VW5rbm93bj4gbV9jYWNoZWRSZWFkb25seVZhbHVlOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBK
U0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBK
U0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwog
CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCmluZGV4IGMzY2E3ZDE5MDg3NTk2ZDU1NDc5NjRk
MTlhY2QwYjAxNTM5YzMyMDMuLjZhM2E4MjU5YTVmNDgyODNhNDg4ZWE5MDhjMmY3MDAwMjFkZTY4
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdFN0cmluZ2lmaWVyLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5LDkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0xODcsNiArMTkxLDI2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U3RyaW5naWZpZXJQcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nKEpTR2xvYmFsCiAgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRv
U3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0b1N0cmluZyIp
OwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmllcjo6c3Vic3BhY2VGb3JJ
bXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGll
bnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdFN0cmluZ2lmaWVyLmdldCgpKQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RTdHJpbmdpZmllcj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0
cmluZ2lmaWVyID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0u
aGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJp
bmdpZmllcik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyKTsKKyAgICBh
dXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U3RyaW5naWZp
ZXI6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENv
bnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5h
cHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAor
ICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllcjo6YW5hbHl6ZUhl
YXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXIqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyLmgKaW5kZXggYzAxNGI5N2QyOGFhODY5Y2FmMzg1ODU3YTQxMDk2OWY1NmVmYWIyNS4u
NjE4NzQwNDIyMjYyNGRjMGU5NmQ4MGRmMTI2ZGUyYzI5N2FjMWQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyIDogcHVi
bGljIEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWZpZXI+IHsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RT
dHJpbmdpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RT
dHJpbmdpZmllcj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCA3NzFmNTlhYzViNTFiMWE2NmM5ZWI2MWNhYTgxZDVk
ZTc3YTI5NWM4Li5kYThmNmMyN2EzZjI4ZmMyYWFkM2Y5ODY4NzJkZWM4MjhjMjRhODQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTg3LDYgKzE5MSwyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
UHJvdG90eXBlRnVuY3RpbwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZp
ZXJBbm9ueW1vdXNPcGVyYXRpb24+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAidG9TdHJpbmciKTsKIH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2
bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFj
ZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09f
U1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5nZXQoKTsKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25z
dHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9S
RV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCmluZGV4IDU5ZjUxZTRiMmIz
NWNlMDgwOTg0MjVhYmZjODg0N2Y4YzY1YTM0NWYuLjJjY2MwZGVhZmYyN2M2YTk2ZTcyOWE0NDIw
ZTI3MGI3NmFmOGI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbi5oCkBAIC00OSw2ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lm
aWVyQQogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUg
PT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsK
ICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uLmNwcAppbmRleCAzMjNhYmY4NmMyZTNiYWQ0ZmYxOGVhMzE5MzNlOTZhM2Rj
ZmQ0YmNiLi5mNDYzMDJlNjJhNmJkZTgzYTVjNjcyZWU2OTEwMDU0NjEzMWRiY2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oIgog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2Vz
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBA
IC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgpAQCAtMjAzLDYgKzIwNywyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGVGdW5jdGlvblRv
UwogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bj46OmNhbGw8anNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZUZ1bmN0aW9u
VG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRvU3RyaW5n
Iik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgp
KQorICAgICAgICByZXR1cm4gc3BhY2U7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmdldCgpOwor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVf
V0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb246OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVy
JiBhbmFseXplcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbi5oCmluZGV4IGE3YzYzNTkzZGViMDA2Zjg4N2Q4YzExMzMwZWEx
MmU1OTUwNDRhOTYuLmI5NDYyM2ZhNjY0ZGFiOGI4Y2U3NDkwMDJjNTJlYzJiOWUzMjg3OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaApAQCAtNDks
NiArNDksMTMgQEAgY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiA6IHB1Ymxp
YyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyTmFtZWQKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9k
ZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAg
IHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
c3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhl
YXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApp
bmRleCBlNmI1NDllNzFhNjE0YTBmMjI5MzA3NjQwNTMwMGFiMTk1OWE5ODM5Li45OWNlNjc3NDU1
NjIyODE4NjM0ZjMxNGRiMzQyNTc0ODFmOGJiZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cy5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCkBAIC0yOSw5ICszMCwxMiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMjAzLDYgKzIwNywyNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZUZ1bgogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzPjo6Y2FsbDxqc1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXNQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZN
JiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJz
cGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4pCisg
ICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcyA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyk7
CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbkltcGxlbWVudGVkQXMuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCisgICAgaWYgKCZKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJl
dHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXM6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oCmluZGV4IDE5NDQ2MTk4NjYwYTI2NGNm
YWFiMTg2ZWZkODgwOTJlM2MxN2I4ZGIuLmNlM2NiMDhkNGI4NDIwNTMyMzk2ZTZlZGZlYTFiNzEz
M2ZiMzg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzLmgKQEAgLTQ5LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0
cmluZ2lmCiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9k
ZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRl
ZEFzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IDhjN2NiYTll
Njg0YjlhMTAxNDFmNWU4MDE5MjIzOTg3NTQ3NGUxN2QuLmViMDE2ZDE3NzgwODBkNDQzMDU2OTQy
NGRlYmYzMTc1N2Y4MTdhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j
bHVkZSAiSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmgiCiAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTI5LDkg
KzMwLDEyIEBACiAjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CkBAIC0xODcsNiArMTkxLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlRnVuCiAgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmc+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmdCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
InRvU3RyaW5nIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZzo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAg
IGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAg
IGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPikKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nID0gbWFrZVVuaXF1ZTxJc29TdWJz
cGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nKTsKKyAgICBhdXRvKiBz
cGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZy5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIp
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAo
JkpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6dmlzaXRPdXRwdXRDb25z
dHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAgICAg
IGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05P
UkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOwor
fQorCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6YW5hbHl6
ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQogewogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nLmgKaW5kZXggMWRiNmJiM2NlYWI0NjIyYzI2MjdiMTc5NDdjYTJk
Nzk4YTRhNTk2Ny4uMTY1ZWU2ZTlmNDhkNjJhNGIzNTdhNDM2NTU4NWJhODQxOTE5OWRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9T
dHJpbmcuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0U3RyaW5naWYKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHByb3RlY3Rl
ZDoKICAgICBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCA5YWM5MTQ3YTA2ZTAzOWZjODg1NmFlYmQwZTYxNmE1
MWJiYWQ0NDE1Li4xZDIwZDA1Y2VkNGIxOWFjMDFiMzkzYmQ3MGU1ZmZkZGE4ZjgxZDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgpAQCAtMzAsOSArMzEsMTIgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTIwOSw2ICsyMTMsMjYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBl
RnVuY3Rpb24KICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGU+OjpjYWxsPGpzVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90
b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJh
bWUsICJ0b1N0cmluZyIpOwogfQogCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUpOworICAg
IGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJ
TigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNh
bC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0
cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBl
bmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5
QXR0cmlidXRlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuaAppbmRleCA2NmY5ZjZmMWYzY2YwMjBiMzNkOGRjZDYyOGYxMDQ2Zjdk
N2UzZWIyLi5kNWFjNTNmYWZiYzVhYzc0YmI2ZGI5MDc4MjQ5YzZmNzQzNGIwNGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmgKQEAgLTQ5
LDYgKzQ5LDEzIEBAIGNsYXNzIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUgOiBw
dWJsaWMgSlNET01XcmFwcGVyPFRlc3RTdHJpbmdpZmllclJlCiAgICAgfQogCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1v
ZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAg
ICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0JiwgUmVmPFRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmlu
ZGV4IDU2ZWY3YmQzNWYxMGMxZDlmMTkwMzAwYzY3Nzg2Njg3OGEzOWY5ZjUuLmI1ZDJiOTdlM2Yy
ZmQ4MjVkMGE2N2JkYzEyYTFiZDUwYTQ2MWE1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgIkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmgiCiAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCkBAIC0zMCw5ICszMSwx
MiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpAQCAtMjI4LDYgKzIzMiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3RpbwogICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU+OjpjYWxs
PGpzVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZ0JvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAidG9TdHJpbmciKTsK
IH0KIAorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGU6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0
byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2Ug
PSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGU+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUpOworICAgIGVsc2UKKyAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUg
PSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5j
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFj
aGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJl
IikKKyAgICBpZiAoJkpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjp2aXNpdE91
dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykK
KyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNl
KTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4g
c3BhY2U7Cit9CisKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OmFu
YWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKIHsKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5oCmluZGV4IGE3Zjk2OWMyMDgyZGU2NjdhMGJjODIyOTgzMjUzNDE0ZDZlNTI2
NmMuLmRlNjhjMjk3YzNlNjEzNDMwZjBiMmRmM2IzMDJiNjZkY2M4MmVmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oCkBAIC00OSw2
ICs0OSwxMyBAQCBjbGFzcyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSA6IHB1
YmxpYyBKU0RPTVdyYXBwZXI8VGVzdFN0cmluZ2lmaWVyUgogICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCmluZGV4IGQ4ODczOTIxN2I1ZDRhZjdlZTFkMmZkYWU1ZWNlZTgzMGNjMjA1
YzYuLjBkNmI4Y2I3NGE2ZWQxYjYxMGI3MjczMjYwMzliMTM1ODYzZmFiY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkpTVGVzdFR5cGVkZWZzLmgi
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFj
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKQEAgLTQ2LDEwICs0NywxMyBAQAog
I2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNzcxLDYgKzc3NSwyNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uKAogICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJtZXRob2RXaXRo
RXhjZXB0aW9uIik7CiB9CiAKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdFR5cGVkZWZzOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdFR5cGVkZWZzPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
VHlwZWRlZnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdFR5cGVk
ZWZzKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdFR5cGVkZWZz
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0VHlwZWRlZnMpOworICAgIGF1dG8qIHNwYWNl
ID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0VHlwZWRlZnMuZ2V0KCk7CitJR05PUkVfV0FSTklO
R1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0
b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RUeXBlZGVmczo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCisgICAg
ICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJ
R05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNl
OworfQorCiB2b2lkIEpTVGVzdFR5cGVkZWZzOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAppbmRleCBhZWYyYzlmZTVlYjk5
MmNiOTE4ZGFlMDU5NGUxMjkwMDUzOWI2OGNiLi42NGU3ZWU4ZjRmYTM3NjMyMzA4MDg1ZmY5OTEx
MmFiZWY0MTZlZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3Mg
SlNUZXN0VHlwZWRlZnMgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RUeXBlZGVmcz4gewogICAg
IH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
</data>
<flag name="review"
          id="407923"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>