<?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>191535</bug_id>
          
          <creation_ts>2018-11-11 18:35:29 -0800</creation_ts>
          <short_desc>[WebAuthN] Support U2F HID Authenticators on macOS</short_desc>
          <delta_ts>2019-01-09 14:52:47 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1477462</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-11-11 18:35:29 -0800</bug_when>
    <thetext>Support U2F HID Authenticators on macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492504</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-07 17:18:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/47102027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492510</commentid>
    <comment_count>2</comment_count>
      <attachid>358560</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-07 17:55:44 -0800</bug_when>
    <thetext>Created attachment 358560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492511</commentid>
    <comment_count>3</comment_count>
      <attachid>358560</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-07 17:58:17 -0800</bug_when>
    <thetext>Comment on attachment 358560
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/Fido/CtapHidAuthenticator.cpp:1
&gt; +/*

No changes to the file. Just renaming.

&gt; Source/WebKit/UIProcess/WebAuthentication/Fido/CtapHidAuthenticator.h:1
&gt; +/*

No changes to the file. Just renaming.

&gt; Source/WebKit/UIProcess/WebAuthentication/Fido/CtapHidDriver.cpp:1
&gt; +/*

No changes to the file. Just renaming.

&gt; Source/WebKit/UIProcess/WebAuthentication/Fido/CtapHidDriver.h:1
&gt; +/*

No changes to the file. Just renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492513</commentid>
    <comment_count>4</comment_count>
      <attachid>358561</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-07 18:02:14 -0800</bug_when>
    <thetext>Created attachment 358561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492555</commentid>
    <comment_count>5</comment_count>
      <attachid>358578</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-07 22:56:45 -0800</bug_when>
    <thetext>Created attachment 358578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492673</commentid>
    <comment_count>6</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-08 11:35:00 -0800</bug_when>
    <thetext>It looks like that our svn system doesn&apos;t like case sensitive renaming for folders, i.e. fido =&gt; Fido. I will revert the renaming change then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492744</commentid>
    <comment_count>7</comment_count>
      <attachid>358633</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-08 13:44:16 -0800</bug_when>
    <thetext>Created attachment 358633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492764</commentid>
    <comment_count>8</comment_count>
      <attachid>358633</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-01-08 14:33:51 -0800</bug_when>
    <thetext>Comment on attachment 358633
Patch

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

Looks good, but you may need to land it manually (iOS project file seems unhappy).

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.mm:120
&gt;      // FIXME(191535): Support U2F authenticators.

Do you still need this comment? If you do, I don&apos;t think the Bugzilla # is right! :-)

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:138
&gt; +        if (m_requestMessage-&gt;cmd() == FidoHidDeviceCommand::kCbor) {

Are there other request messages we are supporting (besides kCbor)? If not, consider early return here.

&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:219
&gt; +                message = FidoHidMessage::create(m_currentChannel, FidoHidDeviceCommand::kError, { static_cast&lt;uint8_t&gt;(CtapDeviceResponseCode::kCtap1ErrInvalidCommand) });

Does this cause a console message a developer can see? We might need good logging here to explain that we don&apos;t support older device protocols.

&gt; Source/WebKit/UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:52
&gt; +    // FIXME(191520): We need a way to convert std::unique_ptr to UniqueRef.

You should talk to David Kilzer about that one...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492780</commentid>
    <comment_count>9</comment_count>
      <attachid>358633</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-08 15:23:38 -0800</bug_when>
    <thetext>Comment on attachment 358633
Patch

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

Thanks Brent for r+ this patch. I will figure out what&apos;s going on with iOS bots before landing this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.mm:120
&gt;&gt;      // FIXME(191535): Support U2F authenticators.
&gt; 
&gt; Do you still need this comment? If you do, I don&apos;t think the Bugzilla # is right! :-)

Yup, we don&apos;t need that anymore.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:138
&gt;&gt; +        if (m_requestMessage-&gt;cmd() == FidoHidDeviceCommand::kCbor) {
&gt; 
&gt; Are there other request messages we are supporting (besides kCbor)? If not, consider early return here.

We anticipate other request messages as well. kMsg for U2F, and kCbor for CTAP. Therefore, we can&apos;t add early return.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:219
&gt;&gt; +                message = FidoHidMessage::create(m_currentChannel, FidoHidDeviceCommand::kError, { static_cast&lt;uint8_t&gt;(CtapDeviceResponseCode::kCtap1ErrInvalidCommand) });
&gt; 
&gt; Does this cause a console message a developer can see? We might need good logging here to explain that we don&apos;t support older device protocols.

Oh no, this is mocking a U2F authenticator&apos;s response to a kCbor(CTAP) msg command. After this patch, we will support both U2F and CTAP authenticators, and therefore we don&apos;t need to tell developers we don&apos;t support old protocols anymore. :)

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp:52
&gt;&gt; +    // FIXME(191520): We need a way to convert std::unique_ptr to UniqueRef.
&gt; 
&gt; You should talk to David Kilzer about that one...

Will be glad to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492786</commentid>
    <comment_count>10</comment_count>
      <attachid>358644</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-08 15:56:26 -0800</bug_when>
    <thetext>Created attachment 358644
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492808</commentid>
    <comment_count>11</comment_count>
      <attachid>358644</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-08 16:35:48 -0800</bug_when>
    <thetext>Comment on attachment 358644
Patch for landing

Clearing flags on attachment: 358644

Committed r239752: &lt;https://trac.webkit.org/changeset/239752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493055</commentid>
    <comment_count>12</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-09 13:20:33 -0800</bug_when>
    <thetext>The new test added in https://trac.webkit.org/changeset/239752/webkit

http/wpt/webauthn/public-key-credential-get-success-u2f.https.html

is a flakey timeout and failure. History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-get-success-u2f.https.html

Diff:
--- /Volumes/Data/slave/highsierra-debug-tests-wk2/build/layout-test-results/http/wpt/webauthn/public-key-credential-get-success-u2f.https-expected.txt
+++ /Volumes/Data/slave/highsierra-debug-tests-wk2/build/layout-test-results/http/wpt/webauthn/public-key-credential-get-success-u2f.https-actual.txt
@@ -1,5 +1,5 @@
 
 PASS PublicKeyCredential&apos;s [[get]] with minimum options in a mock hid authenticator. 
-PASS PublicKeyCredential&apos;s [[get]] with more allow credentials in a mock hid authenticator. 
+FAIL PublicKeyCredential&apos;s [[get]] with more allow credentials in a mock hid authenticator. promise_test: Unhandled rejection with value: object &quot;NotAllowedError: Operation timed out.&quot;
 PASS PublicKeyCredential&apos;s [[get]] with test of user presence in a mock hid authenticator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493095</commentid>
    <comment_count>13</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-09 14:36:56 -0800</bug_when>
    <thetext>Additionally:

http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html Is a flaky timeout:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-get-failure-u2f-silent.https.html



http/wpt/webauthn/public-key-credential-create-success-u2f.https.html is a flaky failure:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-create-success-u2f.https.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493114</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-01-09 14:52:47 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #13)
&gt; Additionally:
&gt; 
&gt; http/wpt/webauthn/public-key-credential-get-failure-u2f-silent.https.html Is
&gt; a flaky timeout:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-
&gt; get-failure-u2f-silent.https.html
&gt; 
&gt; 
&gt; 
&gt; http/wpt/webauthn/public-key-credential-create-success-u2f.https.html is a
&gt; flaky failure:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=http%2Fwpt%2Fwebauthn%2Fpublic-key-credential-
&gt; create-success-u2f.https.html

Don&apos;t worry. They will be covered by Bug 192061.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358560</attachid>
            <date>2019-01-07 17:55:44 -0800</date>
            <delta_ts>2019-01-07 18:02:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191535-20190107175543.patch</filename>
            <type>text/plain</type>
            <size>146320</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiYzUxZDg0OGE2NmU0
YjVkNTZhNzYwNjQwNzQxMDViYzIzYjBlZi4uM2M0ODUzZGUxNmY4YmVmY2I3Nzc2MDRjMjZhY2Fk
ODE1ODU2NmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTA3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBw
b3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIFUyZkNvbW1hbmRDb25zdHJ1Y3RvciB0byBwcm9kdWNl
IHJlZ2lzdGVyIGNvbW1hbmRzIHdpdGgKKyAgICAgICAgZW5mb3JjaW5nIHRlc3Qgb2YgdXNlciBw
cmVzZW5jZS4gT3RoZXJ3aXNlLCBhdXRoZW50aWNhdG9ycyB3b3VsZCBzaWxlbnRseQorICAgICAg
ICBnZW5lcmF0ZSBjcmVkZW50aWFscy4gSXQgYWxzbyByZW5hbWVzIHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlIHRvCisgICAgICAgIHJlYWRVMmZTaWduUmVzcG9uc2UuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChmaWRvOjpXZWJDb3JlOjpjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6Cisg
ICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRG
cm9tVTJmU2lnblJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKwogMjAxOS0wMS0wNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3ZmIw
MTQyMjJhMmE1NWZmNzA5MWQ5Y2JmZWQ2Y2I2MDQwNmJjODMuLmMyMDVmY2U3YTgwMWE2Yjg2ZmEz
MGQ2NGFjOTMxY2E4OGQzMGM3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDEt
MDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHN1cHBvcnQgZm9yIFUyRiBh
dXRoZW50aWNhdG9ycywgYW5kIGVuYWJsZXMgaXQgZm9yIGhpZCBkZXZpY2VzLgorICAgICAgICBJ
dCBmb2xsb3dzIHRoZSBDVEFQIHNwZWMgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiBj
b21tYW5kcyBhbmQgcmV0dXJuIHRoZSByZXNwb25zZXM6CisgICAgICAgIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFi
aWxpdHkKKyAgICAgICAgTW9zdCBvZiB0aGUgcGFydHMgYXJlIGRvbmUgYmVmb3JlIHRoaXMgcGF0
Y2gsIHRoaXMgcGF0Y2ggZm9jdWVzIG9uOiA3LjIuMiBhbmQgNy4zLjIuCisKKyAgICAgICAgQmVz
aWRlcyBpbXBsZW1lbnRpbmcgdGhlIFUyZkhpZEF1dGhlbnRpY2F0b3IsIHRoaXMgcGF0Y2ggYWxz
bzoKKyAgICAgICAgMS4gcmVuYW1lcyBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkbyB0
byBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkbyB0byBiZSBjb25zaXN0ZW50CisgICAg
ICAgIHdpdGggb3RoZXJzOworICAgICAgICAyLiBhZGRzIHN1cHBvcnQgaW4gdGhlIG1vY2tpbmcg
ZW52aXJvbm1lbnQgZm9yIFUyRiBhdXRoZW50aWNhdG9ycy4gSXQgaXMgZG9uZSBieSBleHRlbmRp
bmcKKyAgICAgICAgdGhlIHN0YWdlcyBpbiBNb2NrSGlkQ29ubmVjdGlvbiBmcm9tIDQgdG8gaW5k
ZWZpbml0ZSBhcyBtdWx0aS1yb3VuZCBjb21tdW5pY2F0aW9ucyBhcmUgZXhwZWN0ZWQKKyAgICAg
ICAgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiByZXF1ZXN0cy4KKworICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmNv
bnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0
YXBIaWRBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50
aWNhdG9yLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpD
dGFwSGlkRHJpdmVyOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6fldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6
Oldvcmtlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYktpdDo6
Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJpdmVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuaC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL1UyZkhpZEF1
dGhlbnRpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGlj
YXRvcjo6VTJmSGlkQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVu
dGljYXRvcjo6Y2hlY2tFeGNsdWRlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Omlzc3VlUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRo
ZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlQ2hlY2tPbmx5
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFu
ZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRv
ci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnBhcnNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24gZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCAxNjA2YWIwZDEzNDg4YThhMDhlNWViMzA0YWRi
NjMwZDM0MzVlMGM5Li4yMWJhNjA5MjQzZmIwZDFlMzU5NmUzOWM5MzY3MTEzYTZkNWI4ZGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtNTQsNiArNTQsOCBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGFwcGxpYwogCiAgICAgYXBkdTo6QXBkdUNvbW1hbmQgY29tbWFuZDsKICAgICBjb21t
YW5kLnNldElucyhzdGF0aWNfY2FzdDx1aW50OF90PihVMmZBcGR1SW5zdHJ1Y3Rpb246OmtSZWdp
c3RlcikpOworICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0ZXN0IG9mIHVzZXIgcHJlc2VuY2Ug
ZXZlbiB0aG91Z2ggdGhlIHNwZWMgZG9lc24ndCBzcGVjaWZ5IGl0LgorICAgIGNvbW1hbmQuc2V0
UDEoa1AxRW5mb3JjZVVzZXJQcmVzZW5jZUFuZFNpZ24pOwogICAgIGNvbW1hbmQuc2V0RGF0YShX
VEZNb3ZlKGRhdGEpKTsKICAgICBjb21tYW5kLnNldFJlc3BvbnNlTGVuZ3RoKGFwZHU6OkFwZHVD
b21tYW5kOjprQXBkdU1heFJlc3BvbnNlTGVuZ3RoKTsKICAgICByZXR1cm4gY29tbWFuZC5nZXRF
bmNvZGVkQ29tbWFuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggYzQ1YTE3MTE3
OTkwMjEzNTZiYTc4NWNlZjE2YzI4YTkxYTMwMWJlMC4uY2I0Njc4MTY4YjRiODJkMWU0YWU3ZTBh
NzdjZDFhMjU0YTg3MzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xNzMsNyAr
MTczLDcgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZSZWdpc3Rl
clJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY28KICAgICByZXR1cm4gUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNy
ZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0
dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogfQogCi1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRh
KQorT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZTaWduUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQogewogICAgIGlmIChrZXlIYW5kbGUuaXNFbXB0
eSgpIHx8IHUyZkRhdGEuc2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBkNmE0MWY4NzNkOGJiYzRm
OWE1YTBmMDdlMzBkNjdmMjdkZjJhYmNjLi40YzZkMjRlNWI0ZjdlMjJhNjZiMzM0ZjVmODczNGY5
ZTRmMTQ4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9ucwogCiAvLyBDb252ZXJ0cyBhIFUyRiBhdXRoZW50aWNhdGlvbiBy
ZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2UuCiAvLyBodHRwczovL2Zp
ZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRv
LWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50
aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkRnJvbVUyZlNpZ25SZXNw
b25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxl
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpOworV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZTaWduUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCBlMGEzMjgyZTAwOTJkOTdjZTM1ZDY2NDZiNDMzMWI4Y2ExMWY0OGUwLi40
OGIxZDMxMGY4NzVmNDM5OWE0NjM3ZWE1OTRlYWVkYTBlNzg3NjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTM4NCw2ICszODQsMTAgQEAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cAogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAogCitV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAK
K1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuY3BwCitVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmNwcAorCiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5j
cHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKaW5kZXggYTNlMzQ2ODI1NmJiNjcwMDgyOTVmYzEzZjA3MmRmMzc5YjcwMDEy
Yy4uZmI1NDkzMzEzM2YxYWE3YzFkNzMxZmI2MWY0ZDc5OGE4MTQ4MDQwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCkBAIC02MjcsOCArNjI3LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAg
IGlmIChlcnJvciA9PSAid3Jvbmctbm9uY2UiKQogICAgICAgICAgICAgaGlkLmVycm9yID0gTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25jZTsK
IAotICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCi0gICAgICAgICAg
ICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT5zdHJp
bmcoKTsKKyAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLQXJy
YXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCisgICAgICAg
ICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT50
b1N0cmluZ1ZlY3RvcigpOworCisgICAgICAgIGlmIChhdXRvIGlzVTJmID0gc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSkuZ2V0KCkpKSkKKyAgICAgICAg
ICAgIGhpZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZhbHVlKGlzVTJmKTsKIAogICAgICAgICBpZiAo
YXV0byBrZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJLZWVwQWxpdmUiKSkuZ2V0KCkpKSkKICAgICAgICAgICAgIGhpZC5rZWVwQWxpdmUgPSBXS0Jv
b2xlYW5HZXRWYWx1ZShrZWVwQWxpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXgg
MjM3YjFiNDYwNzI4MTE5MTMyZGY3OTgzOWNhNjc2NDUzNWQ2M2VlZi4uZDhlNGU0MWFjMjZmODdi
NTUwZWQxODFmNDYwMzFkMjBmZDI0MDc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBA
IC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJDdGFwSGlkQXV0aGVudGljYXRvci5oIgogI2ltcG9y
dCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgorI2ltcG9ydCAi
VTJmSGlkQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lk
IEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHZvaWQgSGlk
U2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oQ3RhcEhpZERyaXZlciogcHRy
LCBWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Rh
cEhpZERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2UocHRyKTsKLSAgICBpZiAoIWRyaXZl
ciB8fCAhb2JzZXJ2ZXIoKSkKKyAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCByZXNw
b25zZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW5mbyA9IHJlYWRD
VEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKQEAgLTExOCw2ICsxMTksOCBAQCB2b2lkIEhp
ZFNlcnZpY2U6OmNvbnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKEN0YXBIaWREcml2ZXIqIHB0
ciwgVmVjdG9yPHVpbnQ4XwogICAgIH0KICAgICAvLyBGSVhNRSgxOTE1MzUpOiBTdXBwb3J0IFUy
RiBhdXRoZW50aWNhdG9ycy4KICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBn
ZXQgaW5mbyByZXNwb25zZS4iKTsKKyAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVy
c2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFiNDJhZjY2ZjkxMDc5YTE5N2Q1YzNkM2JjODcyYmUyYTM1NzcxMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9G
aWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN0YXBIaWRBdXRoZW50aWNhdG9yLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJD
dGFwSGlkRHJpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgZmlk
bzsKKworQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0YXBIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5p
cXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXZlciwgQXV0aGVudGljYXRvckdldEluZm9SZXNw
b25zZSYmIGluZm8pCisgICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCisgICAgLCBtX2lu
Zm8oV1RGTW92ZShpbmZvKSkKK3sKKyAgICAvLyBGSVhNRSgxOTE1MjApOiBXZSBuZWVkIGEgd2F5
IHRvIGNvbnZlcnQgc3RkOjp1bmlxdWVfcHRyIHRvIFVuaXF1ZVJlZi4KKyAgICBBU1NFUlQobV9k
cml2ZXIpOworfQorCit2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgp
Cit7CisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19FUlJPUigiU3RhcnQgbWFraW5nIGNy
ZWRlbnRpYWxzLiIpOworICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVx
dWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRp
b25zLCBtX2luZm8ub3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Cisg
ICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVz
cG9uc2VSZWNlaXZlZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9KTsKK30KKwordm9pZCBDdGFwSGlk
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAoreworICAgIGF1dG8gcmVzcG9uc2UgPSBy
ZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSk7CisgICAgaWYgKCFyZXNwb25zZSkg
eworICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBt
YWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBkYXRhLnNp
emUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworfQorCit2b2lkIEN0YXBIaWRB
dXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQoreworICAgIC8vIEZJWE1FKDE5MjA2MSkKKyAg
ICBMT0dfRVJST1IoIlN0YXJ0IGdldHRpbmcgYXNzZXJ0aW9ucy4iKTsKKyAgICBhdXRvIGNib3JD
bWQgPSBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwg
cmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucywgbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZp
Y2F0aW9uQXZhaWxhYmlsaXR5KCkpOworICAgIG1fZHJpdmVyLT50cmFuc2FjdChXVEZNb3ZlKGNi
b3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0YSkpOworICAg
IH0pOworfQorCit2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlv
bkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAorewor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEpOwor
ICAgIGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0
YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJy
b3IgY29kZTogIiwgZGF0YS5zaXplKCkgPT0gMSA/IGRhdGFbMF0gOiAtMSkgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgqcmVzcG9uc2UpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmRmNjI3OTUyNTY5MWRlYzVmYThkMzU2ZTBhZTE5ZjJiZjIwN2I2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBDdGFwSGlkRHJpdmVyOworCitjbGFzcyBDdGFwSGlkQXV0aGVudGljYXRvciBmaW5hbCA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEN0YXBIaWRBdXRo
ZW50aWNhdG9yPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdmVy
LCBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN0YXBIaWRBdXRoZW50aWNhdG9yKFdURk1vdmUoZHJp
dmVyKSwgV1RGTW92ZShpbmZvKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBD
dGFwSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJiwgZmlk
bzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmKTsKKworICAgIHZvaWQgbWFrZUNyZWRl
bnRpYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0OworICAgIHZvaWQgZ2V0QXNzZXJ0
aW9uKCkgZmluYWw7CisgICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3RhcEhpZERyaXZlcj4gbV9kcml2ZXI7CisgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZSBtX2luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRE
cml2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmOWVmOTgzOTRmZWU0Nzk1M2Y5YzQwYjhhMjViOWI0Yjc3
ZmRlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuY3BwCkBAIC0wLDAgKzEsMjI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgPFdl
YkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitDdGFwSGlkRHJpdmVyOjpXb3JrZXI6Oldvcmtl
cihVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCit7CisgICAgbV9jb25uZWN0aW9uLT5pbml0aWFsaXpl
KCk7Cit9CisKK0N0YXBIaWREcml2ZXI6Oldvcmtlcjo6fldvcmtlcigpCit7CisgICAgbV9jb25u
ZWN0aW9uLT50ZXJtaW5hdGUoKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnRy
YW5zYWN0KGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1lc3NhZ2UsIE1lc3NhZ2VDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJZGxlKTsK
KyAgICBtX3N0YXRlID0gU3RhdGU6OldyaXRlOworICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBXVEZN
b3ZlKHJlcXVlc3RNZXNzYWdlKTsKKyAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOworICAg
IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKworICAgIC8vIEhpZENvbm5lY3Rpb24g
Y291bGQgaG9sZCBkYXRhIGZyb20gb3RoZXIgYXBwbGljYXRpb25zLCBhbmQgdGhlcmVvZm9yZSBp
bnZhbGlkYXRlIGl0IGJlZm9yZSBlYWNoIHRyYW5zYWN0aW9uLgorICAgIG1fY29ubmVjdGlvbi0+
aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1fcmVxdWVzdE1lc3Nh
Z2UtPnBvcE5leHRQYWNrZXQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShIaWRD
b25uZWN0aW9uOjpEYXRhU2VudCBzZW50KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgd2Vha1RoaXMtPndyaXRlKHNlbnQpOworICAgIH0pOworfQorCit2b2lkIEN0
YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUoSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkK
K3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6V3JpdGUpOworICAgIC8vIEZJWE1FKDE5
MjA2MSkKKyAgICBMT0dfRVJST1IoIlN0YXJ0IHdyaXRpbmcgZGF0YS4iKTsKKyAgICBpZiAoc2Vu
dCAhPSBIaWRDb25uZWN0aW9uOjpEYXRhU2VudDo6WWVzKSB7CisgICAgICAgIHJldHVybk1lc3Nh
Z2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9y
ZXF1ZXN0TWVzc2FnZS0+bnVtUGFja2V0cygpKSB7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVhZDsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNr
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB3ZWFrVGhpcy0+cmVhZChkYXRhKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQobV9yZXF1ZXN0TWVzc2FnZS0+cG9wTmV4dFBh
Y2tldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKEhpZENvbm5lY3Rpb246OkRh
dGFTZW50IHNlbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3
ZWFrVGhpcy0+d3JpdGUoc2VudCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6
V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZCk7CisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19F
UlJPUigiU3RhcnQgcmVhZGluZyBkYXRhLiIpOworICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2Up
IHsKKyAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlRnJv
bVNlcmlhbGl6ZWREYXRhKGRhdGEpOworICAgICAgICAvLyBUaGUgZmlyc3QgZmV3IHJlcG9ydHMg
Y291bGQgYmUgZm9yIG90aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRoZXJlZm9yZSBpZ25vcmUgdGhv
c2UuCisgICAgICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2UgfHwgbV9yZXNwb25zZU1lc3NhZ2Ut
PmNoYW5uZWxJZCgpICE9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpKSB7CisgICAgICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlkIGluaXQgcGFja2V0OiAlcyIsIG1f
cmVzcG9uc2VNZXNzYWdlID8gIndyb25nIGNoYW5uZWwgaWQuIiA6ICJiYWQgZGF0YS4iKTsKKyAg
ICAgICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdl
LT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSkpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgcGFyc2UgYSBoaWQgY29udGludWF0aW9uIHBhY2tldC4iKTsKKyAgICAgICAgICAg
IHJldHVybk1lc3NhZ2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChtX3Jlc3BvbnNlTWVzc2FnZS0+bWVzc2FnZUNvbXBsZXRl
KCkpIHsKKyAgICAgICAgLy8gQSBLZWVwQWxpdmUgY21kIGNvdWxkIGJlIHNlbnQgYmV0d2VlbiBh
IHJlcXVlc3QgYW5kIGEgcmVzcG9uc2UgdG8gaW5kaWNhdGUgdGhhdAorICAgICAgICAvLyB0aGUg
YXV0aGVudGljYXRvciBpcyB3YWl0aW5nIGZvciB1c2VyIGNvbnNlbnQuIEtlZXAgbGlzdGVuaW5n
IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChtX3Jlc3BvbnNlTWVzc2FnZS0+Y21kKCkg
PT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmUpIHsKKyAgICAgICAgICAgIG1fcmVz
cG9uc2VNZXNzYWdlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuTWVzc2FnZShXVEZNb3ZlKG1fcmVzcG9uc2VNZXNzYWdlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5N
ZXNzYWdlKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAg
Ly8gRklYTUUoMTkyMDYxKQorICAgIExPR19FUlJPUigiU3RhcnQgcmV0dXJuaW5nIGRhdGEuIik7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3Rl
ckRhdGFSZWNlaXZlZENhbGxiYWNrKCk7CisgICAgbV9jYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2Up
KTsKK30KKworQ3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV93b3JrZXIobWFrZVVuaXF1ZVJlZjxXb3JrZXI+
KFdURk1vdmUoY29ubmVjdGlvbikpKQorICAgICwgbV9ub25jZShrSGlkSW5pdE5vbmNlTGVuZ3Ro
KQoreworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6SWRsZSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWw7
CisgICAgbV9jaGFubmVsSWQgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICBtX3JlcXVlc3RE
YXRhID0gV1RGTW92ZShkYXRhKTsKKyAgICBtX3Jlc3BvbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKKworICAgIC8vIEFsbG9jYXRlIGEgY2hhbm5lbC4KKyAgICAvLyBGSVhNRSgxOTIw
NjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCBhbGxvY2F0aW5nIGEgY2hhbm5lbC4iKTsKKyAgICBB
U1NFUlQobV9ub25jZS5zaXplKCkgPT0ga0hpZEluaXROb25jZUxlbmd0aCk7CisgICAgY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMobV9ub25jZS5kYXRhKCksIG1fbm9uY2Uuc2l6ZSgpKTsK
KyAgICBhdXRvIGluaXRDb21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBtX25vbmNlKTsKKyAgICBBU1NFUlQoaW5p
dENvbW1hbmQpOworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+
JiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3
ZWFrVGhpcy0+Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoV1RGTW92ZShyZXNwb25zZSkp
OworICAgIH0pOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFubmVs
QWxsb2NhdGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCk7CisgICAgaWYgKCFtZXNzYWdl
KSB7CisgICAgICAgIHJldHVyblJlc3BvbnNlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKG1lc3NhZ2UtPmNoYW5uZWxJZCgpID09IG1fY2hhbm5lbElkKTsKKworICAg
IGF1dG8gcGF5bG9hZCA9IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7CisgICAgQVNTRVJU
KHBheWxvYWQuc2l6ZSgpID09IGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAvLyBSZXN0YXJ0
IHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgbmV4dCBydW4gbG9vcCB3aGVuIG5vbmNlIG1pc21hdGNo
ZXMuCisgICAgaWYgKG1lbWNtcChwYXlsb2FkLmRhdGEoKSwgbV9ub25jZS5kYXRhKCksIG1fbm9u
Y2Uuc2l6ZSgpKSkgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGRh
dGEgPSBXVEZNb3ZlKG1fcmVxdWVzdERhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUobV9yZXNwb25z
ZUNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPnRyYW5zYWN0KFdURk1v
dmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWR5OworICAgIGF1dG8gaW5kZXgg
PSBrSGlkSW5pdE5vbmNlTGVuZ3RoOworICAgIG1fY2hhbm5lbElkID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDI0OworICAgIG1fY2hhbm5lbElkIHw9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAxNjsKKyAgICBtX2NoYW5uZWxJ
ZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgODsKKyAgICBt
X2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleF0pOworICAg
IC8vIEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXNldCBvZiB0aGUgcGF5bG9hZC4KKyAgICAv
LyBGSVhNRSgxOTIwNjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCBzZW5kaW5nIHRoZSByZXF1ZXN0
LiIpOworICAgIGF1dG8gY21kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwg
bV9wcm90b2NvbCA9PSBQcm90b2NvbFZlcnNpb246OmtDdGFwID8gRmlkb0hpZERldmljZUNvbW1h
bmQ6OmtDYm9yIDogRmlkb0hpZERldmljZUNvbW1hbmQ6OmtNc2csIG1fcmVxdWVzdERhdGEpOwor
ICAgIEFTU0VSVChjbWQpOworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYm
IHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vh
a1RoaXMtPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUocmVzcG9uc2UpKTsK
KyAgICB9KTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZWFkeSk7CisgICAgQVNTRVJUKCFtZXNzYWdlIHx8
IG1lc3NhZ2UtPmNoYW5uZWxJZCgpID09IG1fY2hhbm5lbElkKTsKKyAgICAvLyBGSVhNRSgxOTIw
NjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCByZXR1cm5pbmcgdGhlIHJlc3BvbnNlLiIpOworICAg
IHJldHVyblJlc3BvbnNlKG1lc3NhZ2UgPyBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpIDog
VmVjdG9yPHVpbnQ4X3Q+KCkpOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OnJldHVyblJlc3Bv
bnNlKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQoreworICAgIC8vIFJlc2V0IHN0YXRlIGJl
Zm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBjYWxsYmFjayB0byBhdm9pZCBiZWluZyBkZWxldGVk
LgorICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKKyAgICBtX3Jlc3BvbnNlQ2FsbGJhY2soV1RG
TW92ZShyZXNwb25zZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJp
dmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGZiNTA0ZDkxZTk3ODM3MGIwZjZkOTQyODE4Y2QxOTg3OTc4MjNj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29u
c3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGUgZm9s
bG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgSElEIHByb3RvY29sOgorLy8gaHR0cHM6Ly9maWRv
YWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1h
dXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKKy8vIEZTTTog
SWRsZSA9PiBBbGxvY2F0ZUNoYW5uZWwgPT4gUmVhZHkKK2NsYXNzIEN0YXBIaWREcml2ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcEhpZERyaXZlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN0YXBIaWREcml2ZXIpOworcHVi
bGljOgorICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZlY3Rvcjx1
aW50OF90PiYmKT47CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAg
IElkbGUsCisgICAgICAgIEFsbG9jYXRlQ2hhbm5lbCwKKyAgICAgICAgUmVhZHksCisgICAgICAg
IC8vIEZJWE1FKDE5MTUyOCkKKyAgICAgICAgQnVzeQorICAgIH07CisKKyAgICBleHBsaWNpdCBD
dGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKKworICAgIHZvaWQgc2V0
UHJvdG9jb2woZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29sKSB7IG1fcHJvdG9jb2wgPSBw
cm90b2NvbDsgfQorICAgIHZvaWQgdHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVz
cG9uc2VDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBl
ciB0aGF0IG1haW50YWlucyB0aGUgdHJhbnNhY3Rpb24uCisgICAgLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhcmJpdHJhdGlvbgorICAg
IC8vIEZTTTogSWRsZSA9PiBXcml0ZSA9PiBSZWFkLgorICAgIGNsYXNzIFdvcmtlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXb3JrZXI+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlcik7CisgICAgcHVibGljOgor
ICAgICAgICB1c2luZyBNZXNzYWdlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPGZp
ZG86OkZpZG9IaWRNZXNzYWdlPiYmKT47CisKKyAgICAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVp
bnQ4X3QgIHsKKyAgICAgICAgICAgIElkbGUsCisgICAgICAgICAgICBXcml0ZSwKKyAgICAgICAg
ICAgIFJlYWQKKyAgICAgICAgfTsKKworICAgICAgICBleHBsaWNpdCBXb3JrZXIoVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+JiYpOworICAgICAgICB+V29ya2VyKCk7CisKKyAgICAgICAgdm9pZCB0
cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmLCBNZXNzYWdlQ2FsbGJhY2smJik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB2b2lkIHdyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50KTsK
KyAgICAgICAgdm9pZCByZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgICAgICB2b2lk
IHJldHVybk1lc3NhZ2UoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworCisgICAg
ICAgIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OworICAgICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlk
TWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKKyAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hp
ZE1lc3NhZ2U+IG1fcmVzcG9uc2VNZXNzYWdlOworICAgICAgICBNZXNzYWdlQ2FsbGJhY2sgbV9j
YWxsYmFjazsKKyAgICB9OworCisgICAgdm9pZCBjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRl
ZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7CisgICAgdm9pZCBjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7Cisg
ICAgdm9pZCByZXR1cm5SZXNwb25zZShWZWN0b3I8dWludDhfdD4mJik7CisKKyAgICBVbmlxdWVS
ZWY8V29ya2VyPiBtX3dvcmtlcjsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsK
KyAgICB1aW50MzJfdCBtX2NoYW5uZWxJZCB7IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsIH07
CisgICAgLy8gT25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgIFZlY3Rvcjx1aW50OF90PiBtX3Jl
cXVlc3REYXRhOworICAgIFJlc3BvbnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOworICAg
IFZlY3Rvcjx1aW50OF90PiBtX25vbmNlOworICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBtX3By
b3RvY29sIHsgZmlkbzo6UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9GaWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDQ3ZjQyZjYzYjM4YWVhZDUzZWU5YjU3YzQ1ZmIzYjI4ZWJmYjEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZI
aWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVMmZIaWRBdXRoZW50aWNhdG9yLmgiCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJDdGFwSGlkRHJp
dmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIGFwZHU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworbmFtZXNw
YWNlIHsKK2NvbnN0IHVuc2lnbmVkIHJldHJ5VGltZU91dFZhbHVlTXMgPSAyMDA7Cit9CisKK1Uy
ZkhpZEF1dGhlbnRpY2F0b3I6OlUyZkhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0
YXBIaWREcml2ZXI+JiYgZHJpdmVyKQorICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIpKQor
ICAgICwgbV9yZXRyeVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlUyZkhpZEF1dGhlbnRp
Y2F0b3I6OnJldHJ5TGFzdENvbW1hbmQpCit7CisgICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVl
ZCBhIHdheSB0byBjb252ZXJ0IHN0ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCisgICAgQVNT
RVJUKG1fZHJpdmVyKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVu
dGlhbCgpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVx
dWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMpKSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1
ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIXJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX25leHRMaXN0SW5kZXgpOworICAgICAgICBjaGVj
a0V4Y2x1ZGVMaXN0KG1fbmV4dExpc3RJbmRleCsrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpc3N1ZVJlZ2lzdGVyQ29tbWFuZCgpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0
b3I6OmNoZWNrRXhjbHVkZUxpc3Qoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgpKSB7
CisgICAgICAgIGlzc3VlUmVnaXN0ZXJDb21tYW5kKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChyZXF1
ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLCByZXF1ZXN0RGF0
YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHNbaW5kZXhdKTsKKyAgICBBU1NF
UlQodTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFu
ZFR5cGU6OkNoZWNrT25seUNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6
Omlzc3VlUmVnaXN0ZXJDb21tYW5kKCkKK3sKKyAgICBhdXRvIHUyZkNtZCA9IGNvbnZlcnRUb1Uy
ZlJlZ2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRp
b25PcHRpb25zKTsKKyAgICBBU1NFUlQodTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RG
TW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlJlZ2lzdGVyQ29tbWFuZCk7Cit9CisKK3ZvaWQg
VTJmSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAoIWlzQ29udmVy
dGlibGVUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMpKSB7Cisg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwg
IkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIW1fbmV4dExpc3RJbmRleCk7CisgICAgaXNz
dWVTaWduQ29tbWFuZChtX25leHRMaXN0SW5kZXgrKyk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVu
dGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4
ID49IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5zaXplKCkp
IHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBmb3Vu
ZCBpbiB0aGUgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhh
c2gsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9w
dGlvbnMuYWxsb3dDcmVkZW50aWFsc1tpbmRleF0uaWRWZWN0b3IpOworICAgIEFTU0VSVCh1MmZD
bWQpOworICAgIGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZDbWQpLCBDb21tYW5kVHlwZTo6
U2lnbkNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29t
bWFuZChWZWN0b3I8dWludDhfdD4mJiBjb21tYW5kLCBDb21tYW5kVHlwZSB0eXBlKQoreworICAg
IG1fbGFzdENvbW1hbmQgPSBXVEZNb3ZlKGNvbW1hbmQpOworICAgIG1fbGFzdENvbW1hbmRUeXBl
ID0gdHlwZTsKKyAgICBpc3N1ZUNvbW1hbmQobV9sYXN0Q29tbWFuZCwgbV9sYXN0Q29tbWFuZFR5
cGUpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNvbW1hbmQsIENvbW1hbmRUeXBlIHR5cGUpCit7CisgICAgbV9kcml2
ZXItPnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90Pihjb21tYW5kKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCB0eXBlXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5yZXNwb25zZVJlY2VpdmVkKFdURk1vdmUo
ZGF0YSksIHR5cGUpOworICAgIH0pOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OnJl
c3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UsIENvbW1hbmRUeXBlIHR5
cGUpCit7CisgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21N
ZXNzYWdlKHJlc3BvbnNlKTsKKyAgICBpZiAoIWFwZHVSZXNwb25zZSkgeworICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2Ug
dGhlIEFQRFUgcmVzcG9uc2UuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDb21tYW5kVHlwZTo6UmVnaXN0ZXJDb21tYW5kOgor
ICAgICAgICBjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZN
b3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ29tbWFuZFR5
cGU6OkNoZWNrT25seUNvbW1hbmQ6CisgICAgICAgIGNvbnRpbnVlQ2hlY2tPbmx5Q29tbWFuZEFm
dGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQ29tbWFuZFR5cGU6OkJvZ3VzQ29tbWFuZDoKKyAgICAgICAgY29udGlu
dWVCb2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3BvbnNl
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbW1hbmRUeXBlOjpTaWduQ29tbWFuZDoK
KyAgICAgICAgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3Zl
KCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lz
dGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9u
c2UpCit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFw
ZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogeworICAgICAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMu
cnAuaWQsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7Cisg
ICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
Q291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgq
cmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIEFwZHVSZXNwb25z
ZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CisgICAgICAgIC8vIFBvbGxp
bmcgaXMgcmVxdWlyZWQgZHVyaW5nIHRlc3Qgb2YgdXNlciBwcmVzZW5jZS4KKyAgICAgICAgbV9y
ZXRyeVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHJldHJ5VGlt
ZU91dFZhbHVlTXMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpKSB9KTsKKyAgICB9Cit9CisKK3ZvaWQgVTJmSGlkQXV0
aGVudGljYXRvcjo6Y29udGludWVDaGVja09ubHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVk
KEFwZHVSZXNwb25zZSYmIGFwZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGFwZHVSZXNwb25z
ZS5zdGF0dXMoKSkgeworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9S
OgorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNfTk9UX1NBVElT
RklFRDoKKyAgICAgICAgaXNzdWVOZXdDb21tYW5kKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0
aW9uQ29tbWFuZCgpLCBDb21tYW5kVHlwZTo6Qm9ndXNDb21tYW5kKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGNoZWNrRXhjbHVkZUxpc3QobV9uZXh0TGlzdEluZGV4
KyspOworICAgIH0KK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUJvZ3Vz
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9uc2Up
Cit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFwZHVS
ZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjoKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwg
bWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1
dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcGR1UmVzcG9u
c2U6OlN0YXR1czo6U1dfQ09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgorICAgICAgICAvLyBQb2xs
aW5nIGlzIHJlcXVpcmVkIGR1cmluZyB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UuCisgICAgICAgIG1f
cmV0cnlUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhyZXRyeVRp
bWVPdXRWYWx1ZU1zKSk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJV
bmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYXBkdVJlc3BvbnNlLnN0YXR1cygpKSkgfSk7CisgICAgfQorfQorCit2b2lkIFUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBk
dVJlc3BvbnNlJiYgYXBkdVJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoYXBkdVJlc3BvbnNlLnN0
YXR1cygpKSB7CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJST1I6IHsK
KyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdERhdGEo
KS5yZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLmFsbG93
Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5k
YXRhKCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CisgICAgICAgICAgICByZWNlaXZlUmVz
cG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUy
RiBzaWduIHJlc3BvbnNlLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNf
Tk9UX1NBVElTRklFRDoKKyAgICAgICAgLy8gUG9sbGluZyBpcyByZXF1aXJlZCBkdXJpbmcgdGVz
dCBvZiB1c2VyIHByZXNlbmNlLgorICAgICAgICBtX3JldHJ5VGltZXIuc3RhcnRPbmVTaG90KFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMocmV0cnlUaW1lT3V0VmFsdWVNcykpOworICAgICAgICBy
ZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgaXNzdWVTaWduQ29tbWFuZChtX25leHRMaXN0
SW5kZXgrKyk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRv
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZI
aWRBdXRoZW50aWNhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2ZjE5ZmRkNjg1OTMyNjQwOGU5ZWY2NTFj
YzFjMWNjNzUyN2I3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oCkBAIC0wLDAgKzEs
ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKworbmFtZXNw
YWNlIGFwZHUgeworY2xhc3MgQXBkdVJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgQ3RhcEhpZERyaXZlcjsKKworY2xhc3MgVTJmSGlkQXV0aGVudGljYXRvciBmaW5h
bCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFUyZkhp
ZEF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJiBk
cml2ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVMmZIaWRBdXRoZW50
aWNhdG9yKFdURk1vdmUoZHJpdmVyKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBVMmZIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmKTsK
KworICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrRXhjbHVk
ZUxpc3Qoc2l6ZV90IGluZGV4KTsKKyAgICB2b2lkIGlzc3VlUmVnaXN0ZXJDb21tYW5kKCk7Cisg
ICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKKyAgICB2b2lkIGlzc3VlU2lnbkNvbW1hbmQo
c2l6ZV90IGluZGV4KTsKKworICAgIGVudW0gY2xhc3MgQ29tbWFuZFR5cGUgOiB1aW50OF90IHsK
KyAgICAgICAgUmVnaXN0ZXJDb21tYW5kLAorICAgICAgICBDaGVja09ubHlDb21tYW5kLAorICAg
ICAgICBCb2d1c0NvbW1hbmQsCisgICAgICAgIFNpZ25Db21tYW5kCisgICAgfTsKKyAgICB2b2lk
IGlzc3VlTmV3Q29tbWFuZChWZWN0b3I8dWludDhfdD4mJiBjb21tYW5kLCBDb21tYW5kVHlwZSk7
CisgICAgdm9pZCByZXRyeUxhc3RDb21tYW5kKCkgeyBpc3N1ZUNvbW1hbmQobV9sYXN0Q29tbWFu
ZCwgbV9sYXN0Q29tbWFuZFR5cGUpOyB9CisgICAgdm9pZCBpc3N1ZUNvbW1hbmQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjb21tYW5kLCBDb21tYW5kVHlwZSk7CisgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlLCBDb21tYW5kVHlwZSk7CisgICAgdm9p
ZCBjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1
UmVzcG9uc2UmJik7CisgICAgdm9pZCBjb250aW51ZUNoZWNrT25seUNvbW1hbmRBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOworICAgIHZvaWQgY29udGludWVCb2d1
c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOworICAg
IHZvaWQgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1
UmVzcG9uc2UmJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4gbV9kcml2
ZXI7CisgICAgUnVuTG9vcDo6VGltZXI8VTJmSGlkQXV0aGVudGljYXRvcj4gbV9yZXRyeVRpbWVy
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2xhc3RDb21tYW5kOworICAgIENvbW1hbmRUeXBlIG1f
bGFzdENvbW1hbmRUeXBlOworICAgIHNpemVfdCBtX25leHRMaXN0SW5kZXggeyAwIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5k
ZXggMGIxNzY5OWJkZGU5Nzg0YjRjNzg2M2Q5ZDdiZTkyNDU0NjVmMmE2NC4uZDg2YTNhNDcyZTZi
Yjc3MzkwZTM0MDFhNmNkZTgyYzY1M2E2ODQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKQEAgLTEyNyw0MyArMTI3LDQ4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6
OlN1YlN0YWdlOjpNc2cpCiAgICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6U3RhZ2U6OlJlcXVl
c3Q7CiAgICAgfQotICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a0Nib3IpCisgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciB8fCBtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZykKICAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OlN1
YlN0YWdlOjpNc2c7CiAKLSAgICAvLyBTZXQgb3B0aW9ucy4KICAgICBpZiAobV9zdGFnZSA9PSBN
b2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cp
IHsKLSAgICAgICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkgPSBmYWxzZTsKLSAgICAgICAgbV9yZXF1
aXJlVXNlclZlcmlmaWNhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGF1dG8gcGF5bG9hZCA9IG1f
cmVxdWVzdE1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7Ci0gICAgICAgIEFTU0VSVChwYXls
b2FkLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gY21kID0gc3RhdGljX2Nhc3Q8Q3RhcFJlcXVlc3RD
b21tYW5kPihwYXlsb2FkWzBdKTsKLSAgICAgICAgcGF5bG9hZC5yZW1vdmUoMCk7Ci0gICAgICAg
IGF1dG8gcmVxdWVzdE1hcCA9IENCT1JSZWFkZXI6OnJlYWQocGF5bG9hZCk7Ci0gICAgICAgIEFT
U0VSVChyZXF1ZXN0TWFwKTsKLQotICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFu
ZDo6a0F1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCkgewotICAgICAgICAgICAgYXV0byBpdCA9
IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKEN0YXBNYWtlQ3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KLSAgICAgICAgICAgIGlmIChpdCAh
PSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9w
dGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGl0
ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkgPSBpdHItPnNlY29uZC5nZXRCb29sKCk7Ci0KLSAgICAg
ICAgICAgICAgICBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRp
b25NYXBLZXkpKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkK
LSAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vj
b25kLmdldEJvb2woKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRpZmZlcmVudCBt
c2cgY21kIGZvciBDVEFQIGFuZCBVMkYuCisgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb24u
aGlkLT5pc1UyZiBeIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSAhPSBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a01zZykpOworCisgICAgICAgIC8vIFNldCBvcHRpb25zLgorICAgICAgICBpZiAobV9y
ZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yKSB7Cisg
ICAgICAgICAgICBtX3JlcXVpcmVSZXNpZGVudEtleSA9IGZhbHNlOworICAgICAgICAgICAgbV9y
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGZhbHNlOworCisgICAgICAgICAgICBhdXRvIHBheWxv
YWQgPSBtX3JlcXVlc3RNZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOworICAgICAgICAgICAg
QVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gY21kID0gc3RhdGljX2Nh
c3Q8Q3RhcFJlcXVlc3RDb21tYW5kPihwYXlsb2FkWzBdKTsKKyAgICAgICAgICAgIHBheWxvYWQu
cmVtb3ZlKDApOworICAgICAgICAgICAgYXV0byByZXF1ZXN0TWFwID0gQ0JPUlJlYWRlcjo6cmVh
ZChwYXlsb2FkKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0TWFwKTsKKworICAgICAgICAg
ICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yTWFrZUNyZWRl
bnRpYWwpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZmluZChDQk9SVmFsdWUoQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8g
RmluZCBvcHRpb25zLgorICAgICAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRN
YXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+
c2Vjb25kLmdldE1hcCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9u
TWFwLmZpbmQoQ0JPUlZhbHVlKGtSZXNpZGVudEtleU1hcEtleSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVxdWlyZVJlc2lkZW50S2V5ID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworCisgICAgICAg
ICAgICAgICAgICAgIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNh
dGlvbk1hcEtleSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5l
bmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24g
PSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtB
dXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVz
dE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRp
b25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KLSAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0
TWFwLT5nZXRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9
IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25N
YXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9y
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAg
ICAgIGlmIChjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbikgeworICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5m
aW5kKENCT1JWYWx1ZShDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmlu
ZCBvcHRpb25zLgorICAgICAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAo
KS5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vj
b25kLmdldE1hcCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5m
aW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNhdGlvbk1hcEtleSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjA3LDgg
KzIxMiwxMiBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAg
IGluZm9EYXRhLmluc2VydCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9u
c2VDb2RlOjprU3VjY2VzcykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgogICAgICAgICBpZiAo
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9y
LCBpbmZvRGF0YSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlk
TWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjpr
Q2JvciwgaW5mb0RhdGEpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLmhpZC0+aXNVMmYpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yLCBpbmZvRGF0YSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWVzc2Fn
ZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtFcnJvciwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9u
c2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFuZCkgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09
IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsKQEAgLTIyMyw5ICsyMzIsMTQgQEAgdm9pZCBNb2NrSGlk
Q29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yLCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFw
MkVyclVuc3VwcG9ydGVkT3B0aW9uKSB9KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKLSAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gYmFzZTY0
RGVjb2RlKG1fY29uZmlndXJhdGlvbi5oaWQtPnBheWxvYWRCYXNlNjQsIHBheWxvYWQpOworICAg
ICAgICAgICAgQVNTRVJUKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0LmlzRW1w
dHkoKSk7CisgICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGJhc2U2NERlY29kZShtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0WzBdLCBwYXlsb2FkKTsKKyAgICAgICAgICAgIG1fY29u
ZmlndXJhdGlvbi5oaWQtPnBheWxvYWRCYXNlNjQucmVtb3ZlKDApOwogICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1cyk7Ci0gICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hp
ZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a0Nib3IsIHBheWxvYWQpOworICAgICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5p
c1UyZikKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSht
X2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHBheWxvYWQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2Fn
ZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBw
YXlsb2FkKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5oCmluZGV4IGUwYmY4NmIyZmQxZTI2NWJmYzAyNzY4MTllOWViY2RjYzExMzM5NDguLjNk
Y2FiYzRiNWRjOTcwNTcwZmI1ZWMzZmY5MTM2OGJkNGViZmZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmgKQEAgLTM1LDExICszNSwxMyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIC8vIFRoZSBmb2xsb3dpbmcgYmFzaWNhbGx5IHNpbXVsYXRlcyBhbiBleHRlcm5hbCBI
SUQgdG9rZW4gdGhhdDoKLS8vICAgIDEuIE9ubHkgc3VwcG9ydHMgQ1RBUDIgcHJvdG9jb2wsCisv
LyAgICAxLiBTdXBwb3J0cyBvbmx5IG9uZSBwcm90b2NvbCwgZWl0aGVyIENUQVAyIG9yIFUyRi4K
IC8vICAgIDIuIERvZXNuJ3Qgc3VwcG9ydCByZXNpZGVudCBrZXlzLAogLy8gICAgMy4gRG9lc24n
dCBzdXBwb3J0IHVzZXIgdmVyaWZpY2F0aW9uLgotLy8gVGhlcmUgYXJlIGZvdXIgc3RhZ2VzIGZv
ciBlYWNoIFdlYkF1dGhOIHJlcXVlc3Q6CisvLyBUaGVyZSBhcmUgZm91ciBzdGFnZXMgZm9yIGVh
Y2ggQ1RBUCByZXF1ZXN0OgogLy8gRlNNOiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9PiBSZXF1
ZXN0OjpJbml0ID0+IFJlcXVlc3Q6Ok1zZworLy8gVGhlcmUgYXJlIGluZGVmaW5pdGUgc3RhZ2Vz
IGZvciBlYWNoIFUyRiByZXF1ZXN0OgorLy8gRlNNOiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9
PiBbUmVxdWVzdDo6SW5pdCA9PiBSZXF1ZXN0OjpNc2ddKwogLy8gQWNjb3JkaW5nIHRvIGRpZmZl
cmVudCBjb21iaW5hdGlvbnMgb2YgZXJyb3IgYW5kIHN0YWdlcywgZXJyb3Igd2lsbCBtYW5pZmVz
dCBkaWZmZXJlbnRseS4KIGNsYXNzIE1vY2tIaWRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPE1vY2tIaWRDb25uZWN0aW9uPiwgcHVibGljIEhpZENvbm5lY3Rpb24gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA3ODg2N2E1ZmM2NjZiOTdkYjkwNzAyOTRlNGVmOWJj
ZDBkODIyMzdjLi5iZTA4NzJmYmRmYjljYWM4Mjc4M2I1NDVmNTQ5OTZkNjRlZTc5Mzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaApAQCAtNjEsMTAgKzYxLDExIEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIFdyb25nTm9uY2UKICAgICAgICAgfTsKIAot
ICAgICAgICBTdHJpbmcgcGF5bG9hZEJhc2U2NDsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5
bG9hZEJhc2U2NDsKICAgICAgICAgU3RhZ2Ugc3RhZ2UgeyBTdGFnZTo6SW5mbyB9OwogICAgICAg
ICBTdWJTdGFnZSBzdWJTdGFnZSB7IFN1YlN0YWdlOjpJbml0IH07CiAgICAgICAgIEVycm9yIGVy
cm9yIHsgRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBmYXN0RGF0YUFy
cml2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI0MmFmNjZmOTEwNzlhMTk3ZDVjM2QzYmM4NzJi
ZTJhMzU3NzEyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRB
dXRoZW50aWNhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3RhcEhpZEF1dGhlbnRpY2F0b3Iu
aCIKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUg
IkN0YXBIaWREcml2ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlcXVlc3RDb252ZXJ0
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBm
aWRvOwotCi1DdGFwSGlkQXV0aGVudGljYXRvcjo6Q3RhcEhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1
bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdmVyLCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jl
c3BvbnNlJiYgaW5mbykKLSAgICA6IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKLSAgICAsIG1f
aW5mbyhXVEZNb3ZlKGluZm8pKQotewotICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdlIG5lZWQgYSB3
YXkgdG8gY29udmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgotICAgIEFTU0VSVCht
X2RyaXZlcik7Ci19Ci0KLXZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KCkKLXsKLSAgICAvLyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9SKCJTdGFydCBtYWtpbmcg
Y3JlZGVudGlhbHMuIik7Ci0gICAgYXV0byBjYm9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbml0YWxS
ZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9w
dGlvbnMsIG1faW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsK
LSAgICBtX2RyaXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7Ci0gICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0YSkpOwotICAgIH0pOwotfQotCi12b2lkIEN0YXBI
aWRBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Ci17Ci0gICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhKTsKLSAgICBpZiAoIXJlc3BvbnNl
KSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
IG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIGRhdGEu
c2l6ZSgpID09IDEgPyBkYXRhWzBdIDogLTEpIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7Ci19Ci0KLXZvaWQgQ3RhcEhp
ZEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCi17Ci0gICAgLy8gRklYTUUoMTkyMDYxKQot
ICAgIExPR19FUlJPUigiU3RhcnQgZ2V0dGluZyBhc3NlcnRpb25zLiIpOwotICAgIGF1dG8gY2Jv
ckNtZCA9IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNo
LCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLCBtX2luZm8ub3B0aW9ucygpLnVzZXJWZXJp
ZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Ci0gICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1vdmUo
Y2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZShkYXRhKSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Ci17
Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7
Ci0gICAgaWYgKCFyZXNwb25zZSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBF
cnJvciBjb2RlOiAiLCBkYXRhLnNpemUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRmNjI3OTUyNTY5MWRlYzVmYThk
MzU2ZTBhZTE5ZjJiZjIwN2I2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWRBdXRoZW50aWNhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFU
Rk9STShNQUMpCi0KLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBDdGFwSGlkRHJpdmVyOwotCi1jbGFzcyBDdGFwSGlkQXV0aGVudGljYXRvciBmaW5h
bCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEN0YXBI
aWRBdXRoZW50aWNhdG9yPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYg
ZHJpdmVyLCBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN0YXBIaWRBdXRoZW50aWNhdG9yKFdURk1v
dmUoZHJpdmVyKSwgV1RGTW92ZShpbmZvKSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBDdGFwSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4m
JiwgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmKTsKLQotICAgIHZvaWQgbWFr
ZUNyZWRlbnRpYWwoKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
clJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0OwotICAgIHZvaWQgZ2V0
QXNzZXJ0aW9uKCkgZmluYWw7Ci0gICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3RhcEhpZERyaXZlcj4gbV9kcml2ZXI7Ci0gICAgZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZSBtX2luZm87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjI4NjIwMzJi
YzViNjRlMzA5Yzc0ZDc2ZDk4YzIwYjI1NjI3MmE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDdGFwSGlk
RHJpdmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgZmlkbzsKLQotQ3RhcEhpZERyaXZlcjo6V29y
a2VyOjpXb3JrZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6
IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotewotICAgIG1fY29ubmVjdGlvbi0+
aW5pdGlhbGl6ZSgpOwotfQotCi1DdGFwSGlkRHJpdmVyOjpXb3JrZXI6On5Xb3JrZXIoKQotewot
ICAgIG1fY29ubmVjdGlvbi0+dGVybWluYXRlKCk7Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6
V29ya2VyOjp0cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNzYWdlLCBN
ZXNzYWdlQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6SWRsZSk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpXcml0ZTsKLSAgICBtX3JlcXVlc3RNZXNz
YWdlID0gV1RGTW92ZShyZXF1ZXN0TWVzc2FnZSk7Ci0gICAgbV9yZXNwb25zZU1lc3NhZ2UucmVz
ZXQoKTsKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0KLSAgICAvLyBIaWRD
b25uZWN0aW9uIGNvdWxkIGhvbGQgZGF0YSBmcm9tIG90aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRo
ZXJlb2ZvcmUgaW52YWxpZGF0ZSBpdCBiZWZvcmUgZWFjaCB0cmFuc2FjdGlvbi4KLSAgICBtX2Nv
bm5lY3Rpb24tPmludmFsaWRhdGVDYWNoZSgpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChtX3Jl
cXVlc3RNZXNzYWdlLT5wb3BOZXh0UGFja2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT53cml0ZShzZW50KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFT
ZW50IHNlbnQpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OldyaXRlKTsKLSAgICAv
LyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9SKCJTdGFydCB3cml0aW5nIGRhdGEuIik7Ci0g
ICAgaWYgKHNlbnQgIT0gSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQ6OlllcykgewotICAgICAgICBy
ZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2UtPm51bVBhY2tldHMoKSkgewotICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlYWQ7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVnaXN0ZXJEYXRhUmVjZWl2
ZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgd2Vha1RoaXMtPnJlYWQoZGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKG1fcmVxdWVzdE1lc3NhZ2Ut
PnBvcE5leHRQYWNrZXQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShIaWRDb25u
ZWN0aW9uOjpEYXRhU2VudCBzZW50KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgd2Vha1RoaXMtPndyaXRlKHNlbnQpOwotICAgIH0pOwotfQotCi12b2lkIEN0YXBI
aWREcml2ZXI6Oldvcmtlcjo6cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCi17Ci0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWQpOwotICAgIC8vIEZJWE1FKDE5MjA2MSkK
LSAgICBMT0dfRVJST1IoIlN0YXJ0IHJlYWRpbmcgZGF0YS4iKTsKLSAgICBpZiAoIW1fcmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShkYXRhKTsKLSAgICAgICAgLy8gVGhlIGZpcnN0IGZl
dyByZXBvcnRzIGNvdWxkIGJlIGZvciBvdGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVyZWZvcmUg
aWdub3JlIHRob3NlLgotICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlIHx8IG1fcmVzcG9u
c2VNZXNzYWdlLT5jaGFubmVsSWQoKSAhPSBtX3JlcXVlc3RNZXNzYWdlLT5jaGFubmVsSWQoKSkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSBhIGhpZCBpbml0IHBhY2tl
dDogJXMiLCBtX3Jlc3BvbnNlTWVzc2FnZSA/ICJ3cm9uZyBjaGFubmVsIGlkLiIgOiAiYmFkIGRh
dGEuIik7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX3Jlc3Bv
bnNlTWVzc2FnZS0+YWRkQ29udGludWF0aW9uUGFja2V0KGRhdGEpKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlkIGNvbnRpbnVhdGlvbiBwYWNrZXQuIik7Ci0g
ICAgICAgICAgICByZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9yZXNwb25zZU1lc3NhZ2UtPm1lc3Nh
Z2VDb21wbGV0ZSgpKSB7Ci0gICAgICAgIC8vIEEgS2VlcEFsaXZlIGNtZCBjb3VsZCBiZSBzZW50
IGJldHdlZW4gYSByZXF1ZXN0IGFuZCBhIHJlc3BvbnNlIHRvIGluZGljYXRlIHRoYXQKLSAgICAg
ICAgLy8gdGhlIGF1dGhlbnRpY2F0b3IgaXMgd2FpdGluZyBmb3IgdXNlciBjb25zZW50LiBLZWVw
IGxpc3RlbmluZyBmb3IgdGhlIHJlc3BvbnNlLgotICAgICAgICBpZiAobV9yZXNwb25zZU1lc3Nh
Z2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlKSB7Ci0gICAgICAg
ICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybk1lc3NhZ2UoV1RGTW92ZShtX3Jlc3BvbnNlTWVzc2FnZSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtl
cjo6cmV0dXJuTWVzc2FnZShPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdl
KQotewotICAgIC8vIEZJWE1FKDE5MjA2MSkKLSAgICBMT0dfRVJST1IoIlN0YXJ0IHJldHVybmlu
ZyBkYXRhLiIpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKLSAgICBtX2Nvbm5lY3Rpb24t
PnVucmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjaygpOwotICAgIG1fY2FsbGJhY2soV1RGTW92
ZShtZXNzYWdlKSk7Ci19Ci0KLUN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIoVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fd29ya2VyKG1ha2VVbmlxdWVS
ZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24pKSkKLSAgICAsIG1fbm9uY2Uoa0hpZEluaXRO
b25jZUxlbmd0aCkKLXsKLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb2Nh
dGVDaGFubmVsOwotICAgIG1fY2hhbm5lbElkID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7Ci0gICAg
bV9yZXF1ZXN0RGF0YSA9IFdURk1vdmUoZGF0YSk7Ci0gICAgbV9yZXNwb25zZUNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIGNoYW5uZWwuCi0gICAgLy8g
RklYTUUoMTkyMDYxKQotICAgIExPR19FUlJPUigiU3RhcnQgYWxsb2NhdGluZyBhIGNoYW5uZWwu
Iik7Ci0gICAgQVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOwot
ICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKG1fbm9uY2UuZGF0YSgpLCBtX25vbmNl
LnNpemUoKSk7Ci0gICAgYXV0byBpbml0Q29tbWFuZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUo
bV9jaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgbV9ub25jZSk7Ci0gICAg
QVNTRVJUKGluaXRDb21tYW5kKTsKLSAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqaW5p
dENvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9I
aWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKFdURk1vdmUo
cmVzcG9uc2UpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFm
dGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQot
ewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWwpOwotICAgIGlm
ICghbWVzc2FnZSkgewotICAgICAgICByZXR1cm5SZXNwb25zZSh7IH0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIEFTU0VSVChtZXNzYWdlLT5jaGFubmVsSWQoKSA9PSBtX2NoYW5uZWxJ
ZCk7Ci0KLSAgICBhdXRvIHBheWxvYWQgPSBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOwot
ICAgIEFTU0VSVChwYXlsb2FkLnNpemUoKSA9PSBrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7Ci0gICAg
Ly8gUmVzdGFydCB0aGUgdHJhbnNhY3Rpb24gaW4gdGhlIG5leHQgcnVuIGxvb3Agd2hlbiBub25j
ZSBtaXNtYXRjaGVzLgotICAgIGlmIChtZW1jbXAocGF5bG9hZC5kYXRhKCksIG1fbm9uY2UuZGF0
YSgpLCBtX25vbmNlLnNpemUoKSkpIHsKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCBkYXRhID0gV1RGTW92ZShtX3JlcXVlc3REYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KG1fcmVzcG9uc2VDYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT50cmFu
c2FjdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkeTsKLSAgICBh
dXRvIGluZGV4ID0ga0hpZEluaXROb25jZUxlbmd0aDsKLSAgICBtX2NoYW5uZWxJZCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAyNDsKLSAgICBtX2NoYW5uZWxJ
ZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgMTY7Ci0gICAg
bV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8
IDg7Ci0gICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5k
ZXhdKTsKLSAgICAvLyBGSVhNRSgxOTE1MzQpOiBDaGVjayB0aGUgcmVzZXQgb2YgdGhlIHBheWxv
YWQuCi0gICAgLy8gRklYTUUoMTkyMDYxKQotICAgIExPR19FUlJPUigiU3RhcnQgc2VuZGluZyB0
aGUgcmVxdWVzdC4iKTsKLSAgICBhdXRvIGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9j
aGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgbV9yZXF1ZXN0RGF0YSk7Ci0g
ICAgQVNTRVJUKGNtZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYg
cmVzcG9uc2UpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFr
VGhpcy0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZShyZXNwb25zZSkpOwot
ICAgIH0pOwotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCi17Ci0gICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWR5KTsKLSAgICBBU1NFUlQoIW1lc3NhZ2UgfHwg
bWVzc2FnZS0+Y2hhbm5lbElkKCkgPT0gbV9jaGFubmVsSWQpOwotICAgIC8vIEZJWE1FKDE5MjA2
MSkKLSAgICBMT0dfRVJST1IoIlN0YXJ0IHJldHVybmluZyB0aGUgcmVzcG9uc2UuIik7Ci0gICAg
cmV0dXJuUmVzcG9uc2UobWVzc2FnZSA/IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCkgOiBW
ZWN0b3I8dWludDhfdD4oKSk7Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6cmV0dXJuUmVzcG9u
c2UoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpCi17Ci0gICAgLy8gUmVzZXQgc3RhdGUgYmVm
b3JlIGNhbGxpbmcgdGhlIHJlc3BvbnNlIGNhbGxiYWNrIHRvIGF2b2lkIGJlaW5nIGRlbGV0ZWQu
Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwotICAgIG1fcmVzcG9uc2VDYWxsYmFjayhXVEZN
b3ZlKHJlc3BvbnNlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwNTAyNjg5NGZlZmUxZTk1M2Uw
MzlkMGNjODhmMzQ2ZGI1YTQyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWREcml2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCi0KLSNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWRv
Q29uc3RhbnRzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgotI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgSElEIHByb3RvY29sOgotLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10
by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKLS8vIEZT
TTogSWRsZSA9PiBBbGxvY2F0ZUNoYW5uZWwgPT4gUmVhZHkKLWNsYXNzIEN0YXBIaWREcml2ZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcEhpZERyaXZlcj4gewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN0YXBIaWREcml2ZXIpOwot
cHVibGljOgotICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjx1aW50OF90PiYmKT47Ci0KLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Ci0gICAg
ICAgIElkbGUsCi0gICAgICAgIEFsbG9jYXRlQ2hhbm5lbCwKLSAgICAgICAgUmVhZHksCi0gICAg
ICAgIC8vIEZJWE1FKDE5MTUyOCkKLSAgICAgICAgQnVzeQotICAgIH07Ci0KLSAgICBleHBsaWNp
dCBDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKLQotICAgIHZvaWQg
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKTsKLQot
cHJpdmF0ZToKLSAgICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBlciB0aGF0IG1haW50YWlucyB0aGUg
dHJhbnNhY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8t
djIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYy
LjAtcHMtMjAxNzA5MjcuaHRtbCNhcmJpdHJhdGlvbgotICAgIC8vIEZTTTogSWRsZSA9PiBXcml0
ZSA9PiBSZWFkLgotICAgIGNsYXNzIFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXb3Jr
ZXI+IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdvcmtlcik7Ci0gICAgcHVibGljOgotICAgICAgICB1c2luZyBNZXNzYWdl
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYm
KT47Ci0KLSAgICAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgIHsKLSAgICAgICAgICAg
IElkbGUsCi0gICAgICAgICAgICBXcml0ZSwKLSAgICAgICAgICAgIFJlYWQKLSAgICAgICAgfTsK
LQotICAgICAgICBleHBsaWNpdCBXb3JrZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYpOwot
ICAgICAgICB+V29ya2VyKCk7Ci0KLSAgICAgICAgdm9pZCB0cmFuc2FjdChmaWRvOjpGaWRvSGlk
TWVzc2FnZSYmLCBNZXNzYWdlQ2FsbGJhY2smJik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIHdyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50KTsKLSAgICAgICAgdm9pZCByZWFkKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAgICAgICB2b2lkIHJldHVybk1lc3NhZ2UoT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOwotCi0gICAgICAgIFVuaXF1ZVJlZjxIaWRDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRs
ZSB9OwotICAgICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVz
c2FnZTsKLSAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVzcG9uc2VN
ZXNzYWdlOwotICAgICAgICBNZXNzYWdlQ2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICB9OwotCi0g
ICAgdm9pZCBjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxmaWRvOjpGaWRv
SGlkTWVzc2FnZT4mJik7Ci0gICAgdm9pZCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChP
cHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7Ci0gICAgdm9pZCByZXR1cm5SZXNwb25z
ZShWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICBVbmlxdWVSZWY8V29ya2VyPiBtX3dvcmtlcjsK
LSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKLSAgICB1aW50MzJfdCBtX2NoYW5u
ZWxJZCB7IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsIH07Ci0gICAgLy8gT25lIHJlcXVlc3Qg
YXQgYSB0aW1lLgotICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlcXVlc3REYXRhOwotICAgIFJlc3Bv
bnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX25v
bmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMGExYzVmNjQ5OWE5YmRhMjYwOWEyMDBiYjMwMTQ3
ZjdjZDZmYjM0Li42YzJlN2EyZTQ5OTBjZGFiODc4ZWE1MTFjNmI1MGE4MDUwMGFlYjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MTUsOCArMTAxNSw2IEBACiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94
eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwogCQk1
NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0
IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8q
IEN0YXBIaWRBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRp
Y2F0b3IuaCAqLzsgfTsKLQkJNTc1OTdFQkUyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NTk3RUJDMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAg
Ki87IH07Ci0JCTU3NTk3RUMxMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk3RUMwMjE4
MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLzsgfTsKIAkJNTc3MkYyMDYyMTdE
QkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNl
LmggKi87IH07CiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExp
bmsuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRF
MjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87IH07CkBAIC0xMDM4LDYgKzEw
MzYsNyBAQAogCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzEy
MTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLzsgfTsKIAkJNTdEQ0VEQzcy
MTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi87IH07CiAJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0
NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM5MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0
aGVudGljYXRvck1hbmFnZXIuaCAqLzsgfTsKKwkJNTdFQjJFM0EyMUUxOTgzRTAwQjg5Q0RGIC8q
IFUyZkhpZEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNh
dG9yLmggKi87IH07CiAJCTU4Nzc0M0E2MjFDMzBCQkUwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLzsgfTsKIAkJ
NThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEU5NzdERDIx
QzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLzsgfTsKIAkJ
NUMwQjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwpAQCAtMzQwOCw2ICszNDA3LDggQEAKIAkJNTdEQ0VEQzYyMTRGMTgz
MDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNb2NrTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0RDRURDRDIxNEY1MTY4MDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFUyZkhpZEF1dGhlbnRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVTJmSGlkQXV0aGVudGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU4Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgbmFtZSA9IEhUVFBTVXBncmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL0hUVFBTVXBncmFkZUxpc3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4
RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUxNSw4ICs1NTE2LDggQEAKIAkJ
MkQxNTUxQTkxRjVBOUI0MjAwMDZFM0ZFIC8qIFJlbW90ZUxheWVyVHJlZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTQwNDkwNkYyMURFNjVENzAwMzdG
MERCIC8qIG1hYyAqLywKIAkJCQkyRDE1NTFBQTFGNUE5QkE3MDAwNkUzRkUgLyogaW9zICovLAor
CQkJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8sCiAJCQkJMUFCMTZBRTAxNjQ4
NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCAqLywKIAkJ
CQkwRkYyNEEyRjE4NzlFNEZFMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQUIxNkFERjE2NDg2NTZEMDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSAqLywKQEAgLTY3MDQsMTUgKzY3MDUsMTcg
QEAKIAkJCW5hbWUgPSBGcmFtZXdvcmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKLQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8qIGZpZG8gKi8gPSB7CisJCTU3NTk3RUJG
MjE4MTg0QjIwMDM3RjkyNCAvKiBGaWRvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk1NzU5N0VCQzIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhl
bnRpY2F0b3IuY3BwICovLAogCQkJCTU3NTk3RUJCMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlk
QXV0aGVudGljYXRvci5oICovLAogCQkJCTU3NTk3RUMwMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFw
SGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhp
ZERyaXZlci5oICovLAorCQkJCTU3RUIyRTM5MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRo
ZW50aWNhdG9yLmNwcCAqLywKKwkJCQk1N0VCMkUzODIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlk
QXV0aGVudGljYXRvci5oICovLAogCQkJKTsKLQkJCXBhdGggPSBmaWRvOworCQkJcGF0aCA9IEZp
ZG87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1NzYwODI4QTIwMjk4NEM5
MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8gPSB7CkBAIC02NzI5LDcgKzY3MzIsNyBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1N0RDRUQ5RTIxNDhG
OUQxMDAxNkI4NDcgLyogQ29jb2EgKi8sCi0JCQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8q
IGZpZG8gKi8sCisJCQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8qIEZpZG8gKi8sCiAJCQkJ
NTdEQ0VEQkQyMTRDOUZBOTAwMTZCODQ3IC8qIE1vY2sgKi8sCiAJCQkJNTdEQ0VEQTQyMTQ5RTY0
QTAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3IuY3BwICovLAogCQkJCTU3RENFRDhCMjE0ODVCRDcw
MDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggKi8sCkBAIC05MzE1LDYgKzkzMTgsNyBAQAogCQkJ
CTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGODMz
Njg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1lbnVEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1N0VCMkUzQTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUE5MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdh
bWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc0Niw4ICsxMDc1MCw2IEBACiAJ
CQkJMkQ5MkE3ODYyMTJCNkFCMTAwRjQ5M0ZEIC8qIENoaWxkUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNG
RCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3NTk3RUJFMjE4MTg0OTAw
MDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
NzU5N0VDMTIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYjc2MGFiN2MzNjQzM2JlNTBmYTRi
ODdkYTJiZThkYWQ3NmU2YmZiLi40ZDU2YWQwMmE5NDRiMGY1M2VkZDEyOGQwNTg2ODVhOWZmMzU0
ODg2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9y
cyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAg
ICAxKSBhZGRzIHN1cHBvcnQgZm9yIFUyRiBtb2NraW5nIG1lY2hhbmlzbTsKKyAgICAgICAgMikg
dXBkYXRlcyB0ZXN0cyB0byByZWZsZWN0IFUyZkNvbW1hbmRDb25zdHJ1Y3RvciBjaGFuZ2VzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3Qu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorCiAyMDE5LTAx
LTA3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5dIEVXUzogd2luY2Fpcm8tZXdzIGNhbm5vdCBhcHBseSBhIHBhdGNoIHdpdGggKi5wbmcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9u
c2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9u
c2VUZXN0LmNwcAppbmRleCBkZTNmMjA5MjkzMzA5YzRiYmMyMzIwMDg2YjRhYWY5NjBkZWM0Yjhh
Li5hN2RjYWIwYjc2YTcyOGY4OTJlN2I0MzkwZmM0ODVhYzhlNzE3ZjhiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3Bw
CkBAIC01MjAsNyArNTIwLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNv
cnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTUpCiAvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNh
dG9yIGRhdGEgaXMgcHJvcGVybHkgc2VyaWFsaXplZC4KIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZy
b21VMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRl
bnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgYXV0byByZXNw
b25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0
VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CiAgICAg
QVNTRVJUX1RSVUUocmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5
dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIEVY
UEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2ln
bktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKQEAg
LTUzMywyNyArNTMzLDI3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJl
c3BvbnNlRGF0YSkKIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0
aE51bGxLZXlIYW5kbGUpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRU
ZXN0U2lnblJlc3BvbnNlKCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0
U2lnblJlc3BvbnNlKCkpOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKIFRFU1Qo
Q1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCiB7Ci0g
ICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVs
eWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhf
dD4oKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZlY3Rvcjx1
aW50OF90PigpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25XaXRoQ29ycnVwdGVkQ291bnRlcikKIHsKICAg
ICAvLyBBIHNpZ24gcmVzcG9uc2Ugb2YgbGVzcyB0aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNw
b25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3Bv
bnNlKDMpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVz
dENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsK
IH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aENvcnJ1cHRl
ZFNpZ25hdHVyZSkKIHsKICAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9yZSB0aGFuIDUgYnl0
ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0
Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNp
Z25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJh
d0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSg1KSk7CiAgICAgRVhQRUNU
X0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCmluZGV4IDM4ZTAzYzg4NmI1OTY5YWNhZGVhOGQzZTUwMTcw
YmNlMjZkMDdkOGMuLmI2ODJmYjdjMjg3YzMwZDMwZmRjMGI1NDBiYTY5NTIyNGUzMmE0MDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgK
QEAgLTUxLDcgKzUxLDcgQEAgY29uc3RleHByIGNoYXIga1JlbHlpbmdQYXJ0eUlkW10gPSAiYWNt
ZS5jb20iOwogCiBjb25zdGV4cHIgdWludDhfdCBrVTJmUmVnaXN0ZXJDb21tYW5kQXBkdVtdID0g
ewogICAgIC8vIENMQSwgSU5TLCBQMSwgUDIgQVBEVSBpbnN0cnVjdGlvbnMKLSAgICAweDAwLCAw
eDAxLCAweDAwLCAweDAwLAorICAgIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDAsCiAgICAgLy8gRGF0
YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgogICAgIDB4MDAsIDB4MDAs
IDB4NDAsCiAgICAgLy8gQ2hhbGxlbmdlIHBhcmFtZXRlciAtLSBzZWUga0NsaWVudERhdGFIYXNo
CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3RleHByIHVpbnQ4X3Qga1UyZkNoZWNrT25seVNpZ25D
b21tYW5kQXBkdVtdID0gewogCiBjb25zdGV4cHIgdWludDhfdCBrVTJmRmFrZVJlZ2lzdGVyQ29t
bWFuZFtdID0gewogICAgIC8vIENMQSwgSU5TLCBQMSwgUDIgQVBEVSBpbnN0cnVjdGlvbnMKLSAg
ICAweDAwLCAweDAxLCAweDAwLCAweDAwLAorICAgIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDAsCiAg
ICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgogICAgIDB4
MDAsIDB4MDAsIDB4NDAsCiAgICAgLy8gQm9ndXMgY2hhbGxlbmdlIHBhcmFtZXRlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggN2M4MjEzZWRlYmJiYzNhNjNlZWQ4MzhlZWU1ZmYxMTgzYTU4YTNkZC4uMjRkMzQwZjAw
NmVkNThjMzBmNWM3MTM4OTAxMTg2NjU4YTE1MmMyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNTA5LDEwICsy
NTA5LDM2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25WCiAgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKICAgICAgICAgSlNWYWx1ZVJlZiBw
YXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgcGF5
bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7CiAgICAgICAgIGlmICghSlNWYWx1ZUlz
VW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwo
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVl
SXNTdHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgIGlmICgh
SlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHBheWxvYWRCYXNlNjQgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5
bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBwYXls
b2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBp
ZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0
cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHBh
eWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBpLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFs
dWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9XSyhhZG9wdChKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5nZXQoKSk7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKHsgQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSB9KTsKLSAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7CisgICAgICAgICAgICBoaWRW
YWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBpc1UyZlByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImlzVTJmIikpOworICAgICAgICBKU1ZhbHVlUmVmIGlzVTJmVmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgaXNVMmZQcm9wZXJ0eU5hbWUu
Z2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBpc1Uy
ZlZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBpc1UyZlZhbHVlKSkgeworICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgaXNVMmYgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpOworICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSB9KTsKKyAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNVMmYpKS5n
ZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ga2Vl
cEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
a2VlcEFsaXZlIikpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2M2VhMzZiYzk4YmUwZDc0YzBlODkzMTZiMjAwODY3ZjUz
NDhlYzUuLmY1MDNmNTBkNmYzMTZkYWUwNDhmYWVjMTA4YjZiMjVkNzFlNDM2N2YgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxOS0wMS0wNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gU3VwcG9ydCBVMkYgSElEIEF1dGhlbnRpY2F0b3Jz
IG9uIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE1MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MTAyMDI3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlc2lkaW5nIGFkZGluZyB0ZXN0
cyBmb3IgVTJGIGF1dGhlbnRpY2F0b3JzLCBpdCBhbHNvIGNoYW5nZXMgcGF5bG9hZEJhc2U2NCBm
cm9tCisgICAgICAgIGEgc3RyaW5nIHRvIGEgdmVjdG9yIG9mIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxl
bnQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJm
Lmh0dHBzLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
aGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJm
Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAxOS0wMS0wNyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdHMv
aHR0cC93cHQvZmV0Y2gvY3NwLXJlcG9ydHMtYnlwYXNzLWNzcC1jaGVja3MuaHRtbCBpcyBmbGFr
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFp
bHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQt
ZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGUyNDQwNWZhZmU3YTlmNzdiYjMwNzQyMTYyZTBiMTg4
ODRjYWFmZDEuLmM0NmVlMzkxMzhmMGVmZWNmNzQxMjk2ZWRhZTdmOTMyOGE1NGNlOTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWls
dXJlLmh0dHBzLmh0bWwKQEAgLTY0LDcgKzY0LDcgQEAKIAogICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1p
ZCIsIHBheWxvYWRCYXNlNjQ6dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3Jv
bmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogLTEiKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0
aCByZXF1ZXN0Ojptc2cgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbAppbmRleCBkYjAy
ZDU0MThhNmMwNWMzODRhZTVhODIyNmY1YmYyOTliM2FlODdlLi44ZTVkMDk1ZTVmZDk4M2ZhYWFj
NGQ3ZTNhNDYyYjBjY2RkOTdkNjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCkBAIC0yMSw3ICsyMSw3
IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNzYWdl
QmFzZTY0LCBrZWVwQWxpdmU6IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwga2VlcEFsaXZlOiB0cnVlIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlh
bCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWws
IG51bGwpOwpAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGZh
c3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTM5LDcgKzM5LDcg
QEAKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogImVtcHR5LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3Nh
Z2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImVtcHR5LXJlcG9ydCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRl
ckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTQ4LDcgKzQ4LDcgQEAK
IAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBl
cnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNz
YWdlQmFzZTY0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVs
LWlkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51
ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNTcsNyArNTcs
NyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5p
dCIsIGVycm9yOiAid3Jvbmctbm9uY2UiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNz
YWdlQmFzZTY0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRl
ckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5o
dG1sCmluZGV4IGI5OTUzZjlmNWIzYTU1NmYxYjUyYmFiNTJiNGI5YzBiYzk4N2RlMzguLjY2MDA0
YTMyMTUzZTY1NDRjYjA4ODZmZjg0YTZmOTFlZGQ2NDY1NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMu
aHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiB0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlN
ZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAppbmRleCAyZGRlNmQwOWFhMTJiOTBiYmE3MGE0ZmYxYTRm
OTE0YWVlN2M5ZDUwLi5mMTYzYTM5NmYyYWRkOTM4OTI4YmZmZDM3NjFlZjU3ZjRhZmNkZDM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5o
dHRwcy5odG1sCkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2Rl
OiAtMSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1h
bGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNjNiN2EyODI1ZmJh
NzcyNjQzNTdmMTRjMzNmYTQ4NGQ2NjE1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
dTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2Fk
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBib2d1cyBj
b21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1h
dGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4gCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVu
dC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MTc5OThiYzcxODcxNGE5OGQzMGE1NDg3MjI1ZjEw
YmNiMjZmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5o
dG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVu
dGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBmYWlsdXJlIGNh
c2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJd
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bWFsZm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZv
cm1lZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBl
cnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6
IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1d
LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgLy8gTWF0Y2ggdGhlIHNlY29uZCBleGNsdWRlIGNyZWRl
bnRpYWwuCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwgLy8gVGhlIGNvbnRlbnQgZG9l
c24ndCBtYXR0ZXIuCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vy
cm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAg
ZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwu
cGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhj
bHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0
IG9mIHVzZXIgcHJlc2VuY2UuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA2M2I3YTI4MjVmYmE3NzI2NDM1N2YxNGMzM2ZhNDg0ZDY2MTVkYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFs
Zm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBVMkYgcmVnaXN0
ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4
Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vjb25kIGV4Y2x1ZGUg
Y3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50
aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0IG9mIHVzZXIgcHJl
c2VuY2UuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtdTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3ZDllODhhMDZiZWQ0NmM3ZDRmZDg1ZTE2
MDFjZTJhZWNmNDIzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRt
bApAQCAtMCwwICsxLDE1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRp
Y2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gZmFpbHVyZSBjYXNl
cyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFR
PT0iXSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBwYXJz
ZSB0aGUgQVBEVSByZXNwb25zZS4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
VW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNv
dWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIik7CisgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciBy
ZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
dXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAg
ICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
IEVycm9yIGNvZGU6IDI3OTA0Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
cnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpv
aG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2Np
aVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4
Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4gRXJyb3IgY29kZTogMjc5MDQiKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9o
biIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhj
bHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBt
YXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0
aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICAvLyBNYXRjaCB0aGUgc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlh
bC4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVk
ZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RD
cmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dIC8vIFRoZSBjb250ZW50IGRvZXNuJ3Qg
bWF0dGVyLgorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5v
RXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFz
dCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlh
bHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVD
b25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRp
dGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNs
dWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRp
YWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVz
ZW5jZS4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDVkOTNiODA3YTQ0YzUzNzM0YTdmNWQ4
MTFkZjYwMTM1NjJjMDVjN2MuLjBkNzlhOWFkOWE2Yjk4NDc0Yzc1YmZjMTNkNThjMWRlMDc0MWFh
NjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKQEAgLTcsNyArNyw3IEBACiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQg
bW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbi4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQgfSB9KTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKICAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTdiMjYxN2ZhODg3ZjcxMzFjMmMwZDhkMjM5YTg5NzliYjNjNGU1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bWluaW11bSBvcHRpb25zIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEg
bW9jayB1MmYgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRv
ci4gMiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0ZXN0IG9m
IHVzZXIgcHJlc2VuY2UgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFhYjE4ZDE3ZGI1ODg2OTgxNjY4M2U4NWZiMDMzYzk4MDhjODQ5YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxMjkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1
dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8v
IENoZWNrIHJlc3BvbnNlCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBh
cnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJh
c2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50
aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNw
b25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVu
Z2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJOb3RTdXBwb3J0ZWRFcnJvciIsICgpID0+IHsgY3JlZGVudGlh
bC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgfSk7CisKKyAgICAgICAgLy8gQ2hlY2sgYXR0
ZXN0YXRpb24KKyAgICAgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShj
cmVkZW50aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJmaWRvLXUyZiIpOworICAgICAgICAvLyBDaGVj
ayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVz
dGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4
U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2
MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRh
LmNvdW50ZXIsIDApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0
aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwu
cGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICAvLyBDaGVjayBmaWRv
LXUyZiBhdHRlc3RhdGlvbgorICAgICAgICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRo
RGF0YS5wdWJsaWNLZXkpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5hdHRTdG10Lng1Yy5sZW5ndGgsIDEpOworICAgIH0KKworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAg
ICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRl
bnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENy
ZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAg
ICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNs
dWRlQ3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQp
LAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgi
TVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRp
YWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRl
bnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sIC8vIFRoZSBjb250ZW50IGRvZXNuJ3QgbWF0
dGVyLgorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVkZW50aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhl
bnRpY2F0b3IuIDIiKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJw
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDUwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRlc3Qgb2YgdXNlciBwcmVzZW5jZSBp
biBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1s
CmluZGV4IGUzNjM2YzNlNzViN2Q2MDE2MWQ1MDBiMjEyZWYxNTg4NDYwN2MwMjUuLjE0NGJhOWQ4
OWE5YmQ4NjA2ZDk0NDc4MGQ0NGJiYTFmOTUyMDIzMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQt
c2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAt
MTMsNyArMTMsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiB0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5
bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRt
bAppbmRleCBlYzZiMGE4OGZhOWE0Mjc4NDgzYjQwMDYxMWM3Zjk5ZDI4ODVmZjdiLi41YWMyMTM5
MGEyNTJhNjNhYTM3NTkzNDViZDUxMjAzOWY4NzM1Zjk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlk
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCkBAIC0zMiw3ICszMiw3IEBA
CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0g
fSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQ
YXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVu
a25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3du
IGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAtMSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVhMDYxNDViZDU1ZmFjNWQ0NjliN2UzOGFlOTA1YTkwMThmYmVlNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQg
c2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gMiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE3Y2Q4YTVi
YjkxZDgxYjE0NzZhZGQ3YzQyZDAxMzYzYjBkNmM3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAg
ICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFs
SWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJlc3BvbnNl
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0s
CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIDIiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTA2
MTQ1YmQ1NWZhYzVkNDY5YjdlMzhhZTkwNWE5MDE4ZmJlZTRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBu
byBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
MiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI0MzViNWY1YzdmMDFlNjZkMjE4MzE1Y2UwMDlhMGNhNmQxYmYy
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayB1MmYg
YXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25v
d25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCBw
YXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJO
byBjcmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4g
dGhlIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
bm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IDIiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDY3ZGI4MzEwMDdmN2EyYzUwNDVkNzJkYWUzZTFjZDgw
MDFjYzI0ZDAuLjc0MzYyNDY2ZTNmYjUzODE3MTFiOTI5NzQ0NDdhNTY3ZmMxOTNmZTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
QEAgLTYsNyArNiw3IEBACiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6
IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0IH0gfSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKIAogICAgIGZ1bmN0aW9uIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzRh
MzllYWEyOGQ1YTQ0Y2M0YWMwNjY5NzkyNDM5NjRhOWI0MjNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtb3JlIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
CitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGVzdCBvZiB1c2VyIHBy
ZXNlbmNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTZh
YWZjY2QwMTNjMjJhZGNkNDNlMGEzNTg1NzBlMTA4OTMyMGYyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgZnVu
Y3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHJl
c3BvbmQKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVu
dGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQp
LCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVu
dERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUy
Iiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlLCBudWxsKTsKKworICAgICAgICAv
LyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRh
KG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNo
KSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNm
M2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgMSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOworICAgIH0KKwor
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlh
bElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAg
IHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBh
cnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFz
ZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJm
Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAg
ICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1vcmUg
YWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNm
aWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAg
IH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRlc3Qgb2Yg
dXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGls
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5k
ZXggODNmNGI0OGFkY2YyNWI3MDA0ZTk3MDFmNDdmMDEzZjhhMDU5YWZhYi4uZjYwOTg2YjQ3MjI3
ZWNlZDMxYTE4ZjIyYzBjOTFmOTRhYzRmYTFiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTY5LDYgKzY5LDM0IEBAIGNvbnN0IHRl
c3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMw
Z1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKwogICAgICI0L0YwVkI3
RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJD
IiArCiAgICAgIlFvSjFMN0ZlNjRHOXVCYz0iOworY29uc3QgdGVzdFUyZkFwZHVOb0Vycm9yT25s
eVJlc3BvbnNlQmFzZTY0ID0gImtBQT0iOworY29uc3QgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0
ZWRPbmx5UmVzcG9uc2VCYXNlNjQgPSAiYlFBPSI7Citjb25zdCB0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCA9ICJhb0E9IjsKK2NvbnN0IHRlc3RVMmZBcGR1Q29uZGl0aW9u
c05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCA9ICJhWVU9IjsKK2NvbnN0IHRlc3RVMmZS
ZWdpc3RlclJlc3BvbnNlID0KKyAgICAiQlFUb2RpV0pidVRrYmNBeWRtNkFoNVl2TnQrZC9vdFdm
emRqQVZzWmtLWU9GQ2ZlWVMxbVFZdmFHVkJZSHJ4YyIgKworICAgICJqQjJ0Y1F5eFRDTDR5WEJG
OUdFdnNneVJRRDY5aWI5MzdGQ1hWZTZjSmpYdnFxeDdLNXhjN3hjMnczRjlwSVUwIiArCisgICAg
InlNYTJWTmYvbEY5UXRjeE9lQVZiM1RsclpQZU5vc1g1WWdETTFCWE5DUDVDQURnd2dnSktNSUlC
TXFBREFnRUMiICsKKyAgICAiQWdRRWJJZ2lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DNHhMREFxQmdO
VkJBTVRJMWwxWW1samJ5QlZNa1lnVW05diIgKworICAgICJkQ0JEUVNCVFpYSnBZV3dnTkRVM01q
QXdOak14TUNBWERURTBNRGd3TVRBd01EQXdNRm9ZRHpJd05UQXdPVEEwIiArCisgICAgIk1EQXdN
REF3V2pBc01Tb3dLQVlEVlFRRERDRlpkV0pwWTI4Z1ZUSkdJRVZGSUZObGNtbGhiQ0F5TkRreE9E
SXoiICsKKyAgICAiTWpRM056QXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUTh5
cmtzeTVjb2Z1am1PVU4rSWZ6VyIgKworICAgICJ0dkZsc3RXajg5c1RIVEhCYTNRcnRIYlkwZW1R
Z090VWJKdTk5VmJtSVEvVUo0V0pubmpNV0o2K01ROXMyNS8wIiArCisgICAgIm96c3dPVEFpQmdr
ckJnRUVBWUxFQ2dJRUZURXVNeTQyTGpFdU5DNHhMalF4TkRneUxqRXVNakFUQmdzckJnRUUiICsK
KyAgICAiQVlMbEhBSUJBUVFFQXdJRU1EQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuNXNGSWtp
OFRQUXN4WmtmeXF1cyIgKworICAgICJtMlVidmx2YzNJN3dyU3djSC9zMjBZY1YxQzU0c2traVQ1
TEg1dWVnWEVudzUrVElnYjh1bFBSZVNpR0RQWFJXIiArCisgICAgImhSMFBiQlJhS1ZRTWgwOHdr
c2swdEQwaUs0bGl3UFFRenZIYmRZa3E4UmEwU3BiMTAxcmVvNEl2eHhSdllBUTQiICsKKyAgICAi
Vzh0cHRseVo1K3RwR1hobkE4RFl6VUhvOTF6S1JLcUt0eVd0am5tZjg2aHBhbThiSmxibU1iSGtB
WVBBajlwVCIgKworICAgICIra3FQaGFCV2s1Uks0WG1oTTUwQUxSWEt2WUVBa094eUx2WGUrWlph
TngxQlhXSkxhS0p3ZksyWHZOMFhoYStYIiArCisgICAgIjRsanpQZlZxQXhxZ05XMk9qVjY4cmNk
T0J4WTJ4ckVRck9YTW01RGY2c3JtUVA4YnNQSCtYYlR2OTZsZkJnY3oiICsKKyAgICAiOVRCRkFp
QXlSM25HanpPQUtJb1JsN1lKWDNwdXViR3h3U2YyYXVFcW1mNkZNdXdqdVFJaEFPT1ZGcXhOWWU1
ayIgKworICAgICJCRTFRdEJXbXBOVFlTNmJZbGN0YXQ2R3FmUWdkNDBINmtBQT0iOworY29uc3Qg
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCA9CisgICAgIlByMkp2M2ZzVUpkVjdwd21OZS1xckhz
cm5GenZGemJEY1gya2hUVEl4clpVMV8tVVgxQzF6RTU0QlZ2ZE9XdGsiICsKKyAgICAiOTQyaXhm
bGlBTXpVRmMwSV9rSUFPQSI7Citjb25zdCB0ZXN0VTJmU2lnblJlc3BvbnNlID0KKyAgICAiQVFB
QUFEc3dSQUlnZTk0S1Vxd2ZUSXNuNEFPamNNMW1wTWNSamRJdFZFZURYMFc1bkdoQ1AvY0NJRHhS
ZTBlSCIgKworICAgICJmNFY0TGVFQWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09rQUE9IjsK
IAogY29uc3QgUkVTT1VSQ0VTX0RJUiA9ICIvV2ViS2l0L3dlYmF1dGhuL3Jlc291cmNlcy8iOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358561</attachid>
            <date>2019-01-07 18:02:14 -0800</date>
            <delta_ts>2019-01-07 22:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191535-20190107180213.patch</filename>
            <type>text/plain</type>
            <size>146320</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiYzUxZDg0OGE2NmU0
YjVkNTZhNzYwNjQwNzQxMDViYzIzYjBlZi4uM2M0ODUzZGUxNmY4YmVmY2I3Nzc2MDRjMjZhY2Fk
ODE1ODU2NmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTA3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBw
b3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIFUyZkNvbW1hbmRDb25zdHJ1Y3RvciB0byBwcm9kdWNl
IHJlZ2lzdGVyIGNvbW1hbmRzIHdpdGgKKyAgICAgICAgZW5mb3JjaW5nIHRlc3Qgb2YgdXNlciBw
cmVzZW5jZS4gT3RoZXJ3aXNlLCBhdXRoZW50aWNhdG9ycyB3b3VsZCBzaWxlbnRseQorICAgICAg
ICBnZW5lcmF0ZSBjcmVkZW50aWFscy4gSXQgYWxzbyByZW5hbWVzIHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlIHRvCisgICAgICAgIHJlYWRVMmZTaWduUmVzcG9uc2UuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChmaWRvOjpXZWJDb3JlOjpjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6Cisg
ICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRG
cm9tVTJmU2lnblJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKwogMjAxOS0wMS0wNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3ZmIw
MTQyMjJhMmE1NWZmNzA5MWQ5Y2JmZWQ2Y2I2MDQwNmJjODMuLmMyMDVmY2U3YTgwMWE2Yjg2ZmEz
MGQ2NGFjOTMxY2E4OGQzMGM3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDEt
MDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHN1cHBvcnQgZm9yIFUyRiBh
dXRoZW50aWNhdG9ycywgYW5kIGVuYWJsZXMgaXQgZm9yIGhpZCBkZXZpY2VzLgorICAgICAgICBJ
dCBmb2xsb3dzIHRoZSBDVEFQIHNwZWMgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiBj
b21tYW5kcyBhbmQgcmV0dXJuIHRoZSByZXNwb25zZXM6CisgICAgICAgIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFi
aWxpdHkKKyAgICAgICAgTW9zdCBvZiB0aGUgcGFydHMgYXJlIGRvbmUgYmVmb3JlIHRoaXMgcGF0
Y2gsIHRoaXMgcGF0Y2ggZm9jdWVzIG9uOiA3LjIuMiBhbmQgNy4zLjIuCisKKyAgICAgICAgQmVz
aWRlcyBpbXBsZW1lbnRpbmcgdGhlIFUyZkhpZEF1dGhlbnRpY2F0b3IsIHRoaXMgcGF0Y2ggYWxz
bzoKKyAgICAgICAgMS4gcmVuYW1lcyBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkbyB0
byBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkbyB0byBiZSBjb25zaXN0ZW50CisgICAg
ICAgIHdpdGggb3RoZXJzOworICAgICAgICAyLiBhZGRzIHN1cHBvcnQgaW4gdGhlIG1vY2tpbmcg
ZW52aXJvbm1lbnQgZm9yIFUyRiBhdXRoZW50aWNhdG9ycy4gSXQgaXMgZG9uZSBieSBleHRlbmRp
bmcKKyAgICAgICAgdGhlIHN0YWdlcyBpbiBNb2NrSGlkQ29ubmVjdGlvbiBmcm9tIDQgdG8gaW5k
ZWZpbml0ZSBhcyBtdWx0aS1yb3VuZCBjb21tdW5pY2F0aW9ucyBhcmUgZXhwZWN0ZWQKKyAgICAg
ICAgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiByZXF1ZXN0cy4KKworICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmNv
bnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0
YXBIaWRBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50
aWNhdG9yLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpD
dGFwSGlkRHJpdmVyOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6fldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6
Oldvcmtlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYktpdDo6
Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJpdmVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuaC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL1UyZkhpZEF1
dGhlbnRpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGlj
YXRvcjo6VTJmSGlkQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVu
dGljYXRvcjo6Y2hlY2tFeGNsdWRlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Omlzc3VlUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRo
ZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlQ2hlY2tPbmx5
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFu
ZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRv
ci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnBhcnNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24gZnJvbSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCAxNjA2YWIwZDEzNDg4YThhMDhlNWViMzA0YWRi
NjMwZDM0MzVlMGM5Li4yMWJhNjA5MjQzZmIwZDFlMzU5NmUzOWM5MzY3MTEzYTZkNWI4ZGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtNTQsNiArNTQsOCBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGFwcGxpYwogCiAgICAgYXBkdTo6QXBkdUNvbW1hbmQgY29tbWFuZDsKICAgICBjb21t
YW5kLnNldElucyhzdGF0aWNfY2FzdDx1aW50OF90PihVMmZBcGR1SW5zdHJ1Y3Rpb246OmtSZWdp
c3RlcikpOworICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0ZXN0IG9mIHVzZXIgcHJlc2VuY2Ug
ZXZlbiB0aG91Z2ggdGhlIHNwZWMgZG9lc24ndCBzcGVjaWZ5IGl0LgorICAgIGNvbW1hbmQuc2V0
UDEoa1AxRW5mb3JjZVVzZXJQcmVzZW5jZUFuZFNpZ24pOwogICAgIGNvbW1hbmQuc2V0RGF0YShX
VEZNb3ZlKGRhdGEpKTsKICAgICBjb21tYW5kLnNldFJlc3BvbnNlTGVuZ3RoKGFwZHU6OkFwZHVD
b21tYW5kOjprQXBkdU1heFJlc3BvbnNlTGVuZ3RoKTsKICAgICByZXR1cm4gY29tbWFuZC5nZXRF
bmNvZGVkQ29tbWFuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggYzQ1YTE3MTE3
OTkwMjEzNTZiYTc4NWNlZjE2YzI4YTkxYTMwMWJlMC4uY2I0Njc4MTY4YjRiODJkMWU0YWU3ZTBh
NzdjZDFhMjU0YTg3MzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC0xNzMsNyAr
MTczLDcgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZSZWdpc3Rl
clJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY28KICAgICByZXR1cm4gUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGEgeyBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNyZWRlbnRpYWxJZC5kYXRhKCksIGNy
ZWRlbnRpYWxJZC5zaXplKCkpLCB0cnVlLCBudWxscHRyLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF0
dGVzdGF0aW9uT2JqZWN0LmRhdGEoKSwgYXR0ZXN0YXRpb25PYmplY3Quc2l6ZSgpKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogfQogCi1PcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFs
RGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRh
KQorT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZTaWduUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKQogewogICAgIGlmIChrZXlIYW5kbGUuaXNFbXB0
eSgpIHx8IHUyZkRhdGEuc2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBkNmE0MWY4NzNkOGJiYzRm
OWE1YTBmMDdlMzBkNjdmMjdkZjJhYmNjLi40YzZkMjRlNWI0ZjdlMjJhNjZiMzM0ZjVmODczNGY5
ZTRmMTQ4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVh
ZFUyZlJlZ2lzdGVyUmVzcG9ucwogCiAvLyBDb252ZXJ0cyBhIFUyRiBhdXRoZW50aWNhdGlvbiBy
ZXNwb25zZSB0byBXZWJBdXRoTiBnZXRBc3NlcnRpb24gcmVzcG9uc2UuCiAvLyBodHRwczovL2Zp
ZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLWlkLTIwMTgwMjI3L2ZpZG8tY2xpZW50LXRv
LWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1pZC0yMDE4MDIyNy5odG1sI3UyZi1hdXRoZW50
aWNhdG9yR2V0QXNzZXJ0aW9uLWludGVyb3BlcmFiaWxpdHkKLVdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkRnJvbVUyZlNpZ25SZXNw
b25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxl
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpOworV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZTaWduUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCBlMGEzMjgyZTAwOTJkOTdjZTM1ZDY2NDZiNDMzMWI4Y2ExMWY0OGUwLi40
OGIxZDMxMGY4NzVmNDM5OWE0NjM3ZWE1OTRlYWVkYTBlNzg3NjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTM4NCw2ICszODQsMTAgQEAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cAogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAogVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAogCitV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAK
K1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuY3BwCitVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmNwcAorCiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5j
cHAKIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKaW5kZXggYTNlMzQ2ODI1NmJiNjcwMDgyOTVmYzEzZjA3MmRmMzc5YjcwMDEy
Yy4uZmI1NDkzMzEzM2YxYWE3YzFkNzMxZmI2MWY0ZDc5OGE4MTQ4MDQwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCkBAIC02MjcsOCArNjI3LDExIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSCiAgICAgICAg
IGlmIChlcnJvciA9PSAid3Jvbmctbm9uY2UiKQogICAgICAgICAgICAgaGlkLmVycm9yID0gTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpFcnJvcjo6V3JvbmdOb25jZTsK
IAotICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCi0gICAgICAgICAg
ICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT5zdHJp
bmcoKTsKKyAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLQXJy
YXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdldCgpKSkpCisgICAgICAg
ICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBheWxvYWRCYXNlNjQpLT50
b1N0cmluZ1ZlY3RvcigpOworCisgICAgICAgIGlmIChhdXRvIGlzVTJmID0gc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSkuZ2V0KCkpKSkKKyAgICAgICAg
ICAgIGhpZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZhbHVlKGlzVTJmKTsKIAogICAgICAgICBpZiAo
YXV0byBrZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdl
dEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJLZWVwQWxpdmUiKSkuZ2V0KCkpKSkKICAgICAgICAgICAgIGhpZC5rZWVwQWxpdmUgPSBXS0Jv
b2xlYW5HZXRWYWx1ZShrZWVwQWxpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXgg
MjM3YjFiNDYwNzI4MTE5MTMyZGY3OTgzOWNhNjc2NDUzNWQ2M2VlZi4uZDhlNGU0MWFjMjZmODdi
NTUwZWQxODFmNDYwMzFkMjBmZDI0MDc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBA
IC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJDdGFwSGlkQXV0aGVudGljYXRvci5oIgogI2ltcG9y
dCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVjdGlvbi5oIgorI2ltcG9ydCAi
VTJmSGlkQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29u
dmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KQEAgLTEwOCw3ICsxMDksNyBAQCB2b2lk
IEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHZvaWQgSGlk
U2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8oQ3RhcEhpZERyaXZlciogcHRy
LCBWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Rh
cEhpZERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2UocHRyKTsKLSAgICBpZiAoIWRyaXZl
ciB8fCAhb2JzZXJ2ZXIoKSkKKyAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSB8fCByZXNw
b25zZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW5mbyA9IHJlYWRD
VEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKQEAgLTExOCw2ICsxMTksOCBAQCB2b2lkIEhp
ZFNlcnZpY2U6OmNvbnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKEN0YXBIaWREcml2ZXIqIHB0
ciwgVmVjdG9yPHVpbnQ4XwogICAgIH0KICAgICAvLyBGSVhNRSgxOTE1MzUpOiBTdXBwb3J0IFUy
RiBhdXRoZW50aWNhdG9ycy4KICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgY3RhcCBn
ZXQgaW5mbyByZXNwb25zZS4iKTsKKyAgICBkcml2ZXItPnNldFByb3RvY29sKFByb3RvY29sVmVy
c2lvbjo6a1UyZik7CisgICAgb2JzZXJ2ZXIoKS0+YXV0aGVudGljYXRvckFkZGVkKFUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRyaXZlcikpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFiNDJhZjY2ZjkxMDc5YTE5N2Q1YzNkM2JjODcyYmUyYTM1NzcxMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9G
aWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN0YXBIaWRBdXRoZW50aWNhdG9yLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJD
dGFwSGlkRHJpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgZmlk
bzsKKworQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0YXBIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5p
cXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXZlciwgQXV0aGVudGljYXRvckdldEluZm9SZXNw
b25zZSYmIGluZm8pCisgICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCisgICAgLCBtX2lu
Zm8oV1RGTW92ZShpbmZvKSkKK3sKKyAgICAvLyBGSVhNRSgxOTE1MjApOiBXZSBuZWVkIGEgd2F5
IHRvIGNvbnZlcnQgc3RkOjp1bmlxdWVfcHRyIHRvIFVuaXF1ZVJlZi4KKyAgICBBU1NFUlQobV9k
cml2ZXIpOworfQorCit2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgp
Cit7CisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19FUlJPUigiU3RhcnQgbWFraW5nIGNy
ZWRlbnRpYWxzLiIpOworICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVx
dWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRp
b25zLCBtX2luZm8ub3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Cisg
ICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVz
cG9uc2VSZWNlaXZlZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9KTsKK30KKwordm9pZCBDdGFwSGlk
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAoreworICAgIGF1dG8gcmVzcG9uc2UgPSBy
ZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0YSk7CisgICAgaWYgKCFyZXNwb25zZSkg
eworICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBt
YWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBkYXRhLnNp
emUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworfQorCit2b2lkIEN0YXBIaWRB
dXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQoreworICAgIC8vIEZJWE1FKDE5MjA2MSkKKyAg
ICBMT0dfRVJST1IoIlN0YXJ0IGdldHRpbmcgYXNzZXJ0aW9ucy4iKTsKKyAgICBhdXRvIGNib3JD
bWQgPSBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwg
cmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucywgbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZp
Y2F0aW9uQXZhaWxhYmlsaXR5KCkpOworICAgIG1fZHJpdmVyLT50cmFuc2FjdChXVEZNb3ZlKGNi
b3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0YSkpOworICAg
IH0pOworfQorCit2b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlv
bkFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAorewor
ICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEpOwor
ICAgIGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0
YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJy
b3IgY29kZTogIiwgZGF0YS5zaXplKCkgPT0gMSA/IGRhdGFbMF0gOiAtMSkgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgqcmVzcG9uc2UpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhO
KSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmRmNjI3OTUyNTY5MWRlYzVmYThkMzU2ZTBhZTE5ZjJiZjIwN2I2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBDdGFwSGlkRHJpdmVyOworCitjbGFzcyBDdGFwSGlkQXV0aGVudGljYXRvciBmaW5hbCA6IHB1
YmxpYyBBdXRoZW50aWNhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEN0YXBIaWRBdXRo
ZW50aWNhdG9yPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdmVy
LCBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN0YXBIaWRBdXRoZW50aWNhdG9yKFdURk1vdmUoZHJp
dmVyKSwgV1RGTW92ZShpbmZvKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBD
dGFwSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJiwgZmlk
bzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmKTsKKworICAgIHZvaWQgbWFrZUNyZWRl
bnRpYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0OworICAgIHZvaWQgZ2V0QXNzZXJ0
aW9uKCkgZmluYWw7CisgICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3RhcEhpZERyaXZlcj4gbV9kcml2ZXI7CisgICAgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9S
ZXNwb25zZSBtX2luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRE
cml2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmOWVmOTgzOTRmZWU0Nzk1M2Y5YzQwYjhhMjViOWI0Yjc3
ZmRlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuY3BwCkBAIC0wLDAgKzEsMjI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIK
KworI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgPFdl
YkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCitDdGFwSGlkRHJpdmVyOjpXb3JrZXI6Oldvcmtl
cihVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV9jb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCit7CisgICAgbV9jb25uZWN0aW9uLT5pbml0aWFsaXpl
KCk7Cit9CisKK0N0YXBIaWREcml2ZXI6Oldvcmtlcjo6fldvcmtlcigpCit7CisgICAgbV9jb25u
ZWN0aW9uLT50ZXJtaW5hdGUoKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnRy
YW5zYWN0KGZpZG86OkZpZG9IaWRNZXNzYWdlJiYgcmVxdWVzdE1lc3NhZ2UsIE1lc3NhZ2VDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJZGxlKTsK
KyAgICBtX3N0YXRlID0gU3RhdGU6OldyaXRlOworICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBXVEZN
b3ZlKHJlcXVlc3RNZXNzYWdlKTsKKyAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOworICAg
IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKworICAgIC8vIEhpZENvbm5lY3Rpb24g
Y291bGQgaG9sZCBkYXRhIGZyb20gb3RoZXIgYXBwbGljYXRpb25zLCBhbmQgdGhlcmVvZm9yZSBp
bnZhbGlkYXRlIGl0IGJlZm9yZSBlYWNoIHRyYW5zYWN0aW9uLgorICAgIG1fY29ubmVjdGlvbi0+
aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1fcmVxdWVzdE1lc3Nh
Z2UtPnBvcE5leHRQYWNrZXQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShIaWRD
b25uZWN0aW9uOjpEYXRhU2VudCBzZW50KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgd2Vha1RoaXMtPndyaXRlKHNlbnQpOworICAgIH0pOworfQorCit2b2lkIEN0
YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUoSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkK
K3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6V3JpdGUpOworICAgIC8vIEZJWE1FKDE5
MjA2MSkKKyAgICBMT0dfRVJST1IoIlN0YXJ0IHdyaXRpbmcgZGF0YS4iKTsKKyAgICBpZiAoc2Vu
dCAhPSBIaWRDb25uZWN0aW9uOjpEYXRhU2VudDo6WWVzKSB7CisgICAgICAgIHJldHVybk1lc3Nh
Z2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9y
ZXF1ZXN0TWVzc2FnZS0+bnVtUGFja2V0cygpKSB7CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UmVhZDsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNr
KFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB3ZWFrVGhpcy0+cmVhZChkYXRhKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQobV9yZXF1ZXN0TWVzc2FnZS0+cG9wTmV4dFBh
Y2tldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKEhpZENvbm5lY3Rpb246OkRh
dGFTZW50IHNlbnQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3
ZWFrVGhpcy0+d3JpdGUoc2VudCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6
V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZCk7CisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19F
UlJPUigiU3RhcnQgcmVhZGluZyBkYXRhLiIpOworICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2Up
IHsKKyAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlRnJv
bVNlcmlhbGl6ZWREYXRhKGRhdGEpOworICAgICAgICAvLyBUaGUgZmlyc3QgZmV3IHJlcG9ydHMg
Y291bGQgYmUgZm9yIG90aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRoZXJlZm9yZSBpZ25vcmUgdGhv
c2UuCisgICAgICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2UgfHwgbV9yZXNwb25zZU1lc3NhZ2Ut
PmNoYW5uZWxJZCgpICE9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpKSB7CisgICAgICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlkIGluaXQgcGFja2V0OiAlcyIsIG1f
cmVzcG9uc2VNZXNzYWdlID8gIndyb25nIGNoYW5uZWwgaWQuIiA6ICJiYWQgZGF0YS4iKTsKKyAg
ICAgICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdl
LT5hZGRDb250aW51YXRpb25QYWNrZXQoZGF0YSkpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgcGFyc2UgYSBoaWQgY29udGludWF0aW9uIHBhY2tldC4iKTsKKyAgICAgICAgICAg
IHJldHVybk1lc3NhZ2UoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChtX3Jlc3BvbnNlTWVzc2FnZS0+bWVzc2FnZUNvbXBsZXRl
KCkpIHsKKyAgICAgICAgLy8gQSBLZWVwQWxpdmUgY21kIGNvdWxkIGJlIHNlbnQgYmV0d2VlbiBh
IHJlcXVlc3QgYW5kIGEgcmVzcG9uc2UgdG8gaW5kaWNhdGUgdGhhdAorICAgICAgICAvLyB0aGUg
YXV0aGVudGljYXRvciBpcyB3YWl0aW5nIGZvciB1c2VyIGNvbnNlbnQuIEtlZXAgbGlzdGVuaW5n
IGZvciB0aGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChtX3Jlc3BvbnNlTWVzc2FnZS0+Y21kKCkg
PT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmUpIHsKKyAgICAgICAgICAgIG1fcmVz
cG9uc2VNZXNzYWdlLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuTWVzc2FnZShXVEZNb3ZlKG1fcmVzcG9uc2VNZXNzYWdlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5N
ZXNzYWdlKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAg
Ly8gRklYTUUoMTkyMDYxKQorICAgIExPR19FUlJPUigiU3RhcnQgcmV0dXJuaW5nIGRhdGEuIik7
CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3Rl
ckRhdGFSZWNlaXZlZENhbGxiYWNrKCk7CisgICAgbV9jYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2Up
KTsKK30KKworQ3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcihVbmlxdWVSZWY8SGlkQ29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uKQorICAgIDogbV93b3JrZXIobWFrZVVuaXF1ZVJlZjxXb3JrZXI+
KFdURk1vdmUoY29ubmVjdGlvbikpKQorICAgICwgbV9ub25jZShrSGlkSW5pdE5vbmNlTGVuZ3Ro
KQoreworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6SWRsZSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWw7
CisgICAgbV9jaGFubmVsSWQgPSBrSGlkQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICBtX3JlcXVlc3RE
YXRhID0gV1RGTW92ZShkYXRhKTsKKyAgICBtX3Jlc3BvbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKKworICAgIC8vIEFsbG9jYXRlIGEgY2hhbm5lbC4KKyAgICAvLyBGSVhNRSgxOTIw
NjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCBhbGxvY2F0aW5nIGEgY2hhbm5lbC4iKTsKKyAgICBB
U1NFUlQobV9ub25jZS5zaXplKCkgPT0ga0hpZEluaXROb25jZUxlbmd0aCk7CisgICAgY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMobV9ub25jZS5kYXRhKCksIG1fbm9uY2Uuc2l6ZSgpKTsK
KyAgICBhdXRvIGluaXRDb21tYW5kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBtX25vbmNlKTsKKyAgICBBU1NFUlQoaW5p
dENvbW1hbmQpOworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCppbml0Q29tbWFuZCks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+
JiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3
ZWFrVGhpcy0+Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoV1RGTW92ZShyZXNwb25zZSkp
OworICAgIH0pOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJDaGFubmVs
QWxsb2NhdGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbCk7CisgICAgaWYgKCFtZXNzYWdl
KSB7CisgICAgICAgIHJldHVyblJlc3BvbnNlKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKG1lc3NhZ2UtPmNoYW5uZWxJZCgpID09IG1fY2hhbm5lbElkKTsKKworICAg
IGF1dG8gcGF5bG9hZCA9IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7CisgICAgQVNTRVJU
KHBheWxvYWQuc2l6ZSgpID09IGtIaWRJbml0UmVzcG9uc2VTaXplKTsKKyAgICAvLyBSZXN0YXJ0
IHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgbmV4dCBydW4gbG9vcCB3aGVuIG5vbmNlIG1pc21hdGNo
ZXMuCisgICAgaWYgKG1lbWNtcChwYXlsb2FkLmRhdGEoKSwgbV9ub25jZS5kYXRhKCksIG1fbm9u
Y2Uuc2l6ZSgpKSkgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGRh
dGEgPSBXVEZNb3ZlKG1fcmVxdWVzdERhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUobV9yZXNwb25z
ZUNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPnRyYW5zYWN0KFdURk1v
dmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWR5OworICAgIGF1dG8gaW5kZXgg
PSBrSGlkSW5pdE5vbmNlTGVuZ3RoOworICAgIG1fY2hhbm5lbElkID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDI0OworICAgIG1fY2hhbm5lbElkIHw9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAxNjsKKyAgICBtX2NoYW5uZWxJ
ZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgODsKKyAgICBt
X2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleF0pOworICAg
IC8vIEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXNldCBvZiB0aGUgcGF5bG9hZC4KKyAgICAv
LyBGSVhNRSgxOTIwNjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCBzZW5kaW5nIHRoZSByZXF1ZXN0
LiIpOworICAgIGF1dG8gY21kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJZCwg
bV9wcm90b2NvbCA9PSBQcm90b2NvbFZlcnNpb246OmtDdGFwID8gRmlkb0hpZERldmljZUNvbW1h
bmQ6OmtDYm9yIDogRmlkb0hpZERldmljZUNvbW1hbmQ6OmtNc2csIG1fcmVxdWVzdERhdGEpOwor
ICAgIEFTU0VSVChjbWQpOworICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYm
IHJlc3BvbnNlKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vh
a1RoaXMtPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUocmVzcG9uc2UpKTsK
KyAgICB9KTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VS
ZWNlaXZlZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZWFkeSk7CisgICAgQVNTRVJUKCFtZXNzYWdlIHx8
IG1lc3NhZ2UtPmNoYW5uZWxJZCgpID09IG1fY2hhbm5lbElkKTsKKyAgICAvLyBGSVhNRSgxOTIw
NjEpCisgICAgTE9HX0VSUk9SKCJTdGFydCByZXR1cm5pbmcgdGhlIHJlc3BvbnNlLiIpOworICAg
IHJldHVyblJlc3BvbnNlKG1lc3NhZ2UgPyBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpIDog
VmVjdG9yPHVpbnQ4X3Q+KCkpOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6OnJldHVyblJlc3Bv
bnNlKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKQoreworICAgIC8vIFJlc2V0IHN0YXRlIGJl
Zm9yZSBjYWxsaW5nIHRoZSByZXNwb25zZSBjYWxsYmFjayB0byBhdm9pZCBiZWluZyBkZWxldGVk
LgorICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKKyAgICBtX3Jlc3BvbnNlQ2FsbGJhY2soV1RG
TW92ZShyZXNwb25zZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJp
dmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGZiNTA0ZDkxZTk3ODM3MGIwZjZkOTQyODE4Y2QxOTg3OTc4MjNj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvQ29u
c3RhbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGUgZm9s
bG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgSElEIHByb3RvY29sOgorLy8gaHR0cHM6Ly9maWRv
YWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1h
dXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKKy8vIEZTTTog
SWRsZSA9PiBBbGxvY2F0ZUNoYW5uZWwgPT4gUmVhZHkKK2NsYXNzIEN0YXBIaWREcml2ZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcEhpZERyaXZlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN0YXBIaWREcml2ZXIpOworcHVi
bGljOgorICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZlY3Rvcjx1
aW50OF90PiYmKT47CisKKyAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CisgICAgICAg
IElkbGUsCisgICAgICAgIEFsbG9jYXRlQ2hhbm5lbCwKKyAgICAgICAgUmVhZHksCisgICAgICAg
IC8vIEZJWE1FKDE5MTUyOCkKKyAgICAgICAgQnVzeQorICAgIH07CisKKyAgICBleHBsaWNpdCBD
dGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKKworICAgIHZvaWQgc2V0
UHJvdG9jb2woZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29sKSB7IG1fcHJvdG9jb2wgPSBw
cm90b2NvbDsgfQorICAgIHZvaWQgdHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVz
cG9uc2VDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBl
ciB0aGF0IG1haW50YWlucyB0aGUgdHJhbnNhY3Rpb24uCisgICAgLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhcmJpdHJhdGlvbgorICAg
IC8vIEZTTTogSWRsZSA9PiBXcml0ZSA9PiBSZWFkLgorICAgIGNsYXNzIFdvcmtlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXb3JrZXI+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlcik7CisgICAgcHVibGljOgor
ICAgICAgICB1c2luZyBNZXNzYWdlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPGZp
ZG86OkZpZG9IaWRNZXNzYWdlPiYmKT47CisKKyAgICAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVp
bnQ4X3QgIHsKKyAgICAgICAgICAgIElkbGUsCisgICAgICAgICAgICBXcml0ZSwKKyAgICAgICAg
ICAgIFJlYWQKKyAgICAgICAgfTsKKworICAgICAgICBleHBsaWNpdCBXb3JrZXIoVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+JiYpOworICAgICAgICB+V29ya2VyKCk7CisKKyAgICAgICAgdm9pZCB0
cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmLCBNZXNzYWdlQ2FsbGJhY2smJik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB2b2lkIHdyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50KTsK
KyAgICAgICAgdm9pZCByZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgICAgICB2b2lk
IHJldHVybk1lc3NhZ2UoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworCisgICAg
ICAgIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6SWRsZSB9OworICAgICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlk
TWVzc2FnZT4gbV9yZXF1ZXN0TWVzc2FnZTsKKyAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hp
ZE1lc3NhZ2U+IG1fcmVzcG9uc2VNZXNzYWdlOworICAgICAgICBNZXNzYWdlQ2FsbGJhY2sgbV9j
YWxsYmFjazsKKyAgICB9OworCisgICAgdm9pZCBjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRl
ZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7CisgICAgdm9pZCBjb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7Cisg
ICAgdm9pZCByZXR1cm5SZXNwb25zZShWZWN0b3I8dWludDhfdD4mJik7CisKKyAgICBVbmlxdWVS
ZWY8V29ya2VyPiBtX3dvcmtlcjsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsK
KyAgICB1aW50MzJfdCBtX2NoYW5uZWxJZCB7IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsIH07
CisgICAgLy8gT25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgIFZlY3Rvcjx1aW50OF90PiBtX3Jl
cXVlc3REYXRhOworICAgIFJlc3BvbnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOworICAg
IFZlY3Rvcjx1aW50OF90PiBtX25vbmNlOworICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBtX3By
b3RvY29sIHsgZmlkbzo6UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9GaWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDQ3ZjQyZjYzYjM4YWVhZDUzZWU5YjU3YzQ1ZmIzYjI4ZWJmYjEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZI
aWRBdXRoZW50aWNhdG9yLmNwcApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVMmZIaWRBdXRoZW50aWNhdG9yLmgiCisKKyNpZiBF
TkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJDdGFwSGlkRHJp
dmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
TnVtYmVycy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIGFwZHU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworbmFtZXNw
YWNlIHsKK2NvbnN0IHVuc2lnbmVkIHJldHJ5VGltZU91dFZhbHVlTXMgPSAyMDA7Cit9CisKK1Uy
ZkhpZEF1dGhlbnRpY2F0b3I6OlUyZkhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0
YXBIaWREcml2ZXI+JiYgZHJpdmVyKQorICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIpKQor
ICAgICwgbV9yZXRyeVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlUyZkhpZEF1dGhlbnRp
Y2F0b3I6OnJldHJ5TGFzdENvbW1hbmQpCit7CisgICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVl
ZCBhIHdheSB0byBjb252ZXJ0IHN0ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCisgICAgQVNT
RVJUKG1fZHJpdmVyKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVu
dGlhbCgpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVx
dWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMpKSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1
ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIXJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX25leHRMaXN0SW5kZXgpOworICAgICAgICBjaGVj
a0V4Y2x1ZGVMaXN0KG1fbmV4dExpc3RJbmRleCsrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpc3N1ZVJlZ2lzdGVyQ29tbWFuZCgpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0
b3I6OmNoZWNrRXhjbHVkZUxpc3Qoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBy
ZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgpKSB7
CisgICAgICAgIGlzc3VlUmVnaXN0ZXJDb21tYW5kKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChyZXF1
ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLCByZXF1ZXN0RGF0
YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHNbaW5kZXhdKTsKKyAgICBBU1NF
UlQodTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFu
ZFR5cGU6OkNoZWNrT25seUNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6
Omlzc3VlUmVnaXN0ZXJDb21tYW5kKCkKK3sKKyAgICBhdXRvIHUyZkNtZCA9IGNvbnZlcnRUb1Uy
ZlJlZ2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRp
b25PcHRpb25zKTsKKyAgICBBU1NFUlQodTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RG
TW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlJlZ2lzdGVyQ29tbWFuZCk7Cit9CisKK3ZvaWQg
VTJmSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAoIWlzQ29udmVy
dGlibGVUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMpKSB7Cisg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwg
IkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIW1fbmV4dExpc3RJbmRleCk7CisgICAgaXNz
dWVTaWduQ29tbWFuZChtX25leHRMaXN0SW5kZXgrKyk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVu
dGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4
ID49IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5zaXplKCkp
IHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJv
ciwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBmb3Vu
ZCBpbiB0aGUgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhh
c2gsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9w
dGlvbnMuYWxsb3dDcmVkZW50aWFsc1tpbmRleF0uaWRWZWN0b3IpOworICAgIEFTU0VSVCh1MmZD
bWQpOworICAgIGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZDbWQpLCBDb21tYW5kVHlwZTo6
U2lnbkNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29t
bWFuZChWZWN0b3I8dWludDhfdD4mJiBjb21tYW5kLCBDb21tYW5kVHlwZSB0eXBlKQoreworICAg
IG1fbGFzdENvbW1hbmQgPSBXVEZNb3ZlKGNvbW1hbmQpOworICAgIG1fbGFzdENvbW1hbmRUeXBl
ID0gdHlwZTsKKyAgICBpc3N1ZUNvbW1hbmQobV9sYXN0Q29tbWFuZCwgbV9sYXN0Q29tbWFuZFR5
cGUpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNvbW1hbmQsIENvbW1hbmRUeXBlIHR5cGUpCit7CisgICAgbV9kcml2
ZXItPnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90Pihjb21tYW5kKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCB0eXBlXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5yZXNwb25zZVJlY2VpdmVkKFdURk1vdmUo
ZGF0YSksIHR5cGUpOworICAgIH0pOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OnJl
c3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UsIENvbW1hbmRUeXBlIHR5
cGUpCit7CisgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21N
ZXNzYWdlKHJlc3BvbnNlKTsKKyAgICBpZiAoIWFwZHVSZXNwb25zZSkgeworICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2Ug
dGhlIEFQRFUgcmVzcG9uc2UuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDb21tYW5kVHlwZTo6UmVnaXN0ZXJDb21tYW5kOgor
ICAgICAgICBjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZN
b3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ29tbWFuZFR5
cGU6OkNoZWNrT25seUNvbW1hbmQ6CisgICAgICAgIGNvbnRpbnVlQ2hlY2tPbmx5Q29tbWFuZEFm
dGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQ29tbWFuZFR5cGU6OkJvZ3VzQ29tbWFuZDoKKyAgICAgICAgY29udGlu
dWVCb2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3BvbnNl
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbW1hbmRUeXBlOjpTaWduQ29tbWFuZDoK
KyAgICAgICAgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3Zl
KCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lz
dGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9u
c2UpCit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFw
ZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogeworICAgICAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMu
cnAuaWQsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7Cisg
ICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAi
Q291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgq
cmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIEFwZHVSZXNwb25z
ZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CisgICAgICAgIC8vIFBvbGxp
bmcgaXMgcmVxdWlyZWQgZHVyaW5nIHRlc3Qgb2YgdXNlciBwcmVzZW5jZS4KKyAgICAgICAgbV9y
ZXRyeVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHJldHJ5VGlt
ZU91dFZhbHVlTXMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlVu
a25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpKSB9KTsKKyAgICB9Cit9CisKK3ZvaWQgVTJmSGlkQXV0
aGVudGljYXRvcjo6Y29udGludWVDaGVja09ubHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVk
KEFwZHVSZXNwb25zZSYmIGFwZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGFwZHVSZXNwb25z
ZS5zdGF0dXMoKSkgeworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9S
OgorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNfTk9UX1NBVElT
RklFRDoKKyAgICAgICAgaXNzdWVOZXdDb21tYW5kKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0
aW9uQ29tbWFuZCgpLCBDb21tYW5kVHlwZTo6Qm9ndXNDb21tYW5kKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGNoZWNrRXhjbHVkZUxpc3QobV9uZXh0TGlzdEluZGV4
KyspOworICAgIH0KK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUJvZ3Vz
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9uc2Up
Cit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFwZHVS
ZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjoKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwg
bWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1
dGhlbnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcGR1UmVzcG9u
c2U6OlN0YXR1czo6U1dfQ09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgorICAgICAgICAvLyBQb2xs
aW5nIGlzIHJlcXVpcmVkIGR1cmluZyB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UuCisgICAgICAgIG1f
cmV0cnlUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhyZXRyeVRp
bWVPdXRWYWx1ZU1zKSk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJV
bmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYXBkdVJlc3BvbnNlLnN0YXR1cygpKSkgfSk7CisgICAgfQorfQorCit2b2lkIFUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBk
dVJlc3BvbnNlJiYgYXBkdVJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoYXBkdVJlc3BvbnNlLnN0
YXR1cygpKSB7CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJST1I6IHsK
KyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdERhdGEo
KS5yZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLmFsbG93
Q3JlZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5k
YXRhKCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CisgICAgICAgICAgICByZWNlaXZlUmVz
cG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUy
RiBzaWduIHJlc3BvbnNlLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNf
Tk9UX1NBVElTRklFRDoKKyAgICAgICAgLy8gUG9sbGluZyBpcyByZXF1aXJlZCBkdXJpbmcgdGVz
dCBvZiB1c2VyIHByZXNlbmNlLgorICAgICAgICBtX3JldHJ5VGltZXIuc3RhcnRPbmVTaG90KFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMocmV0cnlUaW1lT3V0VmFsdWVNcykpOworICAgICAgICBy
ZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgaXNzdWVTaWduQ29tbWFuZChtX25leHRMaXN0
SW5kZXgrKyk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRv
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZI
aWRBdXRoZW50aWNhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2ZjE5ZmRkNjg1OTMyNjQwOGU5ZWY2NTFj
YzFjMWNjNzUyN2I3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oCkBAIC0wLDAgKzEs
ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKworbmFtZXNw
YWNlIGFwZHUgeworY2xhc3MgQXBkdVJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgQ3RhcEhpZERyaXZlcjsKKworY2xhc3MgVTJmSGlkQXV0aGVudGljYXRvciBmaW5h
bCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFUyZkhp
ZEF1dGhlbnRpY2F0b3I+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJiBk
cml2ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVMmZIaWRBdXRoZW50
aWNhdG9yKFdURk1vdmUoZHJpdmVyKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBVMmZIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmKTsK
KworICAgIHZvaWQgbWFrZUNyZWRlbnRpYWwoKSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrRXhjbHVk
ZUxpc3Qoc2l6ZV90IGluZGV4KTsKKyAgICB2b2lkIGlzc3VlUmVnaXN0ZXJDb21tYW5kKCk7Cisg
ICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKKyAgICB2b2lkIGlzc3VlU2lnbkNvbW1hbmQo
c2l6ZV90IGluZGV4KTsKKworICAgIGVudW0gY2xhc3MgQ29tbWFuZFR5cGUgOiB1aW50OF90IHsK
KyAgICAgICAgUmVnaXN0ZXJDb21tYW5kLAorICAgICAgICBDaGVja09ubHlDb21tYW5kLAorICAg
ICAgICBCb2d1c0NvbW1hbmQsCisgICAgICAgIFNpZ25Db21tYW5kCisgICAgfTsKKyAgICB2b2lk
IGlzc3VlTmV3Q29tbWFuZChWZWN0b3I8dWludDhfdD4mJiBjb21tYW5kLCBDb21tYW5kVHlwZSk7
CisgICAgdm9pZCByZXRyeUxhc3RDb21tYW5kKCkgeyBpc3N1ZUNvbW1hbmQobV9sYXN0Q29tbWFu
ZCwgbV9sYXN0Q29tbWFuZFR5cGUpOyB9CisgICAgdm9pZCBpc3N1ZUNvbW1hbmQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjb21tYW5kLCBDb21tYW5kVHlwZSk7CisgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlLCBDb21tYW5kVHlwZSk7CisgICAgdm9p
ZCBjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1
UmVzcG9uc2UmJik7CisgICAgdm9pZCBjb250aW51ZUNoZWNrT25seUNvbW1hbmRBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOworICAgIHZvaWQgY29udGludWVCb2d1
c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOworICAg
IHZvaWQgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1
UmVzcG9uc2UmJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4gbV9kcml2
ZXI7CisgICAgUnVuTG9vcDo6VGltZXI8VTJmSGlkQXV0aGVudGljYXRvcj4gbV9yZXRyeVRpbWVy
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2xhc3RDb21tYW5kOworICAgIENvbW1hbmRUeXBlIG1f
bGFzdENvbW1hbmRUeXBlOworICAgIHNpemVfdCBtX25leHRMaXN0SW5kZXggeyAwIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5k
ZXggMGIxNzY5OWJkZGU5Nzg0YjRjNzg2M2Q5ZDdiZTkyNDU0NjVmMmE2NC4uZDg2YTNhNDcyZTZi
Yjc3MzkwZTM0MDFhNmNkZTgyYzY1M2E2ODQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKQEAgLTEyNyw0MyArMTI3LDQ4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rp
b246OnBhcnNlUmVxdWVzdCgpCiAgICAgICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6
OlN1YlN0YWdlOjpNc2cpCiAgICAgICAgICAgICBtX3N0YWdlID0gTW9jazo6U3RhZ2U6OlJlcXVl
c3Q7CiAgICAgfQotICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a0Nib3IpCisgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciB8fCBtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZykKICAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OlN1
YlN0YWdlOjpNc2c7CiAKLSAgICAvLyBTZXQgb3B0aW9ucy4KICAgICBpZiAobV9zdGFnZSA9PSBN
b2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cp
IHsKLSAgICAgICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkgPSBmYWxzZTsKLSAgICAgICAgbV9yZXF1
aXJlVXNlclZlcmlmaWNhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGF1dG8gcGF5bG9hZCA9IG1f
cmVxdWVzdE1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCk7Ci0gICAgICAgIEFTU0VSVChwYXls
b2FkLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gY21kID0gc3RhdGljX2Nhc3Q8Q3RhcFJlcXVlc3RD
b21tYW5kPihwYXlsb2FkWzBdKTsKLSAgICAgICAgcGF5bG9hZC5yZW1vdmUoMCk7Ci0gICAgICAg
IGF1dG8gcmVxdWVzdE1hcCA9IENCT1JSZWFkZXI6OnJlYWQocGF5bG9hZCk7Ci0gICAgICAgIEFT
U0VSVChyZXF1ZXN0TWFwKTsKLQotICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFu
ZDo6a0F1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCkgewotICAgICAgICAgICAgYXV0byBpdCA9
IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKEN0YXBNYWtlQ3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KLSAgICAgICAgICAgIGlmIChpdCAh
PSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9w
dGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGl0
ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkgPSBpdHItPnNlY29uZC5nZXRCb29sKCk7Ci0KLSAgICAg
ICAgICAgICAgICBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRp
b25NYXBLZXkpKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkK
LSAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vj
b25kLmdldEJvb2woKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGlzc3VlIGRpZmZlcmVudCBt
c2cgY21kIGZvciBDVEFQIGFuZCBVMkYuCisgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb24u
aGlkLT5pc1UyZiBeIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSAhPSBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a01zZykpOworCisgICAgICAgIC8vIFNldCBvcHRpb25zLgorICAgICAgICBpZiAobV9y
ZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yKSB7Cisg
ICAgICAgICAgICBtX3JlcXVpcmVSZXNpZGVudEtleSA9IGZhbHNlOworICAgICAgICAgICAgbV9y
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGZhbHNlOworCisgICAgICAgICAgICBhdXRvIHBheWxv
YWQgPSBtX3JlcXVlc3RNZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOworICAgICAgICAgICAg
QVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gY21kID0gc3RhdGljX2Nh
c3Q8Q3RhcFJlcXVlc3RDb21tYW5kPihwYXlsb2FkWzBdKTsKKyAgICAgICAgICAgIHBheWxvYWQu
cmVtb3ZlKDApOworICAgICAgICAgICAgYXV0byByZXF1ZXN0TWFwID0gQ0JPUlJlYWRlcjo6cmVh
ZChwYXlsb2FkKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0TWFwKTsKKworICAgICAgICAg
ICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yTWFrZUNyZWRl
bnRpYWwpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZmluZChDQk9SVmFsdWUoQ3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8g
RmluZCBvcHRpb25zLgorICAgICAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRN
YXAoKS5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+
c2Vjb25kLmdldE1hcCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9u
TWFwLmZpbmQoQ0JPUlZhbHVlKGtSZXNpZGVudEtleU1hcEtleSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVxdWlyZVJlc2lkZW50S2V5ID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworCisgICAgICAg
ICAgICAgICAgICAgIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNh
dGlvbk1hcEtleSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5l
bmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24g
PSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtB
dXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVz
dE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRp
b25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KLSAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0
TWFwLT5nZXRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9
IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25N
YXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9y
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAg
ICAgIGlmIChjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbikgeworICAgICAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5m
aW5kKENCT1JWYWx1ZShDdGFwR2V0QXNzZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmlu
ZCBvcHRpb25zLgorICAgICAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAo
KS5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vj
b25kLmdldE1hcCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5m
aW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNhdGlvbk1hcEtleSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjA3LDgg
KzIxMiwxMiBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAg
IGluZm9EYXRhLmluc2VydCgwLCBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9u
c2VDb2RlOjprU3VjY2VzcykpOyAvLyBQcmVwZW5kIHN0YXR1cyBjb2RlLgogICAgICAgICBpZiAo
c3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZpZ3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJv
cjo6V3JvbmdDaGFubmVsSWQpCiAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsIC0gMSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9y
LCBpbmZvRGF0YSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlk
TWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjpr
Q2JvciwgaW5mb0RhdGEpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLmhpZC0+aXNVMmYpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yLCBpbmZvRGF0YSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWVzc2Fn
ZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmlj
ZUNvbW1hbmQ6OmtFcnJvciwgeyBzdGF0aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9u
c2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlkQ29tbWFuZCkgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09
IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsKQEAgLTIyMyw5ICsyMzIsMTQgQEAgdm9pZCBNb2NrSGlk
Q29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRN
ZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yLCB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFw
MkVyclVuc3VwcG9ydGVkT3B0aW9uKSB9KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gcGF5bG9hZDsKLSAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gYmFzZTY0
RGVjb2RlKG1fY29uZmlndXJhdGlvbi5oaWQtPnBheWxvYWRCYXNlNjQsIHBheWxvYWQpOworICAg
ICAgICAgICAgQVNTRVJUKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0LmlzRW1w
dHkoKSk7CisgICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGJhc2U2NERlY29kZShtX2NvbmZpZ3Vy
YXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0WzBdLCBwYXlsb2FkKTsKKyAgICAgICAgICAgIG1fY29u
ZmlndXJhdGlvbi5oaWQtPnBheWxvYWRCYXNlNjQucmVtb3ZlKDApOwogICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1cyk7Ci0gICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hp
ZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a0Nib3IsIHBheWxvYWQpOworICAgICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5p
c1UyZikKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSht
X2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHBheWxvYWQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2Fn
ZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBw
YXlsb2FkKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5oCmluZGV4IGUwYmY4NmIyZmQxZTI2NWJmYzAyNzY4MTllOWViY2RjYzExMzM5NDguLjNk
Y2FiYzRiNWRjOTcwNTcwZmI1ZWMzZmY5MTM2OGJkNGViZmZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmgKQEAgLTM1LDExICszNSwxMyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIC8vIFRoZSBmb2xsb3dpbmcgYmFzaWNhbGx5IHNpbXVsYXRlcyBhbiBleHRlcm5hbCBI
SUQgdG9rZW4gdGhhdDoKLS8vICAgIDEuIE9ubHkgc3VwcG9ydHMgQ1RBUDIgcHJvdG9jb2wsCisv
LyAgICAxLiBTdXBwb3J0cyBvbmx5IG9uZSBwcm90b2NvbCwgZWl0aGVyIENUQVAyIG9yIFUyRi4K
IC8vICAgIDIuIERvZXNuJ3Qgc3VwcG9ydCByZXNpZGVudCBrZXlzLAogLy8gICAgMy4gRG9lc24n
dCBzdXBwb3J0IHVzZXIgdmVyaWZpY2F0aW9uLgotLy8gVGhlcmUgYXJlIGZvdXIgc3RhZ2VzIGZv
ciBlYWNoIFdlYkF1dGhOIHJlcXVlc3Q6CisvLyBUaGVyZSBhcmUgZm91ciBzdGFnZXMgZm9yIGVh
Y2ggQ1RBUCByZXF1ZXN0OgogLy8gRlNNOiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9PiBSZXF1
ZXN0OjpJbml0ID0+IFJlcXVlc3Q6Ok1zZworLy8gVGhlcmUgYXJlIGluZGVmaW5pdGUgc3RhZ2Vz
IGZvciBlYWNoIFUyRiByZXF1ZXN0OgorLy8gRlNNOiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9
PiBbUmVxdWVzdDo6SW5pdCA9PiBSZXF1ZXN0OjpNc2ddKwogLy8gQWNjb3JkaW5nIHRvIGRpZmZl
cmVudCBjb21iaW5hdGlvbnMgb2YgZXJyb3IgYW5kIHN0YWdlcywgZXJyb3Igd2lsbCBtYW5pZmVz
dCBkaWZmZXJlbnRseS4KIGNsYXNzIE1vY2tIaWRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPE1vY2tIaWRDb25uZWN0aW9uPiwgcHVibGljIEhpZENvbm5lY3Rpb24gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA3ODg2N2E1ZmM2NjZiOTdkYjkwNzAyOTRlNGVmOWJj
ZDBkODIyMzdjLi5iZTA4NzJmYmRmYjljYWM4Mjc4M2I1NDVmNTQ5OTZkNjRlZTc5Mzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaApAQCAtNjEsMTAgKzYxLDExIEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIFdyb25nTm9uY2UKICAgICAgICAgfTsKIAot
ICAgICAgICBTdHJpbmcgcGF5bG9hZEJhc2U2NDsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5
bG9hZEJhc2U2NDsKICAgICAgICAgU3RhZ2Ugc3RhZ2UgeyBTdGFnZTo6SW5mbyB9OwogICAgICAg
ICBTdWJTdGFnZSBzdWJTdGFnZSB7IFN1YlN0YWdlOjpJbml0IH07CiAgICAgICAgIEVycm9yIGVy
cm9yIHsgRXJyb3I6OlN1Y2Nlc3MgfTsKKyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBmYXN0RGF0YUFy
cml2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI0MmFmNjZmOTEwNzlhMTk3ZDVjM2QzYmM4NzJi
ZTJhMzU3NzEyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRB
dXRoZW50aWNhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3RhcEhpZEF1dGhlbnRpY2F0b3Iu
aCIKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUg
IkN0YXBIaWREcml2ZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlcXVlc3RDb252ZXJ0
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBm
aWRvOwotCi1DdGFwSGlkQXV0aGVudGljYXRvcjo6Q3RhcEhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1
bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdmVyLCBBdXRoZW50aWNhdG9yR2V0SW5mb1Jl
c3BvbnNlJiYgaW5mbykKLSAgICA6IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKLSAgICAsIG1f
aW5mbyhXVEZNb3ZlKGluZm8pKQotewotICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdlIG5lZWQgYSB3
YXkgdG8gY29udmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgotICAgIEFTU0VSVCht
X2RyaXZlcik7Ci19Ci0KLXZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KCkKLXsKLSAgICAvLyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9SKCJTdGFydCBtYWtpbmcg
Y3JlZGVudGlhbHMuIik7Ci0gICAgYXV0byBjYm9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbml0YWxS
ZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9w
dGlvbnMsIG1faW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSgpKTsK
LSAgICBtX2RyaXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7Ci0gICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0YSkpOwotICAgIH0pOwotfQotCi12b2lkIEN0YXBI
aWRBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Ci17Ci0gICAgYXV0byByZXNwb25zZSA9
IHJlYWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhKTsKLSAgICBpZiAoIXJlc3BvbnNl
KSB7Ci0gICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
IG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIGRhdGEu
c2l6ZSgpID09IDEgPyBkYXRhWzBdIDogLTEpIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7Ci19Ci0KLXZvaWQgQ3RhcEhp
ZEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCi17Ci0gICAgLy8gRklYTUUoMTkyMDYxKQot
ICAgIExPR19FUlJPUigiU3RhcnQgZ2V0dGluZyBhc3NlcnRpb25zLiIpOwotICAgIGF1dG8gY2Jv
ckNtZCA9IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNo
LCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLCBtX2luZm8ub3B0aW9ucygpLnVzZXJWZXJp
ZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Ci0gICAgbV9kcml2ZXItPnRyYW5zYWN0KFdURk1vdmUo
Y2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZShkYXRhKSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0Ci17
Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQR2V0QXNzZXJ0aW9uUmVzcG9uc2UoZGF0YSk7
Ci0gICAgaWYgKCFyZXNwb25zZSkgewotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25E
YXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFsIGVycm9yLiBF
cnJvciBjb2RlOiAiLCBkYXRhLnNpemUoKSA9PSAxID8gZGF0YVswXSA6IC0xKSB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0
b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRmNjI3OTUyNTY5MWRlYzVmYThk
MzU2ZTBhZTE5ZjJiZjIwN2I2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWRBdXRoZW50aWNhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFU
Rk9STShNQUMpCi0KLSNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBDdGFwSGlkRHJpdmVyOwotCi1jbGFzcyBDdGFwSGlkQXV0aGVudGljYXRvciBmaW5h
bCA6IHB1YmxpYyBBdXRoZW50aWNhdG9yIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEN0YXBI
aWRBdXRoZW50aWNhdG9yPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYg
ZHJpdmVyLCBmaWRvOjpBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlJiYgaW5mbykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN0YXBIaWRBdXRoZW50aWNhdG9yKFdURk1v
dmUoZHJpdmVyKSwgV1RGTW92ZShpbmZvKSkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBDdGFwSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4m
JiwgZmlkbzo6QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmKTsKLQotICAgIHZvaWQgbWFr
ZUNyZWRlbnRpYWwoKSBmaW5hbDsKLSAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRl
clJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0OwotICAgIHZvaWQgZ2V0
QXNzZXJ0aW9uKCkgZmluYWw7Ci0gICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJikgY29uc3Q7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3RhcEhpZERyaXZlcj4gbV9kcml2ZXI7Ci0gICAgZmlkbzo6QXV0aGVudGljYXRvckdl
dEluZm9SZXNwb25zZSBtX2luZm87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjI4NjIwMzJi
YzViNjRlMzA5Yzc0ZDc2ZDk4YzIwYjI1NjI3MmE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDdGFwSGlk
RHJpdmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgZmlkbzsKLQotQ3RhcEhpZERyaXZlcjo6V29y
a2VyOjpXb3JrZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6
IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotewotICAgIG1fY29ubmVjdGlvbi0+
aW5pdGlhbGl6ZSgpOwotfQotCi1DdGFwSGlkRHJpdmVyOjpXb3JrZXI6On5Xb3JrZXIoKQotewot
ICAgIG1fY29ubmVjdGlvbi0+dGVybWluYXRlKCk7Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6
V29ya2VyOjp0cmFuc2FjdChmaWRvOjpGaWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNzYWdlLCBN
ZXNzYWdlQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6SWRsZSk7Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpXcml0ZTsKLSAgICBtX3JlcXVlc3RNZXNz
YWdlID0gV1RGTW92ZShyZXF1ZXN0TWVzc2FnZSk7Ci0gICAgbV9yZXNwb25zZU1lc3NhZ2UucmVz
ZXQoKTsKLSAgICBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0KLSAgICAvLyBIaWRD
b25uZWN0aW9uIGNvdWxkIGhvbGQgZGF0YSBmcm9tIG90aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRo
ZXJlb2ZvcmUgaW52YWxpZGF0ZSBpdCBiZWZvcmUgZWFjaCB0cmFuc2FjdGlvbi4KLSAgICBtX2Nv
bm5lY3Rpb24tPmludmFsaWRhdGVDYWNoZSgpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChtX3Jl
cXVlc3RNZXNzYWdlLT5wb3BOZXh0UGFja2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT53cml0ZShzZW50KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFT
ZW50IHNlbnQpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OldyaXRlKTsKLSAgICAv
LyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9SKCJTdGFydCB3cml0aW5nIGRhdGEuIik7Ci0g
ICAgaWYgKHNlbnQgIT0gSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQ6OlllcykgewotICAgICAgICBy
ZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2UtPm51bVBhY2tldHMoKSkgewotICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlYWQ7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVnaXN0ZXJEYXRhUmVjZWl2
ZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgd2Vha1RoaXMtPnJlYWQoZGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKG1fcmVxdWVzdE1lc3NhZ2Ut
PnBvcE5leHRQYWNrZXQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShIaWRDb25u
ZWN0aW9uOjpEYXRhU2VudCBzZW50KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgd2Vha1RoaXMtPndyaXRlKHNlbnQpOwotICAgIH0pOwotfQotCi12b2lkIEN0YXBI
aWREcml2ZXI6Oldvcmtlcjo6cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCi17Ci0g
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWQpOwotICAgIC8vIEZJWE1FKDE5MjA2MSkK
LSAgICBMT0dfRVJST1IoIlN0YXJ0IHJlYWRpbmcgZGF0YS4iKTsKLSAgICBpZiAoIW1fcmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShkYXRhKTsKLSAgICAgICAgLy8gVGhlIGZpcnN0IGZl
dyByZXBvcnRzIGNvdWxkIGJlIGZvciBvdGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVyZWZvcmUg
aWdub3JlIHRob3NlLgotICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlIHx8IG1fcmVzcG9u
c2VNZXNzYWdlLT5jaGFubmVsSWQoKSAhPSBtX3JlcXVlc3RNZXNzYWdlLT5jaGFubmVsSWQoKSkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSBhIGhpZCBpbml0IHBhY2tl
dDogJXMiLCBtX3Jlc3BvbnNlTWVzc2FnZSA/ICJ3cm9uZyBjaGFubmVsIGlkLiIgOiAiYmFkIGRh
dGEuIik7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX3Jlc3Bv
bnNlTWVzc2FnZS0+YWRkQ29udGludWF0aW9uUGFja2V0KGRhdGEpKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlkIGNvbnRpbnVhdGlvbiBwYWNrZXQuIik7Ci0g
ICAgICAgICAgICByZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9wdCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9yZXNwb25zZU1lc3NhZ2UtPm1lc3Nh
Z2VDb21wbGV0ZSgpKSB7Ci0gICAgICAgIC8vIEEgS2VlcEFsaXZlIGNtZCBjb3VsZCBiZSBzZW50
IGJldHdlZW4gYSByZXF1ZXN0IGFuZCBhIHJlc3BvbnNlIHRvIGluZGljYXRlIHRoYXQKLSAgICAg
ICAgLy8gdGhlIGF1dGhlbnRpY2F0b3IgaXMgd2FpdGluZyBmb3IgdXNlciBjb25zZW50LiBLZWVw
IGxpc3RlbmluZyBmb3IgdGhlIHJlc3BvbnNlLgotICAgICAgICBpZiAobV9yZXNwb25zZU1lc3Nh
Z2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZlKSB7Ci0gICAgICAg
ICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5yZXNldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybk1lc3NhZ2UoV1RGTW92ZShtX3Jlc3BvbnNlTWVzc2FnZSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtl
cjo6cmV0dXJuTWVzc2FnZShPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdl
KQotewotICAgIC8vIEZJWE1FKDE5MjA2MSkKLSAgICBMT0dfRVJST1IoIlN0YXJ0IHJldHVybmlu
ZyBkYXRhLiIpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKLSAgICBtX2Nvbm5lY3Rpb24t
PnVucmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjaygpOwotICAgIG1fY2FsbGJhY2soV1RGTW92
ZShtZXNzYWdlKSk7Ci19Ci0KLUN0YXBIaWREcml2ZXI6OkN0YXBIaWREcml2ZXIoVW5pcXVlUmVm
PEhpZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IG1fd29ya2VyKG1ha2VVbmlxdWVS
ZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5lY3Rpb24pKSkKLSAgICAsIG1fbm9uY2Uoa0hpZEluaXRO
b25jZUxlbmd0aCkKLXsKLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb2Nh
dGVDaGFubmVsOwotICAgIG1fY2hhbm5lbElkID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7Ci0gICAg
bV9yZXF1ZXN0RGF0YSA9IFdURk1vdmUoZGF0YSk7Ci0gICAgbV9yZXNwb25zZUNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIGNoYW5uZWwuCi0gICAgLy8g
RklYTUUoMTkyMDYxKQotICAgIExPR19FUlJPUigiU3RhcnQgYWxsb2NhdGluZyBhIGNoYW5uZWwu
Iik7Ci0gICAgQVNTRVJUKG1fbm9uY2Uuc2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOwot
ICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKG1fbm9uY2UuZGF0YSgpLCBtX25vbmNl
LnNpemUoKSk7Ci0gICAgYXV0byBpbml0Q29tbWFuZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUo
bV9jaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgbV9ub25jZSk7Ci0gICAg
QVNTRVJUKGluaXRDb21tYW5kKTsKLSAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqaW5p
dENvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9I
aWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKFdURk1vdmUo
cmVzcG9uc2UpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFm
dGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQot
ewotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWwpOwotICAgIGlm
ICghbWVzc2FnZSkgewotICAgICAgICByZXR1cm5SZXNwb25zZSh7IH0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIEFTU0VSVChtZXNzYWdlLT5jaGFubmVsSWQoKSA9PSBtX2NoYW5uZWxJ
ZCk7Ci0KLSAgICBhdXRvIHBheWxvYWQgPSBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOwot
ICAgIEFTU0VSVChwYXlsb2FkLnNpemUoKSA9PSBrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7Ci0gICAg
Ly8gUmVzdGFydCB0aGUgdHJhbnNhY3Rpb24gaW4gdGhlIG5leHQgcnVuIGxvb3Agd2hlbiBub25j
ZSBtaXNtYXRjaGVzLgotICAgIGlmIChtZW1jbXAocGF5bG9hZC5kYXRhKCksIG1fbm9uY2UuZGF0
YSgpLCBtX25vbmNlLnNpemUoKSkpIHsKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCBkYXRhID0gV1RGTW92ZShtX3JlcXVlc3REYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KG1fcmVzcG9uc2VDYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT50cmFu
c2FjdChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkeTsKLSAgICBh
dXRvIGluZGV4ID0ga0hpZEluaXROb25jZUxlbmd0aDsKLSAgICBtX2NoYW5uZWxJZCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCAyNDsKLSAgICBtX2NoYW5uZWxJ
ZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgMTY7Ci0gICAg
bV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8
IDg7Ci0gICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5k
ZXhdKTsKLSAgICAvLyBGSVhNRSgxOTE1MzQpOiBDaGVjayB0aGUgcmVzZXQgb2YgdGhlIHBheWxv
YWQuCi0gICAgLy8gRklYTUUoMTkyMDYxKQotICAgIExPR19FUlJPUigiU3RhcnQgc2VuZGluZyB0
aGUgcmVxdWVzdC4iKTsKLSAgICBhdXRvIGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9j
aGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgbV9yZXF1ZXN0RGF0YSk7Ci0g
ICAgQVNTRVJUKGNtZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYg
cmVzcG9uc2UpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFr
VGhpcy0+Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZShyZXNwb25zZSkpOwot
ICAgIH0pOwotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJl
Y2VpdmVkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmIG1lc3NhZ2UpCi17Ci0gICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWR5KTsKLSAgICBBU1NFUlQoIW1lc3NhZ2UgfHwg
bWVzc2FnZS0+Y2hhbm5lbElkKCkgPT0gbV9jaGFubmVsSWQpOwotICAgIC8vIEZJWE1FKDE5MjA2
MSkKLSAgICBMT0dfRVJST1IoIlN0YXJ0IHJldHVybmluZyB0aGUgcmVzcG9uc2UuIik7Ci0gICAg
cmV0dXJuUmVzcG9uc2UobWVzc2FnZSA/IG1lc3NhZ2UtPmdldE1lc3NhZ2VQYXlsb2FkKCkgOiBW
ZWN0b3I8dWludDhfdD4oKSk7Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6cmV0dXJuUmVzcG9u
c2UoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpCi17Ci0gICAgLy8gUmVzZXQgc3RhdGUgYmVm
b3JlIGNhbGxpbmcgdGhlIHJlc3BvbnNlIGNhbGxiYWNrIHRvIGF2b2lkIGJlaW5nIGRlbGV0ZWQu
Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwotICAgIG1fcmVzcG9uc2VDYWxsYmFjayhXVEZN
b3ZlKHJlc3BvbnNlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwNTAyNjg5NGZlZmUxZTk1M2Uw
MzlkMGNjODhmMzQ2ZGI1YTQyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRv
L0N0YXBIaWREcml2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCi0KLSNpbmNsdWRlICJIaWRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWRv
Q29uc3RhbnRzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWRvSGlkTWVzc2FnZS5oPgotI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgot
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgdGhlIENUQVAgSElEIHByb3RvY29sOgotLy8gaHR0cHM6Ly9m
aWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10
by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCN1c2IKLS8vIEZT
TTogSWRsZSA9PiBBbGxvY2F0ZUNoYW5uZWwgPT4gUmVhZHkKLWNsYXNzIEN0YXBIaWREcml2ZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q3RhcEhpZERyaXZlcj4gewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN0YXBIaWREcml2ZXIpOwot
cHVibGljOgotICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjx1aW50OF90PiYmKT47Ci0KLSAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7Ci0gICAg
ICAgIElkbGUsCi0gICAgICAgIEFsbG9jYXRlQ2hhbm5lbCwKLSAgICAgICAgUmVhZHksCi0gICAg
ICAgIC8vIEZJWE1FKDE5MTUyOCkKLSAgICAgICAgQnVzeQotICAgIH07Ci0KLSAgICBleHBsaWNp
dCBDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKLQotICAgIHZvaWQg
dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKTsKLQot
cHJpdmF0ZToKLSAgICAvLyBXb3JrZXIgaXMgdGhlIGhlbHBlciB0aGF0IG1haW50YWlucyB0aGUg
dHJhbnNhY3Rpb24uCi0gICAgLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8t
djIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYy
LjAtcHMtMjAxNzA5MjcuaHRtbCNhcmJpdHJhdGlvbgotICAgIC8vIEZTTTogSWRsZSA9PiBXcml0
ZSA9PiBSZWFkLgotICAgIGNsYXNzIFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXb3Jr
ZXI+IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdvcmtlcik7Ci0gICAgcHVibGljOgotICAgICAgICB1c2luZyBNZXNzYWdl
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYm
KT47Ci0KLSAgICAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgIHsKLSAgICAgICAgICAg
IElkbGUsCi0gICAgICAgICAgICBXcml0ZSwKLSAgICAgICAgICAgIFJlYWQKLSAgICAgICAgfTsK
LQotICAgICAgICBleHBsaWNpdCBXb3JrZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYpOwot
ICAgICAgICB+V29ya2VyKCk7Ci0KLSAgICAgICAgdm9pZCB0cmFuc2FjdChmaWRvOjpGaWRvSGlk
TWVzc2FnZSYmLCBNZXNzYWdlQ2FsbGJhY2smJik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIHdyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50KTsKLSAgICAgICAgdm9pZCByZWFkKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpOwotICAgICAgICB2b2lkIHJldHVybk1lc3NhZ2UoT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOwotCi0gICAgICAgIFVuaXF1ZVJlZjxIaWRDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SWRs
ZSB9OwotICAgICAgICBPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4gbV9yZXF1ZXN0TWVz
c2FnZTsKLSAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVzcG9uc2VN
ZXNzYWdlOwotICAgICAgICBNZXNzYWdlQ2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICB9OwotCi0g
ICAgdm9pZCBjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxmaWRvOjpGaWRv
SGlkTWVzc2FnZT4mJik7Ci0gICAgdm9pZCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChP
cHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik7Ci0gICAgdm9pZCByZXR1cm5SZXNwb25z
ZShWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICBVbmlxdWVSZWY8V29ya2VyPiBtX3dvcmtlcjsK
LSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKLSAgICB1aW50MzJfdCBtX2NoYW5u
ZWxJZCB7IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsIH07Ci0gICAgLy8gT25lIHJlcXVlc3Qg
YXQgYSB0aW1lLgotICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlcXVlc3REYXRhOwotICAgIFJlc3Bv
bnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX25v
bmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMGExYzVmNjQ5OWE5YmRhMjYwOWEyMDBiYjMwMTQ3
ZjdjZDZmYjM0Li42YzJlN2EyZTQ5OTBjZGFiODc4ZWE1MTFjNmI1MGE4MDUwMGFlYjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MTUsOCArMTAxNSw2IEBACiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94
eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwogCQk1
NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0
IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8q
IEN0YXBIaWRBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRp
Y2F0b3IuaCAqLzsgfTsKLQkJNTc1OTdFQkUyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NTk3RUJDMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAg
Ki87IH07Ci0JCTU3NTk3RUMxMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk3RUMwMjE4
MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLzsgfTsKIAkJNTc3MkYyMDYyMTdE
QkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNl
LmggKi87IH07CiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExp
bmsuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRF
MjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87IH07CkBAIC0xMDM4LDYgKzEw
MzYsNyBAQAogCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzEy
MTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLzsgfTsKIAkJNTdEQ0VEQzcy
MTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi87IH07CiAJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0
NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM5MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0
aGVudGljYXRvck1hbmFnZXIuaCAqLzsgfTsKKwkJNTdFQjJFM0EyMUUxOTgzRTAwQjg5Q0RGIC8q
IFUyZkhpZEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNh
dG9yLmggKi87IH07CiAJCTU4Nzc0M0E2MjFDMzBCQkUwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLzsgfTsKIAkJ
NThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEU5NzdERDIx
QzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLzsgfTsKIAkJ
NUMwQjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwpAQCAtMzQwOCw2ICszNDA3LDggQEAKIAkJNTdEQ0VEQzYyMTRGMTgz
MDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNb2NrTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0RDRURDRDIxNEY1MTY4MDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFUyZkhpZEF1dGhlbnRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVTJmSGlkQXV0aGVudGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU4Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgbmFtZSA9IEhUVFBTVXBncmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL0hUVFBTVXBncmFkZUxpc3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4
RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUxNSw4ICs1NTE2LDggQEAKIAkJ
MkQxNTUxQTkxRjVBOUI0MjAwMDZFM0ZFIC8qIFJlbW90ZUxheWVyVHJlZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTQwNDkwNkYyMURFNjVENzAwMzdG
MERCIC8qIG1hYyAqLywKIAkJCQkyRDE1NTFBQTFGNUE5QkE3MDAwNkUzRkUgLyogaW9zICovLAor
CQkJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8sCiAJCQkJMUFCMTZBRTAxNjQ4
NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCAqLywKIAkJ
CQkwRkYyNEEyRjE4NzlFNEZFMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQUIxNkFERjE2NDg2NTZEMDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSAqLywKQEAgLTY3MDQsMTUgKzY3MDUsMTcg
QEAKIAkJCW5hbWUgPSBGcmFtZXdvcmtzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKLQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8qIGZpZG8gKi8gPSB7CisJCTU3NTk3RUJG
MjE4MTg0QjIwMDM3RjkyNCAvKiBGaWRvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk1NzU5N0VCQzIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhl
bnRpY2F0b3IuY3BwICovLAogCQkJCTU3NTk3RUJCMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlk
QXV0aGVudGljYXRvci5oICovLAogCQkJCTU3NTk3RUMwMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFw
SGlkRHJpdmVyLmNwcCAqLywKIAkJCQk1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhp
ZERyaXZlci5oICovLAorCQkJCTU3RUIyRTM5MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRo
ZW50aWNhdG9yLmNwcCAqLywKKwkJCQk1N0VCMkUzODIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlk
QXV0aGVudGljYXRvci5oICovLAogCQkJKTsKLQkJCXBhdGggPSBmaWRvOworCQkJcGF0aCA9IEZp
ZG87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1NzYwODI4QTIwMjk4NEM5
MDAxMTY2NzggLyogV2ViQXV0aGVudGljYXRpb24gKi8gPSB7CkBAIC02NzI5LDcgKzY3MzIsNyBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1N0RDRUQ5RTIxNDhG
OUQxMDAxNkI4NDcgLyogQ29jb2EgKi8sCi0JCQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8q
IGZpZG8gKi8sCisJCQkJNTc1OTdFQkYyMTgxODRCMjAwMzdGOTI0IC8qIEZpZG8gKi8sCiAJCQkJ
NTdEQ0VEQkQyMTRDOUZBOTAwMTZCODQ3IC8qIE1vY2sgKi8sCiAJCQkJNTdEQ0VEQTQyMTQ5RTY0
QTAwMTZCODQ3IC8qIEF1dGhlbnRpY2F0b3IuY3BwICovLAogCQkJCTU3RENFRDhCMjE0ODVCRDcw
MDE2Qjg0NyAvKiBBdXRoZW50aWNhdG9yLmggKi8sCkBAIC05MzE1LDYgKzkzMTgsNyBAQAogCQkJ
CTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGODMz
Njg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1lbnVEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1N0VCMkUzQTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYxOEI2QzA4MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUE5MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdh
bWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc0Niw4ICsxMDc1MCw2IEBACiAJ
CQkJMkQ5MkE3ODYyMTJCNkFCMTAwRjQ5M0ZEIC8qIENoaWxkUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNG
RCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3NTk3RUJFMjE4MTg0OTAw
MDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
NzU5N0VDMTIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYjc2MGFiN2MzNjQzM2JlNTBmYTRi
ODdkYTJiZThkYWQ3NmU2YmZiLi40ZDU2YWQwMmE5NDRiMGY1M2VkZDEyOGQwNTg2ODVhOWZmMzU0
ODg2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9y
cyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAg
ICAxKSBhZGRzIHN1cHBvcnQgZm9yIFUyRiBtb2NraW5nIG1lY2hhbmlzbTsKKyAgICAgICAgMikg
dXBkYXRlcyB0ZXN0cyB0byByZWZsZWN0IFUyZkNvbW1hbmRDb25zdHJ1Y3RvciBjaGFuZ2VzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3Qu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorCiAyMDE5LTAx
LTA3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5dIEVXUzogd2luY2Fpcm8tZXdzIGNhbm5vdCBhcHBseSBhIHBhdGNoIHdpdGggKi5wbmcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9u
c2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9u
c2VUZXN0LmNwcAppbmRleCBkZTNmMjA5MjkzMzA5YzRiYmMyMzIwMDg2YjRhYWY5NjBkZWM0Yjhh
Li5hN2RjYWIwYjc2YTcyOGY4OTJlN2I0MzkwZmM0ODVhYzhlNzE3ZjhiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3Bw
CkBAIC01MjAsNyArNTIwLDcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNv
cnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTUpCiAvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNh
dG9yIGRhdGEgaXMgcHJvcGVybHkgc2VyaWFsaXplZC4KIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZy
b21VMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRl
bnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgYXV0byByZXNw
b25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0
VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CiAgICAg
QVNTRVJUX1RSVUUocmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5
dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIEVY
UEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJhd0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2ln
bktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKQEAg
LTUzMywyNyArNTMzLDI3IEBAIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJl
c3BvbnNlRGF0YSkKIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0
aE51bGxLZXlIYW5kbGUpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRU
ZXN0U2lnblJlc3BvbnNlKCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0
U2lnblJlc3BvbnNlKCkpOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKIFRFU1Qo
Q1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCiB7Ci0g
ICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVs
eWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhf
dD4oKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZlY3Rvcjx1
aW50OF90PigpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBS
ZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25XaXRoQ29ycnVwdGVkQ291bnRlcikKIHsKICAg
ICAvLyBBIHNpZ24gcmVzcG9uc2Ugb2YgbGVzcyB0aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNw
b25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQs
IGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3Bv
bnNlKDMpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVz
dENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsK
IH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aENvcnJ1cHRl
ZFNpZ25hdHVyZSkKIHsKICAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugbm8gbW9yZSB0aGFuIDUgYnl0
ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0
Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNp
Z25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJh
d0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSg1KSk7CiAgICAgRVhQRUNU
X0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCmluZGV4IDM4ZTAzYzg4NmI1OTY5YWNhZGVhOGQzZTUwMTcw
YmNlMjZkMDdkOGMuLmI2ODJmYjdjMjg3YzMwZDMwZmRjMGI1NDBiYTY5NTIyNGUzMmE0MDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgK
QEAgLTUxLDcgKzUxLDcgQEAgY29uc3RleHByIGNoYXIga1JlbHlpbmdQYXJ0eUlkW10gPSAiYWNt
ZS5jb20iOwogCiBjb25zdGV4cHIgdWludDhfdCBrVTJmUmVnaXN0ZXJDb21tYW5kQXBkdVtdID0g
ewogICAgIC8vIENMQSwgSU5TLCBQMSwgUDIgQVBEVSBpbnN0cnVjdGlvbnMKLSAgICAweDAwLCAw
eDAxLCAweDAwLCAweDAwLAorICAgIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDAsCiAgICAgLy8gRGF0
YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgogICAgIDB4MDAsIDB4MDAs
IDB4NDAsCiAgICAgLy8gQ2hhbGxlbmdlIHBhcmFtZXRlciAtLSBzZWUga0NsaWVudERhdGFIYXNo
CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3RleHByIHVpbnQ4X3Qga1UyZkNoZWNrT25seVNpZ25D
b21tYW5kQXBkdVtdID0gewogCiBjb25zdGV4cHIgdWludDhfdCBrVTJmRmFrZVJlZ2lzdGVyQ29t
bWFuZFtdID0gewogICAgIC8vIENMQSwgSU5TLCBQMSwgUDIgQVBEVSBpbnN0cnVjdGlvbnMKLSAg
ICAweDAwLCAweDAxLCAweDAwLCAweDAwLAorICAgIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDAsCiAg
ICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcgZW5kaWFuIG9yZGVyLgogICAgIDB4
MDAsIDB4MDAsIDB4NDAsCiAgICAgLy8gQm9ndXMgY2hhbGxlbmdlIHBhcmFtZXRlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggN2M4MjEzZWRlYmJiYzNhNjNlZWQ4MzhlZWU1ZmYxMTgzYTU4YTNkZC4uMjRkMzQwZjAw
NmVkNThjMzBmNWM3MTM4OTAxMTg2NjU4YTE1MmMyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNTA5LDEwICsy
NTA5LDM2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25WCiAgICAgICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJhc2U2NCIpKTsKICAgICAgICAgSlNWYWx1ZVJlZiBw
YXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgcGF5
bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQoKSwgMCk7CiAgICAgICAgIGlmICghSlNWYWx1ZUlz
VW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwo
Y29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVl
SXNTdHJpbmcoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgIGlmICgh
SlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHBheWxvYWRCYXNlNjQgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5
bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBwYXls
b2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBp
ZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0
cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHBh
eWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFBy
b3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBpLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFs
dWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0cy5nZXQoKSwgdG9XSyhhZG9wdChKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5nZXQoKSk7
CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGhpZEtleXMuYXBwZW5kKHsgQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlBheWxvYWRCYXNlNjQiKSB9KTsKLSAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwgMCkpLmdldCgpKSk7CisgICAgICAgICAgICBoaWRW
YWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRzKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBpc1UyZlByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImlzVTJmIikpOworICAgICAgICBKU1ZhbHVlUmVmIGlzVTJmVmFs
dWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgaXNVMmZQcm9wZXJ0eU5hbWUu
Z2V0KCksIDApOworICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBpc1Uy
ZlZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChjb250ZXh0LCBpc1UyZlZhbHVlKSkgeworICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJvb2wgaXNVMmYgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpOworICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoeyBB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSB9KTsKKyAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNVMmYpKS5n
ZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ga2Vl
cEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
a2VlcEFsaXZlIikpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2M2VhMzZiYzk4YmUwZDc0YzBlODkzMTZiMjAwODY3ZjUz
NDhlYzUuLmY1MDNmNTBkNmYzMTZkYWUwNDhmYWVjMTA4YjZiMjVkNzFlNDM2N2YgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxOS0wMS0wNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJBdXRoTl0gU3VwcG9ydCBVMkYgSElEIEF1dGhlbnRpY2F0b3Jz
IG9uIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE1MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MTAyMDI3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlc2lkaW5nIGFkZGluZyB0ZXN0
cyBmb3IgVTJGIGF1dGhlbnRpY2F0b3JzLCBpdCBhbHNvIGNoYW5nZXMgcGF5bG9hZEJhc2U2NCBm
cm9tCisgICAgICAgIGEgc3RyaW5nIHRvIGEgdmVjdG9yIG9mIHN0cmluZ3MuCisKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxl
bnQuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5o
dG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJm
Lmh0dHBzLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
aGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJm
Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAxOS0wMS0wNyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdHMv
aHR0cC93cHQvZmV0Y2gvY3NwLXJlcG9ydHMtYnlwYXNzLWNzcC1jaGVja3MuaHRtbCBpcyBmbGFr
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFp
bHVyZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQt
ZmFpbHVyZS5odHRwcy5odG1sCmluZGV4IGUyNDQwNWZhZmU3YTlmNzdiYjMwNzQyMTYyZTBiMTg4
ODRjYWFmZDEuLmM0NmVlMzkxMzhmMGVmZWNmNzQxMjk2ZWRhZTdmOTMyOGE1NGNlOTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0
cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWls
dXJlLmh0dHBzLmh0bWwKQEAgLTY0LDcgKzY0LDcgQEAKIAogICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1p
ZCIsIHBheWxvYWRCYXNlNjQ6dGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAid3Jv
bmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6W3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLCAiVW5rbm93
biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogLTEiKTsKICAgICB9LCAiQ1RBUCBISUQgd2l0
aCByZXF1ZXN0Ojptc2cgc3RhZ2Ugd3JvbmcgY2hhbm5lbCBpZCBlcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbAppbmRleCBkYjAy
ZDU0MThhNmMwNWMzODRhZTVhODIyNmY1YmYyOTliM2FlODdlLi44ZTVkMDk1ZTVmZDk4M2ZhYWFj
NGQ3ZTNhNDYyYjBjY2RkOTdkNjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCkBAIC0yMSw3ICsyMSw3
IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNzYWdl
QmFzZTY0LCBrZWVwQWxpdmU6IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwga2VlcEFsaXZlOiB0cnVlIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlh
bCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWws
IG51bGwpOwpAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2
NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGZh
c3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTM5LDcgKzM5LDcg
QEAKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogImVtcHR5LXJlcG9ydCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3Nh
Z2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogImVtcHR5LXJlcG9ydCIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRl
ckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTQ4LDcgKzQ4LDcgQEAK
IAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBl
cnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNz
YWdlQmFzZTY0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVs
LWlkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51
ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNTcsNyArNTcs
NyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5p
dCIsIGVycm9yOiAid3Jvbmctbm9uY2UiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNz
YWdlQmFzZTY0LCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6
IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIs
IHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRl
ckVycm9yRGF0YTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5o
dG1sCmluZGV4IGI5OTUzZjlmNWIzYTU1NmYxYjUyYmFiNTJiNGI5YzBiYzk4N2RlMzguLjY2MDA0
YTMyMTUzZTY1NDRjYjA4ODZmZjg0YTZmOTFlZGQ2NDY1NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMu
aHRtbApAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiB0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlN
ZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAppbmRleCAyZGRlNmQwOWFhMTJiOTBiYmE3MGE0ZmYxYTRm
OTE0YWVlN2M5ZDUwLi5mMTYzYTM5NmYyYWRkOTM4OTI4YmZmZDM3NjFlZjU3ZjRhZmNkZDM5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5o
dHRwcy5odG1sCkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2Rl
OiAtMSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1h
bGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNjNiN2EyODI1ZmJh
NzcyNjQzNTdmMTRjMzNmYTQ4NGQ2NjE1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
dTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2Fk
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBib2d1cyBj
b21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1h
dGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4gCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVu
dC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MTc5OThiYzcxODcxNGE5OGQzMGE1NDg3MjI1ZjEw
YmNiMjZmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5o
dG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVu
dGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBmYWlsdXJlIGNh
c2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJd
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bWFsZm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0p
OworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZv
cm1lZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBl
cnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6
IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1d
LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgLy8gTWF0Y2ggdGhlIHNlY29uZCBleGNsdWRlIGNyZWRl
bnRpYWwuCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwgLy8gVGhlIGNvbnRlbnQgZG9l
c24ndCBtYXR0ZXIuCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vy
cm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAg
ZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwu
cGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhj
bHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0
IG9mIHVzZXIgcHJlc2VuY2UuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA2M2I3YTI4MjVmYmE3NzI2NDM1N2YxNGMzM2ZhNDg0ZDY2MTVkYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFs
Zm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBVMkYgcmVnaXN0
ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4
Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vjb25kIGV4Y2x1ZGUg
Y3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50
aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0IG9mIHVzZXIgcHJl
c2VuY2UuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtdTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3ZDllODhhMDZiZWQ0NmM3ZDRmZDg1ZTE2
MDFjZTJhZWNmNDIzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRt
bApAQCAtMCwwICsxLDE1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRp
Y2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gZmFpbHVyZSBjYXNl
cyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFR
PT0iXSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBwYXJz
ZSB0aGUgQVBEVSByZXNwb25zZS4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
VW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNv
dWxkbid0IHBhcnNlIHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIik7CisgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciBy
ZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
dXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAg
ICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7
CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3Iu
IEVycm9yIGNvZGU6IDI3OTA0Iik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
cnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpv
aG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2Np
aVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4
Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJv
ci4gRXJyb3IgY29kZTogMjc5MDQiKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9o
biIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhj
bHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBt
YXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0
aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICAvLyBNYXRjaCB0aGUgc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlh
bC4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVk
ZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RD
cmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dIC8vIFRoZSBjb250ZW50IGRvZXNuJ3Qg
bWF0dGVyLgorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5v
RXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFz
dCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlh
bHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVD
b25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRp
dGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJJbnZhbGlkU3RhdGVFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNs
dWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRp
YWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVz
ZW5jZS4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDVkOTNiODA3YTQ0YzUzNzM0YTdmNWQ4
MTFkZjYwMTM1NjJjMDVjN2MuLjBkNzlhOWFkOWE2Yjk4NDc0Yzc1YmZjMTNkNThjMWRlMDc0MWFh
NjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKQEAgLTcsNyArNyw3IEBACiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQg
bW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBk
aWZmZXJlbnQgY29uZmlndXJhdGlvbi4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQgfSB9KTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CiAKICAgICBmdW5j
dGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vz
cy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTdiMjYxN2ZhODg3ZjcxMzFjMmMwZDhkMjM5YTg5NzliYjNjNGU1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
bWluaW11bSBvcHRpb25zIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEg
bW9jayB1MmYgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRv
ci4gMiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0ZXN0IG9m
IHVzZXIgcHJlc2VuY2UgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFhYjE4ZDE3ZGI1ODg2OTgxNjY4M2U4NWZiMDMzYzk4MDhjODQ5YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxMjkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1
dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jYm9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8v
IENoZWNrIHJlc3BvbnNlCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBh
cnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJh
c2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50
aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNw
b25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVu
Z2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOworICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJOb3RTdXBwb3J0ZWRFcnJvciIsICgpID0+IHsgY3JlZGVudGlh
bC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgfSk7CisKKyAgICAgICAgLy8gQ2hlY2sgYXR0
ZXN0YXRpb24KKyAgICAgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShj
cmVkZW50aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJmaWRvLXUyZiIpOworICAgICAgICAvLyBDaGVj
ayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKGF0dGVz
dGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4
U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2
MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRoRGF0YS5mbGFncywgNjUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRh
LmNvdW50ZXIsIDApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0
aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElELCBCYXNlNjRVUkwu
cGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICAvLyBDaGVjayBmaWRv
LXUyZiBhdHRlc3RhdGlvbgorICAgICAgICBhc3NlcnRfdHJ1ZShjaGVja1B1YmxpY0tleShhdXRo
RGF0YS5wdWJsaWNLZXkpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5hdHRTdG10Lng1Yy5sZW5ndGgsIDEpOworICAgIH0KKworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhv
c3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAg
ICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRl
bnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENy
ZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1
Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAg
ICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNs
dWRlQ3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQp
LAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgi
TVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRp
YWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRl
bnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sIC8vIFRoZSBjb250ZW50IGRvZXNuJ3QgbWF0
dGVyLgorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVkZW50aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhl
bnRpY2F0b3IuIDIiKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJw
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDUwMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFz
ZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRlc3Qgb2YgdXNlciBwcmVzZW5jZSBp
biBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1s
CmluZGV4IGUzNjM2YzNlNzViN2Q2MDE2MWQ1MDBiMjEyZWYxNTg4NDYwN2MwMjUuLjE0NGJhOWQ4
OWE5YmQ4NjA2ZDk0NDc4MGQ0NGJiYTFmOTUyMDIzMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQt
c2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbApAQCAt
MTMsNyArMTMsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiB0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVy
ZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6
ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5
bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RB
bGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRt
bAppbmRleCBlYzZiMGE4OGZhOWE0Mjc4NDgzYjQwMDYxMWM3Zjk5ZDI4ODVmZjdiLi41YWMyMTM5
MGEyNTJhNjNhYTM3NTkzNDViZDUxMjAzOWY4NzM1Zjk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlk
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCkBAIC0zMiw3ICszMiw3IEBA
CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0g
fSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQ
YXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVu
a25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJVbmtub3du
IGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAtMSIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0
aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVhMDYxNDViZDU1ZmFjNWQ0NjliN2UzOGFlOTA1YTkwMThmYmVlNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQg
c2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gMiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE3Y2Q4YTVi
YjkxZDgxYjE0NzZhZGQ3YzQyZDAxMzYzYjBkNmM3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAg
ICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFs
SWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJlc3BvbnNl
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdy
b25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0s
CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIDIiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTA2
MTQ1YmQ1NWZhYzVkNDY5YjdlMzhhZTkwNWE5MDE4ZmJlZTRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBu
byBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
MiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI0MzViNWY1YzdmMDFlNjZkMjE4MzE1Y2UwMDlhMGNhNmQxYmYy
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayB1MmYg
YXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25v
d25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCBw
YXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJO
byBjcmVkZW50aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4g
dGhlIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9u
Z0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
bm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IDIiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDY3ZGI4MzEwMDdmN2EyYzUwNDVkNzJkYWUzZTFjZDgw
MDFjYzI0ZDAuLjc0MzYyNDY2ZTNmYjUzODE3MTFiOTI5NzQ0NDdhNTY3ZmMxOTNmZTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwK
QEAgLTYsNyArNiw3IEBACiA8c2NyaXB0PgogICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0
aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmln
dXJhdGlvbi4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6
IHRlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0IH0gfSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKIAogICAgIGZ1bmN0aW9uIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzRh
MzllYWEyOGQ1YTQ0Y2M0YWMwNjY5NzkyNDM5NjRhOWI0MjNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0g
d2l0aCBtb3JlIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
CitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGVzdCBvZiB1c2VyIHBy
ZXNlbmNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vz
cy11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTZh
YWZjY2QwMTNjMjJhZGNkNDNlMGEzNTg1NzBlMTA4OTMyMGYyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHN1Y2Nlc3MgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgZnVu
Y3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHJl
c3BvbmQKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVu
dGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAg
ICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQp
LCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVu
dERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUy
Iiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY3JlZGVudGlhbC5yZXNwb25zZS51c2VySGFuZGxlLCBudWxsKTsKKworICAgICAgICAv
LyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRh
KG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNo
KSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNm
M2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgMSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgNTkpOworICAgIH0KKwor
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlh
bElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFs
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAg
IHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBh
cnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFz
ZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJm
Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0Rh
dGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAg
ICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1vcmUg
YWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNm
aWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAg
IH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRlc3Qgb2Yg
dXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGls
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKaW5k
ZXggODNmNGI0OGFkY2YyNWI3MDA0ZTk3MDFmNDdmMDEzZjhhMDU5YWZhYi4uZjYwOTg2YjQ3MjI3
ZWNlZDMxYTE4ZjIyYzBjOTFmOTRhYzRmYTFiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMKQEAgLTY5LDYgKzY5LDM0IEBAIGNvbnN0IHRl
c3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0ID0KICAgICAiWjUxVnN0dVFrdUhJMmVYaDBDdDFnUEMw
Z1N4M0NXTGg1STlhMkFFQUFBQlFBMWhITUVVQ0lRQ1NGVHV1QldnQiIgKwogICAgICI0L0YwVkI3
RGxVVk0wOUlIUG14ZTFNekhVd1JvQ1JaYkNBSWdHS292NnhvQXgyTUVmNi82cU5zOE91dHpoUDJD
IiArCiAgICAgIlFvSjFMN0ZlNjRHOXVCYz0iOworY29uc3QgdGVzdFUyZkFwZHVOb0Vycm9yT25s
eVJlc3BvbnNlQmFzZTY0ID0gImtBQT0iOworY29uc3QgdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0
ZWRPbmx5UmVzcG9uc2VCYXNlNjQgPSAiYlFBPSI7Citjb25zdCB0ZXN0VTJmQXBkdVdyb25nRGF0
YU9ubHlSZXNwb25zZUJhc2U2NCA9ICJhb0E9IjsKK2NvbnN0IHRlc3RVMmZBcGR1Q29uZGl0aW9u
c05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCA9ICJhWVU9IjsKK2NvbnN0IHRlc3RVMmZS
ZWdpc3RlclJlc3BvbnNlID0KKyAgICAiQlFUb2RpV0pidVRrYmNBeWRtNkFoNVl2TnQrZC9vdFdm
emRqQVZzWmtLWU9GQ2ZlWVMxbVFZdmFHVkJZSHJ4YyIgKworICAgICJqQjJ0Y1F5eFRDTDR5WEJG
OUdFdnNneVJRRDY5aWI5MzdGQ1hWZTZjSmpYdnFxeDdLNXhjN3hjMnczRjlwSVUwIiArCisgICAg
InlNYTJWTmYvbEY5UXRjeE9lQVZiM1RsclpQZU5vc1g1WWdETTFCWE5DUDVDQURnd2dnSktNSUlC
TXFBREFnRUMiICsKKyAgICAiQWdRRWJJZ2lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DNHhMREFxQmdO
VkJBTVRJMWwxWW1samJ5QlZNa1lnVW05diIgKworICAgICJkQ0JEUVNCVFpYSnBZV3dnTkRVM01q
QXdOak14TUNBWERURTBNRGd3TVRBd01EQXdNRm9ZRHpJd05UQXdPVEEwIiArCisgICAgIk1EQXdN
REF3V2pBc01Tb3dLQVlEVlFRRERDRlpkV0pwWTI4Z1ZUSkdJRVZGSUZObGNtbGhiQ0F5TkRreE9E
SXoiICsKKyAgICAiTWpRM056QXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUTh5
cmtzeTVjb2Z1am1PVU4rSWZ6VyIgKworICAgICJ0dkZsc3RXajg5c1RIVEhCYTNRcnRIYlkwZW1R
Z090VWJKdTk5VmJtSVEvVUo0V0pubmpNV0o2K01ROXMyNS8wIiArCisgICAgIm96c3dPVEFpQmdr
ckJnRUVBWUxFQ2dJRUZURXVNeTQyTGpFdU5DNHhMalF4TkRneUxqRXVNakFUQmdzckJnRUUiICsK
KyAgICAiQVlMbEhBSUJBUVFFQXdJRU1EQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuNXNGSWtp
OFRQUXN4WmtmeXF1cyIgKworICAgICJtMlVidmx2YzNJN3dyU3djSC9zMjBZY1YxQzU0c2traVQ1
TEg1dWVnWEVudzUrVElnYjh1bFBSZVNpR0RQWFJXIiArCisgICAgImhSMFBiQlJhS1ZRTWgwOHdr
c2swdEQwaUs0bGl3UFFRenZIYmRZa3E4UmEwU3BiMTAxcmVvNEl2eHhSdllBUTQiICsKKyAgICAi
Vzh0cHRseVo1K3RwR1hobkE4RFl6VUhvOTF6S1JLcUt0eVd0am5tZjg2aHBhbThiSmxibU1iSGtB
WVBBajlwVCIgKworICAgICIra3FQaGFCV2s1Uks0WG1oTTUwQUxSWEt2WUVBa094eUx2WGUrWlph
TngxQlhXSkxhS0p3ZksyWHZOMFhoYStYIiArCisgICAgIjRsanpQZlZxQXhxZ05XMk9qVjY4cmNk
T0J4WTJ4ckVRck9YTW01RGY2c3JtUVA4YnNQSCtYYlR2OTZsZkJnY3oiICsKKyAgICAiOVRCRkFp
QXlSM25HanpPQUtJb1JsN1lKWDNwdXViR3h3U2YyYXVFcW1mNkZNdXdqdVFJaEFPT1ZGcXhOWWU1
ayIgKworICAgICJCRTFRdEJXbXBOVFlTNmJZbGN0YXQ2R3FmUWdkNDBINmtBQT0iOworY29uc3Qg
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCA9CisgICAgIlByMkp2M2ZzVUpkVjdwd21OZS1xckhz
cm5GenZGemJEY1gya2hUVEl4clpVMV8tVVgxQzF6RTU0QlZ2ZE9XdGsiICsKKyAgICAiOTQyaXhm
bGlBTXpVRmMwSV9rSUFPQSI7Citjb25zdCB0ZXN0VTJmU2lnblJlc3BvbnNlID0KKyAgICAiQVFB
QUFEc3dSQUlnZTk0S1Vxd2ZUSXNuNEFPamNNMW1wTWNSamRJdFZFZURYMFc1bkdoQ1AvY0NJRHhS
ZTBlSCIgKworICAgICJmNFY0TGVFQWhxZUQwZWZmVGpZNTUzSDE5cStqV3ExVGM0V09rQUE9IjsK
IAogY29uc3QgUkVTT1VSQ0VTX0RJUiA9ICIvV2ViS2l0L3dlYmF1dGhuL3Jlc291cmNlcy8iOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358578</attachid>
            <date>2019-01-07 22:56:45 -0800</date>
            <delta_ts>2019-01-08 13:44:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191535-20190107225644.patch</filename>
            <type>text/plain</type>
            <size>147769</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiYzUxZDg0OGE2NmU0
YjVkNTZhNzYwNjQwNzQxMDViYzIzYjBlZi4uM2M0ODUzZGUxNmY4YmVmY2I3Nzc2MDRjMjZhY2Fk
ODE1ODU2NmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTA3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBw
b3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIFUyZkNvbW1hbmRDb25zdHJ1Y3RvciB0byBwcm9kdWNl
IHJlZ2lzdGVyIGNvbW1hbmRzIHdpdGgKKyAgICAgICAgZW5mb3JjaW5nIHRlc3Qgb2YgdXNlciBw
cmVzZW5jZS4gT3RoZXJ3aXNlLCBhdXRoZW50aWNhdG9ycyB3b3VsZCBzaWxlbnRseQorICAgICAg
ICBnZW5lcmF0ZSBjcmVkZW50aWFscy4gSXQgYWxzbyByZW5hbWVzIHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlIHRvCisgICAgICAgIHJlYWRVMmZTaWduUmVzcG9uc2UuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChmaWRvOjpXZWJDb3JlOjpjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6Cisg
ICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRG
cm9tVTJmU2lnblJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKwogMjAxOS0wMS0wNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MGY5
YjQzMTk5OGU5NDM3MmMwYmYxNmM1M2E4YmI5ZmFhZDJmNzUuLjkyMzQyMDNmMDA5MDIwODQ0Nzdk
ZDQ0OGI1MThiODdlZGY0Y2ZmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDEt
MDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHN1cHBvcnQgZm9yIFUyRiBh
dXRoZW50aWNhdG9ycywgYW5kIGVuYWJsZXMgaXQgZm9yIGhpZCBkZXZpY2VzLgorICAgICAgICBJ
dCBmb2xsb3dzIHRoZSBDVEFQIHNwZWMgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiBj
b21tYW5kcyBhbmQgcmV0dXJuIHRoZSByZXNwb25zZXM6CisgICAgICAgIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFi
aWxpdHkKKyAgICAgICAgTW9zdCBvZiB0aGUgcGFydHMgYXJlIGRvbmUgYmVmb3JlIHRoaXMgcGF0
Y2gsIHRoaXMgcGF0Y2ggZm9jdWVzIG9uOiA3LjIuMiBhbmQgNy4zLjIuCisKKyAgICAgICAgQmVz
aWRlcyBpbXBsZW1lbnRpbmcgdGhlIFUyZkhpZEF1dGhlbnRpY2F0b3IsIHRoaXMgcGF0Y2ggYWxz
bzoKKyAgICAgICAgMS4gcmVuYW1lcyBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkbyB0
byBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkbyB0byBiZSBjb25zaXN0ZW50CisgICAg
ICAgIHdpdGggb3RoZXJzOworICAgICAgICAyLiBhZGRzIHN1cHBvcnQgaW4gdGhlIG1vY2tpbmcg
ZW52aXJvbm1lbnQgZm9yIFUyRiBhdXRoZW50aWNhdG9ycy4gSXQgaXMgZG9uZSBieSBleHRlbmRp
bmcKKyAgICAgICAgdGhlIHN0YWdlcyBpbiBNb2NrSGlkQ29ubmVjdGlvbiBmcm9tIDQgdG8gaW5k
ZWZpbml0ZSBhcyBtdWx0aS1yb3VuZCBjb21tdW5pY2F0aW9ucyBhcmUgZXhwZWN0ZWQKKyAgICAg
ICAgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiByZXF1ZXN0cy4KKworICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuY3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRp
b25Nb2NrQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmNv
bnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OkN0
YXBIaWRBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0
b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpDdGFwSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6Q3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50
aWNhdG9yLmguCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpD
dGFwSGlkRHJpdmVyOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6fldvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6
Oldvcmtlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZXR1cm5NZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Q3RhcEhpZERyaXZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYktpdDo6
Q3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJpdmVyLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuaC4KKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL1UyZkhpZEF1
dGhlbnRpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGlj
YXRvcjo6VTJmSGlkQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVu
dGljYXRvcjo6Y2hlY2tFeGNsdWRlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6Omlzc3VlUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhl
bnRpY2F0b3I6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRo
ZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlQ2hlY2tPbmx5
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFu
ZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRv
ci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnBhcnNl
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9N
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5ub3Qgc2NvbGwgZm9yIDUgc2Vjb25kcyBhZnRl
ciBzd2lwaW5nIGJhY2sgb24gcXVvdGV1bnF1b3RlYXBwcy5jb20KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggMTYwNmFiMGQxMzQ4OGE4YTA4ZTVlYjMwNGFkYjYzMGQzNDM1ZTBjOS4u
MjFiYTYwOTI0M2ZiMGQxZTM1OTZlMzljOTM2NzExM2E2ZDViOGRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTU0LDYgKzU0LDggQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
b25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWMK
IAogICAgIGFwZHU6OkFwZHVDb21tYW5kIGNvbW1hbmQ7CiAgICAgY29tbWFuZC5zZXRJbnMoc3Rh
dGljX2Nhc3Q8dWludDhfdD4oVTJmQXBkdUluc3RydWN0aW9uOjprUmVnaXN0ZXIpKTsKKyAgICAv
LyBUaGlzIGlzIG5lZWRlZCBmb3IgdGVzdCBvZiB1c2VyIHByZXNlbmNlIGV2ZW4gdGhvdWdoIHRo
ZSBzcGVjIGRvZXNuJ3Qgc3BlY2lmeSBpdC4KKyAgICBjb21tYW5kLnNldFAxKGtQMUVuZm9yY2VV
c2VyUHJlc2VuY2VBbmRTaWduKTsKICAgICBjb21tYW5kLnNldERhdGEoV1RGTW92ZShkYXRhKSk7
CiAgICAgY29tbWFuZC5zZXRSZXNwb25zZUxlbmd0aChhcGR1OjpBcGR1Q29tbWFuZDo6a0FwZHVN
YXhSZXNwb25zZUxlbmd0aCk7CiAgICAgcmV0dXJuIGNvbW1hbmQuZ2V0RW5jb2RlZENvbW1hbmQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZS
ZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IGM0NWExNzExNzk5MDIxMzU2YmE3ODVj
ZWYxNmMyOGE5MWEzMDFiZTAuLmNiNDY3ODE2OGI0YjgyZDFlNGFlN2UwYTc3Y2QxYTI1NGE4NzM2
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZS
ZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIE9wdGlv
bmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25zZShjb25z
dCBTdHJpbmcmIHJwSWQsIGNvCiAgICAgcmV0dXJuIFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsg
QXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQuZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6
ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVj
dC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUoKSksIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKIH0KIAotT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRGcm9t
VTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSkKK09wdGlvbmFsPFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSkKIHsKICAgICBpZiAoa2V5SGFuZGxlLmlzRW1wdHkoKSB8fCB1MmZEYXRh
LnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggZDZhNDFmODczZDhiYmM0ZjlhNWEwZjA3ZTMwZDY3
ZjI3ZGYyYWJjYy4uNGM2ZDI0ZTViNGY3ZTIyYTY2YjMzNGY1Zjg3MzRmOWU0ZjE0OGM0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNl
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGE+IHJlYWRVMmZSZWdpc3RlclJl
c3BvbnMKIAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgdG8gV2Vi
QXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3Jn
L3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9y
LXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRvckdldEFzc2Vy
dGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB1MmZEYXRhKTsKK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSk7CiAKIH0gLy8gbmFtZXNwYWNlIGZpZG8KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXgg
ZTBhMzI4MmUwMDkyZDk3Y2UzNWQ2NjQ2YjQzMzFiOGNhMTFmNDhlMC4uNDhiMWQzMTBmODc1ZjQz
OTlhNDYzN2VhNTk0ZWFlZGEwZTc4NzY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zODQsNiArMzg0LDEw
IEBAIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAKIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKIAorVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3BwCitVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJpdmVyLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5jcHAKKwogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAogVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmlu
ZGV4IGEzZTM0NjgyNTZiYjY3MDA4Mjk1ZmMxM2YwNzJkZjM3OWI3MDAxMmMuLmZiNTQ5MzMxMzNm
MWFhN2MxZDczMWZiNjFmNGQ3OThhODE0ODA0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjI3LDgg
KzYyNywxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUgogICAgICAgICBpZiAoZXJyb3IgPT0g
Indyb25nLW5vbmNlIikKICAgICAgICAgICAgIGhpZC5lcnJvciA9IE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb246OkhpZDo6RXJyb3I6Oldyb25nTm9uY2U7CiAKLSAgICAgICAgaWYg
KGF1dG8gcGF5bG9hZEJhc2U2NCA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQotICAgICAgICAgICAgaGlkLnBheWxvYWRC
YXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+c3RyaW5nKCk7CisgICAgICAg
IGlmIChhdXRvIHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIpKS5nZXQoKSkpKQorICAgICAgICAgICAgaGlkLnBheWxv
YWRCYXNlNjQgPSBXZWJLaXQ6OnRvSW1wbChwYXlsb2FkQmFzZTY0KS0+dG9TdHJpbmdWZWN0b3Io
KTsKKworICAgICAgICBpZiAoYXV0byBpc1UyZiA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIklzVTJmIikpLmdldCgpKSkpCisgICAgICAgICAgICBoaWQuaXNVMmYg
PSBXS0Jvb2xlYW5HZXRWYWx1ZShpc1UyZik7CiAKICAgICAgICAgaWYgKGF1dG8ga2VlcEFsaXZl
ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGhp
ZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiS2VlcEFsaXZlIikp
LmdldCgpKSkpCiAgICAgICAgICAgICBoaWQua2VlcEFsaXZlID0gV0tCb29sZWFuR2V0VmFsdWUo
a2VlcEFsaXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IDIzN2IxYjQ2MDcyODEx
OTEzMmRmNzk4MzljYTY3NjQ1MzVkNjNlZWYuLmQ4ZTRlNDFhYzI2Zjg3YjU1MGVkMTgxZjQ2MDMx
ZDIwZmQyNDA3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtMzEsNiArMzEsNyBA
QAogI2ltcG9ydCAiQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCIKICNpbXBvcnQgIkN0YXBIaWREcml2
ZXIuaCIKICNpbXBvcnQgIkhpZENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlUyZkhpZEF1dGhlbnRp
Y2F0b3IuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GaWRvQ29uc3RhbnRzLmg+CkBAIC0xMDgsNyArMTA5LDcgQEAgdm9pZCBIaWRTZXJ2aWNlOjpk
ZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB2b2lkIEhpZFNlcnZpY2U6OmNvbnRp
bnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZvKEN0YXBIaWREcml2ZXIqIHB0ciwgVmVjdG9yPHVpbnQ4
X3Q+JiYgcmVzcG9uc2UpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+IGRy
aXZlciA9IG1fZHJpdmVycy50YWtlKHB0cik7Ci0gICAgaWYgKCFkcml2ZXIgfHwgIW9ic2VydmVy
KCkpCisgICAgaWYgKCFkcml2ZXIgfHwgIW9ic2VydmVyKCkgfHwgcmVzcG9uc2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGluZm8gPSByZWFkQ1RBUEdldEluZm9SZXNw
b25zZShyZXNwb25zZSk7CkBAIC0xMTgsNiArMTE5LDggQEAgdm9pZCBIaWRTZXJ2aWNlOjpjb250
aW51ZUFkZERldmljZUFmdGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50
OF8KICAgICB9CiAgICAgLy8gRklYTUUoMTkxNTM1KTogU3VwcG9ydCBVMkYgYXV0aGVudGljYXRv
cnMuCiAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSBhIGN0YXAgZ2V0IGluZm8gcmVzcG9u
c2UuIik7CisgICAgZHJpdmVyLT5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtVMmYpOwor
ICAgIG9ic2VydmVyKCktPmF1dGhlbnRpY2F0b3JBZGRlZChVMmZIaWRBdXRoZW50aWNhdG9yOjpj
cmVhdGUoV1RGTW92ZShkcml2ZXIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9D
dGFwSGlkQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9GaWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjQy
YWY2NmY5MTA3OWExOTdkNWMzZDNiYzg3MmJlMmEzNTc3MTI2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0
aGVudGljYXRvci5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDdGFwSGlkQXV0aGVudGljYXRvci5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0V4
Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIGZpZG87CisKK0N0YXBIaWRB
dXRoZW50aWNhdG9yOjpDdGFwSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhp
ZERyaXZlcj4mJiBkcml2ZXIsIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmJiBpbmZvKQor
ICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIpKQorICAgICwgbV9pbmZvKFdURk1vdmUoaW5m
bykpCit7CisgICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVlZCBhIHdheSB0byBjb252ZXJ0IHN0
ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCisgICAgQVNTRVJUKG1fZHJpdmVyKTsKK30KKwor
dm9pZCBDdGFwSGlkQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQoreworICAgIC8vIEZJ
WE1FKDE5MjA2MSkKKyAgICBMT0dfRVJST1IoIlN0YXJ0IG1ha2luZyBjcmVkZW50aWFscy4iKTsK
KyAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IocmVx
dWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucywgbV9pbmZvLm9w
dGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KCkpOworICAgIG1fZHJpdmVyLT50
cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
V1RGTW92ZShkYXRhKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQ3RhcEhpZEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZENUQVBNYWtlQ3Jl
ZGVudGlhbFJlc3BvbnNlKGRhdGEpOworICAgIGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogIiwgZGF0YS5zaXplKCkgPT0gMSA/IGRh
dGFbMF0gOiAtMSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVjZWl2ZVJlc3Bv
bmQoV1RGTW92ZSgqcmVzcG9uc2UpKTsKK30KKwordm9pZCBDdGFwSGlkQXV0aGVudGljYXRvcjo6
Z2V0QXNzZXJ0aW9uKCkKK3sKKyAgICAvLyBGSVhNRSgxOTIwNjEpCisgICAgTE9HX0VSUk9SKCJT
dGFydCBnZXR0aW5nIGFzc2VydGlvbnMuIik7CisgICAgYXV0byBjYm9yQ21kID0gZW5jb2RlR2V0
QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCku
cmVxdWVzdE9wdGlvbnMsIG1faW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlvbkF2YWlsYWJp
bGl0eSgpKTsKKyAgICBtX2RyaXZlci0+dHJhbnNhY3QoV1RGTW92ZShjYm9yQ21kKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZUdldEFzc2VydGlv
bkFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBDdGFwSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNl
UmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3Bv
bnNlID0gcmVhZENUQVBHZXRBc3NlcnRpb25SZXNwb25zZShkYXRhKTsKKyAgICBpZiAoIXJlc3Bv
bnNlKSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJy
b3IsIG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIGRh
dGEuc2l6ZSgpID09IDEgPyBkYXRhWzBdIDogLTEpIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkZjYyNzk1MjU2OTFkZWM1ZmE4ZDM1NmUwYWUxOWYyYmYyMDdiNjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBI
aWRBdXRoZW50aWNhdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVk
ZSAiQXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckdldElu
Zm9SZXNwb25zZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3RhcEhpZERyaXZl
cjsKKworY2xhc3MgQ3RhcEhpZEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGlj
YXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDdGFwSGlkQXV0aGVudGljYXRvcj4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXZlciwgZmlkbzo6QXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZSYmIGluZm8pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDdGFwSGlkQXV0aGVudGljYXRvcihXVEZNb3ZlKGRyaXZlciksIFdURk1vdmUo
aW5mbykpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ3RhcEhpZEF1dGhlbnRp
Y2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYsIGZpZG86OkF1dGhlbnRpY2F0
b3JHZXRJbmZvUmVzcG9uc2UmJik7CisKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7
CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZl
Y3Rvcjx1aW50OF90PiYmKSBjb25zdDsKKyAgICB2b2lkIGdldEFzc2VydGlvbigpIGZpbmFsOwor
ICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9y
PHVpbnQ4X3Q+JiYpIGNvbnN0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+
IG1fZHJpdmVyOworICAgIGZpZG86OkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgbV9pbmZv
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9DdGFwSGlkRHJpdmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZjllZjk4Mzk0ZmVlNDc5NTNmOWM0MGI4YTI1YjliNGI3N2ZkZTliCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlk
by9DdGFwSGlkRHJpdmVyLmNwcApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDdGFwSGlkRHJpdmVyLmgiCisKKyNpZiBFTkFCTEUo
V0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpZG9Db25z
dGFudHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1l
c3BhY2UgZmlkbzsKKworQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpXb3JrZXIoVW5pcXVlUmVmPEhp
ZENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQoreworICAgIG1fY29ubmVjdGlvbi0+aW5pdGlhbGl6ZSgpOworfQorCitDdGFw
SGlkRHJpdmVyOjpXb3JrZXI6On5Xb3JrZXIoKQoreworICAgIG1fY29ubmVjdGlvbi0+dGVybWlu
YXRlKCk7Cit9CisKK3ZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjp0cmFuc2FjdChmaWRvOjpG
aWRvSGlkTWVzc2FnZSYmIHJlcXVlc3RNZXNzYWdlLCBNZXNzYWdlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSk7CisgICAgbV9zdGF0ZSA9
IFN0YXRlOjpXcml0ZTsKKyAgICBtX3JlcXVlc3RNZXNzYWdlID0gV1RGTW92ZShyZXF1ZXN0TWVz
c2FnZSk7CisgICAgbV9yZXNwb25zZU1lc3NhZ2UucmVzZXQoKTsKKyAgICBtX2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7CisKKyAgICAvLyBIaWRDb25uZWN0aW9uIGNvdWxkIGhvbGQgZGF0
YSBmcm9tIG90aGVyIGFwcGxpY2F0aW9ucywgYW5kIHRoZXJlb2ZvcmUgaW52YWxpZGF0ZSBpdCBi
ZWZvcmUgZWFjaCB0cmFuc2FjdGlvbi4KKyAgICBtX2Nvbm5lY3Rpb24tPmludmFsaWRhdGVDYWNo
ZSgpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChtX3JlcXVlc3RNZXNzYWdlLT5wb3BOZXh0UGFj
a2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oSGlkQ29ubmVjdGlvbjo6RGF0
YVNlbnQgc2VudCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdl
YWtUaGlzLT53cml0ZShzZW50KTsKKyAgICB9KTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpX
b3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50IHNlbnQpCit7CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OldyaXRlKTsKKyAgICAvLyBGSVhNRSgxOTIwNjEpCisgICAgTE9H
X0VSUk9SKCJTdGFydCB3cml0aW5nIGRhdGEuIik7CisgICAgaWYgKHNlbnQgIT0gSGlkQ29ubmVj
dGlvbjo6RGF0YVNlbnQ6OlllcykgeworICAgICAgICByZXR1cm5NZXNzYWdlKFdURjo6bnVsbG9w
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcmVxdWVzdE1lc3NhZ2Ut
Pm51bVBhY2tldHMoKSkgeworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlJlYWQ7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+cmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjayhbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIG11dGFibGUgeworICAg
ICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPnJl
YWQoZGF0YSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9j
b25uZWN0aW9uLT5zZW5kKG1fcmVxdWVzdE1lc3NhZ2UtPnBvcE5leHRQYWNrZXQoKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShIaWRDb25uZWN0aW9uOjpEYXRhU2VudCBzZW50KSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPndyaXRl
KHNlbnQpOworICAgIH0pOworfQorCit2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVhZChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OlJlYWQpOworICAgIC8vIEZJWE1FKDE5MjA2MSkKKyAgICBMT0dfRVJST1IoIlN0YXJ0IHJl
YWRpbmcgZGF0YS4iKTsKKyAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlKSB7CisgICAgICAgIG1f
cmVzcG9uc2VNZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0
YShkYXRhKTsKKyAgICAgICAgLy8gVGhlIGZpcnN0IGZldyByZXBvcnRzIGNvdWxkIGJlIGZvciBv
dGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVyZWZvcmUgaWdub3JlIHRob3NlLgorICAgICAgICBp
ZiAoIW1fcmVzcG9uc2VNZXNzYWdlIHx8IG1fcmVzcG9uc2VNZXNzYWdlLT5jaGFubmVsSWQoKSAh
PSBtX3JlcXVlc3RNZXNzYWdlLT5jaGFubmVsSWQoKSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBwYXJzZSBhIGhpZCBpbml0IHBhY2tldDogJXMiLCBtX3Jlc3BvbnNlTWVzc2Fn
ZSA/ICJ3cm9uZyBjaGFubmVsIGlkLiIgOiAiYmFkIGRhdGEuIik7CisgICAgICAgICAgICBtX3Jl
c3BvbnNlTWVzc2FnZS5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFtX3Jlc3BvbnNlTWVzc2FnZS0+YWRkQ29udGludWF0
aW9uUGFja2V0KGRhdGEpKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNl
IGEgaGlkIGNvbnRpbnVhdGlvbiBwYWNrZXQuIik7CisgICAgICAgICAgICByZXR1cm5NZXNzYWdl
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobV9yZXNwb25zZU1lc3NhZ2UtPm1lc3NhZ2VDb21wbGV0ZSgpKSB7CisgICAgICAg
IC8vIEEgS2VlcEFsaXZlIGNtZCBjb3VsZCBiZSBzZW50IGJldHdlZW4gYSByZXF1ZXN0IGFuZCBh
IHJlc3BvbnNlIHRvIGluZGljYXRlIHRoYXQKKyAgICAgICAgLy8gdGhlIGF1dGhlbnRpY2F0b3Ig
aXMgd2FpdGluZyBmb3IgdXNlciBjb25zZW50LiBLZWVwIGxpc3RlbmluZyBmb3IgdGhlIHJlc3Bv
bnNlLgorICAgICAgICBpZiAobV9yZXNwb25zZU1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprS2VlcEFsaXZlKSB7CisgICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZS5y
ZXNldCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJldHVybk1l
c3NhZ2UoV1RGTW92ZShtX3Jlc3BvbnNlTWVzc2FnZSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCit2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmV0dXJuTWVzc2FnZShPcHRpb25h
bDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAgIC8vIEZJWE1FKDE5MjA2
MSkKKyAgICBMT0dfRVJST1IoIlN0YXJ0IHJldHVybmluZyBkYXRhLiIpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6SWRsZTsKKyAgICBtX2Nvbm5lY3Rpb24tPnVucmVnaXN0ZXJEYXRhUmVjZWl2ZWRD
YWxsYmFjaygpOworICAgIG1fY2FsbGJhY2soV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK0N0YXBI
aWREcml2ZXI6OkN0YXBIaWREcml2ZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKKyAgICA6IG1fd29ya2VyKG1ha2VVbmlxdWVSZWY8V29ya2VyPihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKSkKKyAgICAsIG1fbm9uY2Uoa0hpZEluaXROb25jZUxlbmd0aCkKK3sKK30KKwordm9p
ZCBDdGFwSGlkRHJpdmVyOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBSZXNwb25z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6Oklk
bGUpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb2NhdGVDaGFubmVsOworICAgIG1fY2hhbm5l
bElkID0ga0hpZEJyb2FkY2FzdENoYW5uZWw7CisgICAgbV9yZXF1ZXN0RGF0YSA9IFdURk1vdmUo
ZGF0YSk7CisgICAgbV9yZXNwb25zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisKKyAg
ICAvLyBBbGxvY2F0ZSBhIGNoYW5uZWwuCisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19F
UlJPUigiU3RhcnQgYWxsb2NhdGluZyBhIGNoYW5uZWwuIik7CisgICAgQVNTRVJUKG1fbm9uY2Uu
c2l6ZSgpID09IGtIaWRJbml0Tm9uY2VMZW5ndGgpOworICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzKG1fbm9uY2UuZGF0YSgpLCBtX25vbmNlLnNpemUoKSk7CisgICAgYXV0byBpbml0
Q29tbWFuZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprSW5pdCwgbV9ub25jZSk7CisgICAgQVNTRVJUKGluaXRDb21tYW5kKTsKKyAg
ICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqaW5pdENvbW1hbmQpLCBbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgd2Vha1RoaXMtPmNvbnRp
bnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICB9KTsKK30K
Kwordm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRp
b25hbDxGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpBbGxvY2F0ZUNoYW5uZWwpOworICAgIGlmICghbWVzc2FnZSkgeworICAgICAgICBy
ZXR1cm5SZXNwb25zZSh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCht
ZXNzYWdlLT5jaGFubmVsSWQoKSA9PSBtX2NoYW5uZWxJZCk7CisKKyAgICBhdXRvIHBheWxvYWQg
PSBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpOworICAgIEFTU0VSVChwYXlsb2FkLnNpemUo
KSA9PSBrSGlkSW5pdFJlc3BvbnNlU2l6ZSk7CisgICAgLy8gUmVzdGFydCB0aGUgdHJhbnNhY3Rp
b24gaW4gdGhlIG5leHQgcnVuIGxvb3Agd2hlbiBub25jZSBtaXNtYXRjaGVzLgorICAgIGlmICht
ZW1jbXAocGF5bG9hZC5kYXRhKCksIG1fbm9uY2UuZGF0YSgpLCBtX25vbmNlLnNpemUoKSkpIHsK
KyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBkYXRhID0gV1RGTW92ZSht
X3JlcXVlc3REYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlzLT50cmFuc2FjdChXVEZNb3ZlKGRhdGEpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFkeTsKKyAgICBhdXRvIGluZGV4ID0ga0hpZEluaXROb25j
ZUxlbmd0aDsKKyAgICBtX2NoYW5uZWxJZCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2Fk
W2luZGV4KytdKSA8PCAyNDsKKyAgICBtX2NoYW5uZWxJZCB8PSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgMTY7CisgICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDg7CisgICAgbV9jaGFubmVsSWQgfD0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXhdKTsKKyAgICAvLyBGSVhNRSgxOTE1
MzQpOiBDaGVjayB0aGUgcmVzZXQgb2YgdGhlIHBheWxvYWQuCisgICAgLy8gRklYTUUoMTkyMDYx
KQorICAgIExPR19FUlJPUigiU3RhcnQgc2VuZGluZyB0aGUgcmVxdWVzdC4iKTsKKyAgICBhdXRv
IGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIG1fcHJvdG9jb2wgPT0g
UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCA/IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciA6IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBtX3JlcXVlc3REYXRhKTsKKyAgICBBU1NFUlQoY21k
KTsKKyAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqY21kKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXShPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiByZXNwb25zZSkgbXV0
YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51
ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9u
YWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6UmVhZHkpOworICAgIEFTU0VSVCghbWVzc2FnZSB8fCBtZXNzYWdlLT5jaGFu
bmVsSWQoKSA9PSBtX2NoYW5uZWxJZCk7CisgICAgLy8gRklYTUUoMTkyMDYxKQorICAgIExPR19F
UlJPUigiU3RhcnQgcmV0dXJuaW5nIHRoZSByZXNwb25zZS4iKTsKKyAgICByZXR1cm5SZXNwb25z
ZShtZXNzYWdlID8gbWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKSA6IFZlY3Rvcjx1aW50OF90
PigpKTsKK30KKwordm9pZCBDdGFwSGlkRHJpdmVyOjpyZXR1cm5SZXNwb25zZShWZWN0b3I8dWlu
dDhfdD4mJiByZXNwb25zZSkKK3sKKyAgICAvLyBSZXNldCBzdGF0ZSBiZWZvcmUgY2FsbGluZyB0
aGUgcmVzcG9uc2UgY2FsbGJhY2sgdG8gYXZvaWQgYmVpbmcgZGVsZXRlZC4KKyAgICBtX3N0YXRl
ID0gU3RhdGU6OklkbGU7CisgICAgbV9yZXNwb25zZUNhbGxiYWNrKFdURk1vdmUocmVzcG9uc2Up
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0YXBIaWREcml2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vQ3RhcEhpZERyaXZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmYjUwNGQ5MWU5NzgzNzBiMGY2ZDk0MjgxOGNkMTk4Nzk3ODIzY2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL0N0
YXBIaWREcml2ZXIuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAi
SGlkQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1l
bnRzIHRoZSBDVEFQIEhJRCBwcm90b2NvbDoKKy8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9z
cGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1w
cm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNiCisvLyBGU006IElkbGUgPT4gQWxsb2Nh
dGVDaGFubmVsID0+IFJlYWR5CitjbGFzcyBDdGFwSGlkRHJpdmVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPEN0YXBIaWREcml2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdGFwSGlkRHJpdmVyKTsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChWZWN0b3I8dWludDhfdD4mJik+Owor
CisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBJZGxlLAorICAgICAg
ICBBbGxvY2F0ZUNoYW5uZWwsCisgICAgICAgIFJlYWR5LAorICAgICAgICAvLyBGSVhNRSgxOTE1
MjgpCisgICAgICAgIEJ1c3kKKyAgICB9OworCisgICAgZXhwbGljaXQgQ3RhcEhpZERyaXZlcihV
bmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4mJik7CisKKyAgICB2b2lkIHNldFByb3RvY29sKGZpZG86
OlByb3RvY29sVmVyc2lvbiBwcm90b2NvbCkgeyBtX3Byb3RvY29sID0gcHJvdG9jb2w7IH0KKyAg
ICB2b2lkIHRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2sm
Jik7CisKK3ByaXZhdGU6CisgICAgLy8gV29ya2VyIGlzIHRoZSBoZWxwZXIgdGhhdCBtYWludGFp
bnMgdGhlIHRyYW5zYWN0aW9uLgorICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjYXJiaXRyYXRpb24KKyAgICAvLyBGU006IElkbGUg
PT4gV3JpdGUgPT4gUmVhZC4KKyAgICBjbGFzcyBXb3JrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V29ya2VyPiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXIpOworICAgIHB1YmxpYzoKKyAgICAgICAgdXNpbmcg
TWVzc2FnZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVz
c2FnZT4mJik+OworCisgICAgICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90ICB7CisgICAg
ICAgICAgICBJZGxlLAorICAgICAgICAgICAgV3JpdGUsCisgICAgICAgICAgICBSZWFkCisgICAg
ICAgIH07CisKKyAgICAgICAgZXhwbGljaXQgV29ya2VyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9u
PiYmKTsKKyAgICAgICAgfldvcmtlcigpOworCisgICAgICAgIHZvaWQgdHJhbnNhY3QoZmlkbzo6
Rmlkb0hpZE1lc3NhZ2UmJiwgTWVzc2FnZUNhbGxiYWNrJiYpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgdm9pZCB3cml0ZShIaWRDb25uZWN0aW9uOjpEYXRhU2VudCk7CisgICAgICAgIHZvaWQg
cmVhZChjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICAgICAgdm9pZCByZXR1cm5NZXNzYWdl
KE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiYmKTsKKworICAgICAgICBVbmlxdWVSZWY8
SGlkQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3Rh
dGU6OklkbGUgfTsKKyAgICAgICAgT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVx
dWVzdE1lc3NhZ2U7CisgICAgICAgIE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3Jl
c3BvbnNlTWVzc2FnZTsKKyAgICAgICAgTWVzc2FnZUNhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAg
fTsKKworICAgIHZvaWQgY29udGludWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Zmlk
bzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworICAgIHZvaWQgY29udGludWVBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYpOworICAgIHZvaWQgcmV0dXJu
UmVzcG9uc2UoVmVjdG9yPHVpbnQ4X3Q+JiYpOworCisgICAgVW5pcXVlUmVmPFdvcmtlcj4gbV93
b3JrZXI7CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07CisgICAgdWludDMyX3Qg
bV9jaGFubmVsSWQgeyBmaWRvOjprSGlkQnJvYWRjYXN0Q2hhbm5lbCB9OworICAgIC8vIE9uZSBy
ZXF1ZXN0IGF0IGEgdGltZS4KKyAgICBWZWN0b3I8dWludDhfdD4gbV9yZXF1ZXN0RGF0YTsKKyAg
ICBSZXNwb25zZUNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV9ub25jZTsKKyAgICBmaWRvOjpQcm90b2NvbFZlcnNpb24gbV9wcm90b2NvbCB7IGZpZG86
OlByb3RvY29sVmVyc2lvbjo6a0N0YXAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vRmlkby9VMmZIaWRB
dXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ0N2Y0MmY2M2Iz
OGFlYWQ1M2VlOWI1N2M0NWZiM2IyOGViZmIxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRv
ci5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVTJmSGlkQXV0aGVudGljYXRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVVRI
TikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQXBkdVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25E
YXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1UyZlJlc3BvbnNlQ29udmVydGVyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVz
cGFjZSBhcGR1OwordXNpbmcgbmFtZXNwYWNlIGZpZG87CisKK25hbWVzcGFjZSB7Citjb25zdCB1
bnNpZ25lZCByZXRyeVRpbWVPdXRWYWx1ZU1zID0gMjAwOworfQorCitVMmZIaWRBdXRoZW50aWNh
dG9yOjpVMmZIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYm
IGRyaXZlcikKKyAgICA6IG1fZHJpdmVyKFdURk1vdmUoZHJpdmVyKSkKKyAgICAsIG1fcmV0cnlU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVMmZIaWRBdXRoZW50aWNhdG9yOjpyZXRyeUxh
c3RDb21tYW5kKQoreworICAgIC8vIEZJWE1FKDE5MTUyMCk6IFdlIG5lZWQgYSB3YXkgdG8gY29u
dmVydCBzdGQ6OnVuaXF1ZV9wdHIgdG8gVW5pcXVlUmVmLgorICAgIEFTU0VSVChtX2RyaXZlcik7
Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQoreworICAg
IGlmICghaXNDb252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKHJlcXVlc3REYXRhKCkuY3Jl
YXRpb25PcHRpb25zKSkgeworICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJDYW5ub3QgY29udmVydCB0aGUgcmVxdWVzdCB0byBVMkYgY29t
bWFuZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFyZXF1ZXN0RGF0
YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEFTU0VSVCghbV9uZXh0TGlzdEluZGV4KTsKKyAgICAgICAgY2hlY2tFeGNsdWRlTGlzdCht
X25leHRMaXN0SW5kZXgrKyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXNzdWVSZWdp
c3RlckNvbW1hbmQoKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjaGVja0V4Y2x1
ZGVMaXN0KHNpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gcmVxdWVzdERhdGEoKS5j
cmVhdGlvbk9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzLnNpemUoKSkgeworICAgICAgICBpc3N1
ZVJlZ2lzdGVyQ29tbWFuZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gdTJm
Q21kID0gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQocmVxdWVzdERhdGEoKS5oYXNo
LCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucywgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9w
dGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzW2luZGV4XSk7CisgICAgQVNTRVJUKHUyZkNtZCk7Cisg
ICAgaXNzdWVOZXdDb21tYW5kKFdURk1vdmUoKnUyZkNtZCksIENvbW1hbmRUeXBlOjpDaGVja09u
bHlDb21tYW5kKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjppc3N1ZVJlZ2lzdGVy
Q29tbWFuZCgpCit7CisgICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1h
bmQocmVxdWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucyk7Cisg
ICAgQVNTRVJUKHUyZkNtZCk7CisgICAgaXNzdWVOZXdDb21tYW5kKFdURk1vdmUoKnUyZkNtZCks
IENvbW1hbmRUeXBlOjpSZWdpc3RlckNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbigpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZTaWdu
Q29tbWFuZChyZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zKSkgeworICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90U3VwcG9ydGVkRXJyb3IsICJDYW5ub3QgY29udmVy
dCB0aGUgcmVxdWVzdCB0byBVMkYgY29tbWFuZC4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgQVNTRVJUKCFtX25leHRMaXN0SW5kZXgpOworICAgIGlzc3VlU2lnbkNvbW1hbmQo
bV9uZXh0TGlzdEluZGV4KyspOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3Vl
U2lnbkNvbW1hbmQoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSByZXF1ZXN0RGF0
YSgpLnJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuc2l6ZSgpKSB7CisgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gdTJmQ21k
ID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0RGF0
YSgpLnJlcXVlc3RPcHRpb25zLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHNbaW5kZXhdLmlkVmVjdG9yKTsKKyAgICBBU1NFUlQodTJmQ21kKTsKKyAgICBpc3N1
ZU5ld0NvbW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlNpZ25Db21tYW5kKTsK
K30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjppc3N1ZU5ld0NvbW1hbmQoVmVjdG9yPHVp
bnQ4X3Q+JiYgY29tbWFuZCwgQ29tbWFuZFR5cGUgdHlwZSkKK3sKKyAgICBtX2xhc3RDb21tYW5k
ID0gV1RGTW92ZShjb21tYW5kKTsKKyAgICBtX2xhc3RDb21tYW5kVHlwZSA9IHR5cGU7CisgICAg
aXNzdWVDb21tYW5kKG1fbGFzdENvbW1hbmQsIG1fbGFzdENvbW1hbmRUeXBlKTsKK30KKwordm9p
ZCBVMmZIaWRBdXRoZW50aWNhdG9yOjppc3N1ZUNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBjb21tYW5kLCBDb21tYW5kVHlwZSB0eXBlKQoreworICAgIG1fZHJpdmVyLT50cmFuc2FjdChW
ZWN0b3I8dWludDhfdD4oY29tbWFuZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
dHlwZV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB3ZWFrVGhpcy0+cmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKGRhdGEpLCB0eXBlKTsK
KyAgICB9KTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpyZXNwb25zZVJlY2VpdmVk
KFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlLCBDb21tYW5kVHlwZSB0eXBlKQoreworICAgIGF1
dG8gYXBkdVJlc3BvbnNlID0gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShyZXNwb25z
ZSk7CisgICAgaWYgKCFhcGR1UmVzcG9uc2UpIHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBBUERVIHJlc3Bv
bnNlLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgQ29tbWFuZFR5cGU6OlJlZ2lzdGVyQ29tbWFuZDoKKyAgICAgICAgY29udGlu
dWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3Bv
bnNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbW1hbmRUeXBlOjpDaGVja09ubHlD
b21tYW5kOgorICAgICAgICBjb250aW51ZUNoZWNrT25seUNvbW1hbmRBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3BvbnNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IENvbW1hbmRUeXBlOjpCb2d1c0NvbW1hbmQ6CisgICAgICAgIGNvbnRpbnVlQm9ndXNDb21tYW5k
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoKmFwZHVSZXNwb25zZSkpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBDb21tYW5kVHlwZTo6U2lnbkNvbW1hbmQ6CisgICAgICAgIGNvbnRp
bnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3BvbnNl
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1hbmRBZnRl
clJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYXBkdVJlc3BvbnNlKQoreworICAgIHN3
aXRjaCAoYXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0
YXR1czo6U1dfTk9fRVJST1I6IHsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLnJwLmlkLCBhcGR1UmVz
cG9uc2UuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFyZXNwb25zZSkgeworICAgICAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNl
IHRoZSBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UuIl9zIH0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHJlY2VpdmVSZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1df
Q09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgorICAgICAgICAvLyBQb2xsaW5nIGlzIHJlcXVpcmVk
IGR1cmluZyB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UuCisgICAgICAgIG1fcmV0cnlUaW1lci5zdGFy
dE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhyZXRyeVRpbWVPdXRWYWx1ZU1zKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZWNlaXZlUmVzcG9uZChF
eGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtub3duIGludGVybmFs
IGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXBkdVJlc3BvbnNl
LnN0YXR1cygpKSkgfSk7CisgICAgfQorfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlQ2hlY2tPbmx5Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2Um
JiBhcGR1UmVzcG9uc2UpCit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsK
KyAgICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjoKKyAgICBjYXNlIEFw
ZHVSZXNwb25zZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CisgICAgICAg
IGlzc3VlTmV3Q29tbWFuZChjb25zdHJ1Y3RCb2d1c1UyZlJlZ2lzdHJhdGlvbkNvbW1hbmQoKSwg
Q29tbWFuZFR5cGU6OkJvZ3VzQ29tbWFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBjaGVja0V4Y2x1ZGVMaXN0KG1fbmV4dExpc3RJbmRleCsrKTsKKyAgICB9Cit9
CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVCb2d1c0NvbW1hbmRBZnRlclJl
c3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYXBkdVJlc3BvbnNlKQoreworICAgIHN3aXRj
aCAoYXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1
czo6U1dfTk9fRVJST1I6CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50
cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiJf
cyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNX
X0NPTkRJVElPTlNfTk9UX1NBVElTRklFRDoKKyAgICAgICAgLy8gUG9sbGluZyBpcyByZXF1aXJl
ZCBkdXJpbmcgdGVzdCBvZiB1c2VyIHByZXNlbmNlLgorICAgICAgICBtX3JldHJ5VGltZXIuc3Rh
cnRPbmVTaG90KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMocmV0cnlUaW1lT3V0VmFsdWVNcykp
OworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQo
RXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5h
bCBlcnJvci4gRXJyb3IgY29kZTogIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFwZHVSZXNwb25z
ZS5zdGF0dXMoKSkpIH0pOworICAgIH0KK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpj
b250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGFw
ZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgeworICAg
IGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7CisgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlv
bnMucnBJZCwgcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21f
bmV4dExpc3RJbmRleCAtIDFdLmlkVmVjdG9yLCBhcGR1UmVzcG9uc2UuZGF0YSgpKTsKKyAgICAg
ICAgaWYgKCFyZXNwb25zZSkgeworICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9u
RGF0YSB7IFVua25vd25FcnJvciwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2lnbiByZXNwb25z
ZS4iX3MgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVjZWl2
ZVJlc3BvbmQoV1RGTW92ZSgqcmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6
CisgICAgICAgIC8vIFBvbGxpbmcgaXMgcmVxdWlyZWQgZHVyaW5nIHRlc3Qgb2YgdXNlciBwcmVz
ZW5jZS4KKyAgICAgICAgbV9yZXRyeVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWls
bGlzZWNvbmRzKHJldHJ5VGltZU91dFZhbHVlTXMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGlzc3VlU2lnbkNvbW1hbmQobV9uZXh0TGlzdEluZGV4KyspOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
VEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9GaWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0ZpZG8vVTJmSGlkQXV0aGVudGljYXRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdhNmYxOWZkZDY4NTkzMjY0MDhlOWVmNjUxY2MxYzFjYzc1MjdiN2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9GaWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuaApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShN
QUMpCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdG9yLmgiCisKK25hbWVzcGFjZSBhcGR1IHsKK2Ns
YXNzIEFwZHVSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEN0YXBI
aWREcml2ZXI7CisKK2NsYXNzIFUyZkhpZEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0
aGVudGljYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxVMmZIaWRBdXRoZW50aWNhdG9y
PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYgZHJpdmVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVTJmSGlkQXV0aGVudGljYXRvcihXVEZNb3Zl
KGRyaXZlcikpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgVTJmSGlkQXV0aGVu
dGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJik7CisKKyAgICB2b2lkIG1h
a2VDcmVkZW50aWFsKCkgZmluYWw7CisgICAgdm9pZCBjaGVja0V4Y2x1ZGVMaXN0KHNpemVfdCBp
bmRleCk7CisgICAgdm9pZCBpc3N1ZVJlZ2lzdGVyQ29tbWFuZCgpOworICAgIHZvaWQgZ2V0QXNz
ZXJ0aW9uKCkgZmluYWw7CisgICAgdm9pZCBpc3N1ZVNpZ25Db21tYW5kKHNpemVfdCBpbmRleCk7
CisKKyAgICBlbnVtIGNsYXNzIENvbW1hbmRUeXBlIDogdWludDhfdCB7CisgICAgICAgIFJlZ2lz
dGVyQ29tbWFuZCwKKyAgICAgICAgQ2hlY2tPbmx5Q29tbWFuZCwKKyAgICAgICAgQm9ndXNDb21t
YW5kLAorICAgICAgICBTaWduQ29tbWFuZAorICAgIH07CisgICAgdm9pZCBpc3N1ZU5ld0NvbW1h
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYgY29tbWFuZCwgQ29tbWFuZFR5cGUpOworICAgIHZvaWQgcmV0
cnlMYXN0Q29tbWFuZCgpIHsgaXNzdWVDb21tYW5kKG1fbGFzdENvbW1hbmQsIG1fbGFzdENvbW1h
bmRUeXBlKTsgfQorICAgIHZvaWQgaXNzdWVDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y29tbWFuZCwgQ29tbWFuZFR5cGUpOworICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8
dWludDhfdD4mJiByZXNwb25zZSwgQ29tbWFuZFR5cGUpOworICAgIHZvaWQgY29udGludWVSZWdp
c3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOwor
ICAgIHZvaWQgY29udGludWVDaGVja09ubHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGFw
ZHU6OkFwZHVSZXNwb25zZSYmKTsKKyAgICB2b2lkIGNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25zZSYmKTsKKyAgICB2b2lkIGNvbnRpbnVl
U2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoYXBkdTo6QXBkdVJlc3BvbnNlJiYpOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+IG1fZHJpdmVyOworICAgIFJ1bkxv
b3A6OlRpbWVyPFUyZkhpZEF1dGhlbnRpY2F0b3I+IG1fcmV0cnlUaW1lcjsKKyAgICBWZWN0b3I8
dWludDhfdD4gbV9sYXN0Q29tbWFuZDsKKyAgICBDb21tYW5kVHlwZSBtX2xhc3RDb21tYW5kVHlw
ZTsKKyAgICBzaXplX3QgbV9uZXh0TGlzdEluZGV4IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9N
b2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCmluZGV4IDBiMTc2OTliZGRl
OTc4NGI0Yzc4NjNkOWQ3YmU5MjQ1NDY1ZjJhNjQuLmQ4NmEzYTQ3MmU2YmI3NzM5MGUzNDAxYTZj
ZGU4MmM2NTNhNjg0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3Bw
CkBAIC0xMjcsNDMgKzEyNyw0OCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVl
c3QoKQogICAgICAgICBpZiAocHJldmlvdXNTdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNn
KQogICAgICAgICAgICAgbV9zdGFnZSA9IE1vY2s6OlN0YWdlOjpSZXF1ZXN0OwogICAgIH0KLSAg
ICBpZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtD
Ym9yKQorICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a0Nib3IgfHwgbV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNv
bW1hbmQ6OmtNc2cpCiAgICAgICAgIG1fc3ViU3RhZ2UgPSBNb2NrOjpTdWJTdGFnZTo6TXNnOwog
Ci0gICAgLy8gU2V0IG9wdGlvbnMuCiAgICAgaWYgKG1fc3RhZ2UgPT0gTW9jazo6U3RhZ2U6OlJl
cXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFnZTo6TXNnKSB7Ci0gICAgICAgIG1f
cmVxdWlyZVJlc2lkZW50S2V5ID0gZmFsc2U7Ci0gICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmlj
YXRpb24gPSBmYWxzZTsKLQotICAgICAgICBhdXRvIHBheWxvYWQgPSBtX3JlcXVlc3RNZXNzYWdl
LT5nZXRNZXNzYWdlUGF5bG9hZCgpOwotICAgICAgICBBU1NFUlQocGF5bG9hZC5zaXplKCkpOwot
ICAgICAgICBhdXRvIGNtZCA9IHN0YXRpY19jYXN0PEN0YXBSZXF1ZXN0Q29tbWFuZD4ocGF5bG9h
ZFswXSk7Ci0gICAgICAgIHBheWxvYWQucmVtb3ZlKDApOwotICAgICAgICBhdXRvIHJlcXVlc3RN
YXAgPSBDQk9SUmVhZGVyOjpyZWFkKHBheWxvYWQpOwotICAgICAgICBBU1NFUlQocmVxdWVzdE1h
cCk7Ci0KLSAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNh
dG9yTWFrZUNyZWRlbnRpYWwpIHsKLSAgICAgICAgICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5n
ZXRNYXAoKS5maW5kKENCT1JWYWx1ZShDdGFwTWFrZUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc0tl
eSkpOyAvLyBGaW5kIG9wdGlvbnMuCi0gICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+
Z2V0TWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+
c2Vjb25kLmdldE1hcCgpOwotCi0gICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25NYXAu
ZmluZChDQk9SVmFsdWUoa1Jlc2lkZW50S2V5TWFwS2V5KSk7Ci0gICAgICAgICAgICAgICAgaWYg
KGl0ciAhPSBvcHRpb25NYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVJl
c2lkZW50S2V5ID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOwotCi0gICAgICAgICAgICAgICAgaXRy
ID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAuZW5kKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBpc3N1ZSBkaWZmZXJlbnQgbXNnIGNtZCBmb3IgQ1RB
UCBhbmQgVTJGLgorICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYgXiAo
bV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgIT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtNc2cpKTsK
KworICAgICAgICAvLyBTZXQgb3B0aW9ucy4KKyAgICAgICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2Ut
PmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvcikgeworICAgICAgICAgICAgbV9y
ZXF1aXJlUmVzaWRlbnRLZXkgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fcmVxdWlyZVVzZXJWZXJp
ZmljYXRpb24gPSBmYWxzZTsKKworICAgICAgICAgICAgYXV0byBwYXlsb2FkID0gbV9yZXF1ZXN0
TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKKyAgICAgICAgICAgIEFTU0VSVChwYXlsb2Fk
LnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGNtZCA9IHN0YXRpY19jYXN0PEN0YXBSZXF1ZXN0
Q29tbWFuZD4ocGF5bG9hZFswXSk7CisgICAgICAgICAgICBwYXlsb2FkLnJlbW92ZSgwKTsKKyAg
ICAgICAgICAgIGF1dG8gcmVxdWVzdE1hcCA9IENCT1JSZWFkZXI6OnJlYWQocGF5bG9hZCk7Cisg
ICAgICAgICAgICBBU1NFUlQocmVxdWVzdE1hcCk7CisKKyAgICAgICAgICAgIGlmIChjbWQgPT0g
Q3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVl
KEN0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4K
KyAgICAgICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5nZXRNYXAo
KTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JW
YWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ciAh
PSBvcHRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcXVpcmVSZXNp
ZGVudEtleSA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKworICAgICAgICAgICAgICAgICAgICBp
dHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ciAhPSBvcHRpb25NYXAuZW5kKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uID0gaXRyLT5zZWNvbmQu
Z2V0Qm9vbCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQog
Ci0gICAgICAgIGlmIChjbWQgPT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdl
dEFzc2VydGlvbikgewotICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgp
LmZpbmQoQ0JPUlZhbHVlKEN0YXBHZXRBc3NlcnRpb25SZXF1ZXN0T3B0aW9uc0tleSkpOyAvLyBG
aW5kIG9wdGlvbnMuCi0gICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCku
ZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vjb25kLmdl
dE1hcCgpOwotICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZh
bHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ciAh
PSBvcHRpb25NYXAuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVVzZXJWZXJp
ZmljYXRpb24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAgICAgICAgICBpZiAoY21kID09
IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24pIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUo
Q3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0aW9ucy4KKyAg
ICAgICAgICAgICAgICBpZiAoaXQgIT0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5nZXRNYXAoKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUo
a1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ciAh
PSBvcHRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcXVpcmVVc2Vy
VmVyaWZpY2F0aW9uID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIwNyw4ICsyMTIsMTIgQEAgdm9p
ZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMoKQogICAgICAgICBpbmZvRGF0YS5pbnNl
cnQoMCwgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a1N1Y2Nl
c3MpKTsgLy8gUHJlcGVuZCBzdGF0dXMgY29kZS4KICAgICAgICAgaWYgKHN0YWdlc01hdGNoKCkg
JiYgbV9jb25maWd1cmF0aW9uLmhpZC0+ZXJyb3IgPT0gTW9jazo6RXJyb3I6Oldyb25nQ2hhbm5l
bElkKQogICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJy
ZW50Q2hhbm5lbCAtIDEsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0
ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRh
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5oaWQt
PmlzVTJmKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRl
KG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVz
c2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprRXJy
b3IsIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmljZVJlc3BvbnNlQ29kZTo6a0N0YXAx
RXJySW52YWxpZENvbW1hbmQpIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fc3Rh
Z2UgPT0gTW9jazo6U3RhZ2U6OlJlcXVlc3QgJiYgbV9zdWJTdGFnZSA9PSBNb2NrOjpTdWJTdGFn
ZTo6TXNnKSB7CkBAIC0yMjMsOSArMjMyLDE0IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZl
ZWRSZXBvcnRzKCkKICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRl
KG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgeyBzdGF0aWNf
Y2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDJFcnJVbnN1cHBvcnRl
ZE9wdGlvbikgfSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHBheWxvYWQ7Ci0gICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGJhc2U2NERlY29kZShtX2NvbmZp
Z3VyYXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0LCBwYXlsb2FkKTsKKyAgICAgICAgICAgIEFTU0VS
VCghbV9jb25maWd1cmF0aW9uLmhpZC0+cGF5bG9hZEJhc2U2NC5pc0VtcHR5KCkpOworICAgICAg
ICAgICAgYXV0byBzdGF0dXMgPSBiYXNlNjREZWNvZGUobV9jb25maWd1cmF0aW9uLmhpZC0+cGF5
bG9hZEJhc2U2NFswXSwgcGF5bG9hZCk7CisgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24uaGlk
LT5wYXlsb2FkQmFzZTY0LnJlbW92ZSgwKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dHVzLCBzdGF0dXMpOwotICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVh
dGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBwYXlsb2Fk
KTsKKyAgICAgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCisgICAgICAg
ICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5l
bCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBwYXlsb2FkKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1
cnJlbnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgcGF5bG9hZCk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaAppbmRleCBl
MGJmODZiMmZkMWUyNjViZmMwMjc2ODE5ZTllYmNkY2MxMTMzOTQ4Li4zZGNhYmM0YjVkYzk3MDU3
MGZiNWVjM2ZmOTEzNjhiZDRlYmZmZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5oCkBAIC0zNSwxMSArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGUg
Zm9sbG93aW5nIGJhc2ljYWxseSBzaW11bGF0ZXMgYW4gZXh0ZXJuYWwgSElEIHRva2VuIHRoYXQ6
Ci0vLyAgICAxLiBPbmx5IHN1cHBvcnRzIENUQVAyIHByb3RvY29sLAorLy8gICAgMS4gU3VwcG9y
dHMgb25seSBvbmUgcHJvdG9jb2wsIGVpdGhlciBDVEFQMiBvciBVMkYuCiAvLyAgICAyLiBEb2Vz
bid0IHN1cHBvcnQgcmVzaWRlbnQga2V5cywKIC8vICAgIDMuIERvZXNuJ3Qgc3VwcG9ydCB1c2Vy
IHZlcmlmaWNhdGlvbi4KLS8vIFRoZXJlIGFyZSBmb3VyIHN0YWdlcyBmb3IgZWFjaCBXZWJBdXRo
TiByZXF1ZXN0OgorLy8gVGhlcmUgYXJlIGZvdXIgc3RhZ2VzIGZvciBlYWNoIENUQVAgcmVxdWVz
dDoKIC8vIEZTTTogSW5mbzo6SW5pdCA9PiBJbmZvOjpNc2cgPT4gUmVxdWVzdDo6SW5pdCA9PiBS
ZXF1ZXN0OjpNc2cKKy8vIFRoZXJlIGFyZSBpbmRlZmluaXRlIHN0YWdlcyBmb3IgZWFjaCBVMkYg
cmVxdWVzdDoKKy8vIEZTTTogSW5mbzo6SW5pdCA9PiBJbmZvOjpNc2cgPT4gW1JlcXVlc3Q6Oklu
aXQgPT4gUmVxdWVzdDo6TXNnXSsKIC8vIEFjY29yZGluZyB0byBkaWZmZXJlbnQgY29tYmluYXRp
b25zIG9mIGVycm9yIGFuZCBzdGFnZXMsIGVycm9yIHdpbGwgbWFuaWZlc3QgZGlmZmVyZW50bHku
CiBjbGFzcyBNb2NrSGlkQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
b2NrSGlkQ29ubmVjdGlvbj4sIHB1YmxpYyBIaWRDb25uZWN0aW9uIHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmgKaW5kZXggNzg4NjdhNWZjNjY2Yjk3ZGI5MDcwMjk0ZTRlZjliY2QwZDgyMjM3Yy4uYmUw
ODcyZmJkZmI5Y2FjODI3ODNiNTQ1ZjU0OTk2ZDY0ZWU3OTM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgKQEAg
LTYxLDEwICs2MSwxMSBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biB7CiAgICAgICAgICAgICBXcm9uZ05vbmNlCiAgICAgICAgIH07CiAKLSAgICAgICAgU3RyaW5n
IHBheWxvYWRCYXNlNjQ7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBheWxvYWRCYXNlNjQ7CiAg
ICAgICAgIFN0YWdlIHN0YWdlIHsgU3RhZ2U6OkluZm8gfTsKICAgICAgICAgU3ViU3RhZ2Ugc3Vi
U3RhZ2UgeyBTdWJTdGFnZTo6SW5pdCB9OwogICAgICAgICBFcnJvciBlcnJvciB7IEVycm9yOjpT
dWNjZXNzIH07CisgICAgICAgIGJvb2wgaXNVMmYgeyBmYWxzZSB9OwogICAgICAgICBib29sIGtl
ZXBBbGl2ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZmFzdERhdGFBcnJpdmFsIHsgZmFsc2Ug
fTsKICAgICAgICAgYm9vbCBjb250aW51ZUFmdGVyRXJyb3JEYXRhIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFiNDJhZjY2ZjkxMDc5YTE5N2Q1YzNkM2JjODcyYmUyYTM1NzcxMjYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVudGljYXRvci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkN0YXBIaWRBdXRoZW50aWNhdG9yLmgiCi0KLSNpZiBFTkFC
TEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJDdGFwSGlkRHJpdmVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RXhjZXB0aW9uRGF0YS5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgZmlkbzsKLQotQ3RhcEhp
ZEF1dGhlbnRpY2F0b3I6OkN0YXBIaWRBdXRoZW50aWNhdG9yKHN0ZDo6dW5pcXVlX3B0cjxDdGFw
SGlkRHJpdmVyPiYmIGRyaXZlciwgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmIGluZm8p
Ci0gICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCi0gICAgLCBtX2luZm8oV1RGTW92ZShp
bmZvKSkKLXsKLSAgICAvLyBGSVhNRSgxOTE1MjApOiBXZSBuZWVkIGEgd2F5IHRvIGNvbnZlcnQg
c3RkOjp1bmlxdWVfcHRyIHRvIFVuaXF1ZVJlZi4KLSAgICBBU1NFUlQobV9kcml2ZXIpOwotfQot
Ci12b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCi17Ci0gICAgLy8g
RklYTUUoMTkyMDYxKQotICAgIExPR19FUlJPUigiU3RhcnQgbWFraW5nIGNyZWRlbnRpYWxzLiIp
OwotICAgIGF1dG8gY2JvckNtZCA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihy
ZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLCBtX2luZm8u
b3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKSk7Ci0gICAgbV9kcml2ZXIt
PnRyYW5zYWN0KFdURk1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB3ZWFrVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChXVEZNb3ZlKGRhdGEpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBDdGFwSGlkQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSBjb25zdAotewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VD
cmVkZW50aWFsUmVzcG9uc2UoZGF0YSk7Ci0gICAgaWYgKCFyZXNwb25zZSkgewotICAgICAgICBy
ZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJV
bmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBkYXRhLnNpemUoKSA9PSAxID8g
ZGF0YVswXSA6IC0xKSB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZWNlaXZlUmVz
cG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOwotfQotCi12b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9y
OjpnZXRBc3NlcnRpb24oKQotewotICAgIC8vIEZJWE1FKDE5MjA2MSkKLSAgICBMT0dfRVJST1Io
IlN0YXJ0IGdldHRpbmcgYXNzZXJ0aW9ucy4iKTsKLSAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVH
ZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEo
KS5yZXF1ZXN0T3B0aW9ucywgbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5KCkpOwotICAgIG1fZHJpdmVyLT50cmFuc2FjdChXVEZNb3ZlKGNib3JDbWQpLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKLSAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0YSkpOwotICAgIH0pOwotfQotCi12
b2lkIEN0YXBIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9u
c2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAotewotICAgIGF1dG8gcmVz
cG9uc2UgPSByZWFkQ1RBUEdldEFzc2VydGlvblJlc3BvbnNlKGRhdGEpOwotICAgIGlmICghcmVz
cG9uc2UpIHsKLSAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25F
cnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogIiwg
ZGF0YS5zaXplKCkgPT0gMSA/IGRhdGFbMF0gOiAtMSkgfSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgqcmVzcG9uc2UpKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKSAmJiBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjYyNzk1MjU2OTFkZWM1ZmE4ZDM1NmUwYWUxOWYyYmYy
MDdiNjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkQXV0aGVu
dGljYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQotCi0j
aW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRv
ckdldEluZm9SZXNwb25zZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQ3RhcEhp
ZERyaXZlcjsKLQotY2xhc3MgQ3RhcEhpZEF1dGhlbnRpY2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0
aGVudGljYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDdGFwSGlkQXV0aGVudGljYXRv
cj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXZlciwgZmlkbzo6
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSYmIGluZm8pCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDdGFwSGlkQXV0aGVudGljYXRvcihXVEZNb3ZlKGRyaXZlciksIFdU
Rk1vdmUoaW5mbykpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ3RhcEhpZEF1
dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2ZXI+JiYsIGZpZG86OkF1dGhl
bnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UmJik7Ci0KLSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkg
ZmluYWw7Ci0gICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKFZlY3Rvcjx1aW50OF90PiYmKSBjb25zdDsKLSAgICB2b2lkIGdldEFzc2VydGlvbigpIGZp
bmFsOwotICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpIGNvbnN0OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWRE
cml2ZXI+IG1fZHJpdmVyOwotICAgIGZpZG86OkF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2Ug
bV9pbmZvOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYyODYyMDMyYmM1YjY0ZTMwOWM3NGQ3
NmQ5OGMyMGIyNTYyNzJhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBIaWREcml2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3RhcEhpZERyaXZlci5oIgotCi0j
aWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWRvQ29uc3RhbnRzLmg+Ci0jaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
dXNpbmcgbmFtZXNwYWNlIGZpZG87Ci0KLUN0YXBIaWREcml2ZXI6Oldvcmtlcjo6V29ya2VyKFVu
aXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKLXsKLSAgICBtX2Nvbm5lY3Rpb24tPmluaXRpYWxpemUoKTsK
LX0KLQotQ3RhcEhpZERyaXZlcjo6V29ya2VyOjp+V29ya2VyKCkKLXsKLSAgICBtX2Nvbm5lY3Rp
b24tPnRlcm1pbmF0ZSgpOwotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6dHJhbnNh
Y3QoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJiByZXF1ZXN0TWVzc2FnZSwgTWVzc2FnZUNhbGxiYWNr
JiYgY2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpOwotICAg
IG1fc3RhdGUgPSBTdGF0ZTo6V3JpdGU7Ci0gICAgbV9yZXF1ZXN0TWVzc2FnZSA9IFdURk1vdmUo
cmVxdWVzdE1lc3NhZ2UpOwotICAgIG1fcmVzcG9uc2VNZXNzYWdlLnJlc2V0KCk7Ci0gICAgbV9j
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwotCi0gICAgLy8gSGlkQ29ubmVjdGlvbiBjb3Vs
ZCBob2xkIGRhdGEgZnJvbSBvdGhlciBhcHBsaWNhdGlvbnMsIGFuZCB0aGVyZW9mb3JlIGludmFs
aWRhdGUgaXQgYmVmb3JlIGVhY2ggdHJhbnNhY3Rpb24uCi0gICAgbV9jb25uZWN0aW9uLT5pbnZh
bGlkYXRlQ2FjaGUoKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQobV9yZXF1ZXN0TWVzc2FnZS0+
cG9wTmV4dFBhY2tldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKEhpZENvbm5l
Y3Rpb246OkRhdGFTZW50IHNlbnQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB3ZWFrVGhpcy0+d3JpdGUoc2VudCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ3RhcEhp
ZERyaXZlcjo6V29ya2VyOjp3cml0ZShIaWRDb25uZWN0aW9uOjpEYXRhU2VudCBzZW50KQotewot
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpXcml0ZSk7Ci0gICAgLy8gRklYTUUoMTkyMDYx
KQotICAgIExPR19FUlJPUigiU3RhcnQgd3JpdGluZyBkYXRhLiIpOwotICAgIGlmIChzZW50ICE9
IEhpZENvbm5lY3Rpb246OkRhdGFTZW50OjpZZXMpIHsKLSAgICAgICAgcmV0dXJuTWVzc2FnZShX
VEY6Om51bGxvcHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3JlcXVl
c3RNZXNzYWdlLT5udW1QYWNrZXRzKCkpIHsKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZWFk
OwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlZ2lzdGVyRGF0YVJlY2VpdmVkQ2FsbGJhY2soW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5yZWFkKGRhdGEpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fY29ubmVjdGlvbi0+c2VuZChtX3JlcXVlc3RNZXNzYWdlLT5wb3BOZXh0UGFja2V0
KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oSGlkQ29ubmVjdGlvbjo6RGF0YVNl
bnQgc2VudCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtU
aGlzLT53cml0ZShzZW50KTsKLSAgICB9KTsKLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3Jr
ZXI6OnJlYWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQotewotICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpSZWFkKTsKLSAgICAvLyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9S
KCJTdGFydCByZWFkaW5nIGRhdGEuIik7Ci0gICAgaWYgKCFtX3Jlc3BvbnNlTWVzc2FnZSkgewot
ICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGVGcm9tU2Vy
aWFsaXplZERhdGEoZGF0YSk7Ci0gICAgICAgIC8vIFRoZSBmaXJzdCBmZXcgcmVwb3J0cyBjb3Vs
ZCBiZSBmb3Igb3RoZXIgYXBwbGljYXRpb25zLCBhbmQgdGhlcmVmb3JlIGlnbm9yZSB0aG9zZS4K
LSAgICAgICAgaWYgKCFtX3Jlc3BvbnNlTWVzc2FnZSB8fCBtX3Jlc3BvbnNlTWVzc2FnZS0+Y2hh
bm5lbElkKCkgIT0gbV9yZXF1ZXN0TWVzc2FnZS0+Y2hhbm5lbElkKCkpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBoaWQgaW5pdCBwYWNrZXQ6ICVzIiwgbV9yZXNw
b25zZU1lc3NhZ2UgPyAid3JvbmcgY2hhbm5lbCBpZC4iIDogImJhZCBkYXRhLiIpOwotICAgICAg
ICAgICAgbV9yZXNwb25zZU1lc3NhZ2UucmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9yZXNwb25zZU1lc3NhZ2UtPmFk
ZENvbnRpbnVhdGlvblBhY2tldChkYXRhKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBwYXJzZSBhIGhpZCBjb250aW51YXRpb24gcGFja2V0LiIpOwotICAgICAgICAgICAgcmV0
dXJuTWVzc2FnZShXVEY6Om51bGxvcHQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKG1fcmVzcG9uc2VNZXNzYWdlLT5tZXNzYWdlQ29tcGxldGUoKSkg
ewotICAgICAgICAvLyBBIEtlZXBBbGl2ZSBjbWQgY291bGQgYmUgc2VudCBiZXR3ZWVuIGEgcmVx
dWVzdCBhbmQgYSByZXNwb25zZSB0byBpbmRpY2F0ZSB0aGF0Ci0gICAgICAgIC8vIHRoZSBhdXRo
ZW50aWNhdG9yIGlzIHdhaXRpbmcgZm9yIHVzZXIgY29uc2VudC4gS2VlcCBsaXN0ZW5pbmcgZm9y
IHRoZSByZXNwb25zZS4KLSAgICAgICAgaWYgKG1fcmVzcG9uc2VNZXNzYWdlLT5jbWQoKSA9PSBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZSkgewotICAgICAgICAgICAgbV9yZXNwb25z
ZU1lc3NhZ2UucmVzZXQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm5NZXNzYWdlKFdURk1vdmUobV9yZXNwb25zZU1lc3NhZ2UpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJldHVybk1lc3Nh
Z2UoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkKLXsKLSAgICAvLyBG
SVhNRSgxOTIwNjEpCi0gICAgTE9HX0VSUk9SKCJTdGFydCByZXR1cm5pbmcgZGF0YS4iKTsKLSAg
ICBtX3N0YXRlID0gU3RhdGU6OklkbGU7Ci0gICAgbV9jb25uZWN0aW9uLT51bnJlZ2lzdGVyRGF0
YVJlY2VpdmVkQ2FsbGJhY2soKTsKLSAgICBtX2NhbGxiYWNrKFdURk1vdmUobWVzc2FnZSkpOwot
fQotCi1DdGFwSGlkRHJpdmVyOjpDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCi0gICAgOiBtX3dvcmtlcihtYWtlVW5pcXVlUmVmPFdvcmtlcj4oV1RG
TW92ZShjb25uZWN0aW9uKSkpCi0gICAgLCBtX25vbmNlKGtIaWRJbml0Tm9uY2VMZW5ndGgpCi17
Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgUmVzcG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIEFTU0VSVChtX3N0YXRlID09
IFN0YXRlOjpJZGxlKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG9jYXRlQ2hhbm5lbDsKLSAg
ICBtX2NoYW5uZWxJZCA9IGtIaWRCcm9hZGNhc3RDaGFubmVsOwotICAgIG1fcmVxdWVzdERhdGEg
PSBXVEZNb3ZlKGRhdGEpOwotICAgIG1fcmVzcG9uc2VDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwotCi0gICAgLy8gQWxsb2NhdGUgYSBjaGFubmVsLgotICAgIC8vIEZJWE1FKDE5MjA2MSkK
LSAgICBMT0dfRVJST1IoIlN0YXJ0IGFsbG9jYXRpbmcgYSBjaGFubmVsLiIpOwotICAgIEFTU0VS
VChtX25vbmNlLnNpemUoKSA9PSBrSGlkSW5pdE5vbmNlTGVuZ3RoKTsKLSAgICBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlcyhtX25vbmNlLmRhdGEoKSwgbV9ub25jZS5zaXplKCkpOwotICAg
IGF1dG8gaW5pdENvbW1hbmQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIG1fbm9uY2UpOwotICAgIEFTU0VSVChpbml0Q29t
bWFuZCk7Ci0gICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmluaXRDb21tYW5kKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiBy
ZXNwb25zZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtU
aGlzLT5jb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChXVEZNb3ZlKHJlc3BvbnNlKSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgQ3RhcEhpZERyaXZlcjo6Y29udGludWVBZnRlckNoYW5uZWxBbGxv
Y2F0ZWQoT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYgbWVzc2FnZSkKLXsKLSAgICBBU1NFUlQo
bV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb2NhdGVDaGFubmVsKTsKLSAgICBpZiAoIW1lc3NhZ2UpIHsK
LSAgICAgICAgcmV0dXJuUmVzcG9uc2UoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBBU1NFUlQobWVzc2FnZS0+Y2hhbm5lbElkKCkgPT0gbV9jaGFubmVsSWQpOwotCi0gICAgYXV0
byBwYXlsb2FkID0gbWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsKLSAgICBBU1NFUlQocGF5
bG9hZC5zaXplKCkgPT0ga0hpZEluaXRSZXNwb25zZVNpemUpOwotICAgIC8vIFJlc3RhcnQgdGhl
IHRyYW5zYWN0aW9uIGluIHRoZSBuZXh0IHJ1biBsb29wIHdoZW4gbm9uY2UgbWlzbWF0Y2hlcy4K
LSAgICBpZiAobWVtY21wKHBheWxvYWQuZGF0YSgpLCBtX25vbmNlLmRhdGEoKSwgbV9ub25jZS5z
aXplKCkpKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZGF0YSA9
IFdURk1vdmUobV9yZXF1ZXN0RGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShtX3Jlc3BvbnNlQ2Fs
bGJhY2spXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+dHJhbnNhY3QoV1RGTW92ZShk
YXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVhZHk7Ci0gICAgYXV0byBpbmRleCA9IGtI
aWRJbml0Tm9uY2VMZW5ndGg7Ci0gICAgbV9jaGFubmVsSWQgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocGF5bG9hZFtpbmRleCsrXSkgPDwgMjQ7Ci0gICAgbV9jaGFubmVsSWQgfD0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBheWxvYWRbaW5kZXgrK10pIDw8IDE2OwotICAgIG1fY2hhbm5lbElkIHw9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4KytdKSA8PCA4OwotICAgIG1fY2hh
bm5lbElkIHw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXlsb2FkW2luZGV4XSk7Ci0gICAgLy8g
RklYTUUoMTkxNTM0KTogQ2hlY2sgdGhlIHJlc2V0IG9mIHRoZSBwYXlsb2FkLgotICAgIC8vIEZJ
WE1FKDE5MjA2MSkKLSAgICBMT0dfRVJST1IoIlN0YXJ0IHNlbmRpbmcgdGhlIHJlcXVlc3QuIik7
Ci0gICAgYXV0byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIG1fcmVxdWVzdERhdGEpOwotICAgIEFTU0VSVChjbWQp
OwotICAgIG1fd29ya2VyLT50cmFuc2FjdChXVEZNb3ZlKCpjbWQpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIHJlc3BvbnNlKSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKCF3
ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVl
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUocmVzcG9uc2UpKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChPcHRpb25h
bDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJiBtZXNzYWdlKQotewotICAgIEFTU0VSVChtX3N0YXRl
ID09IFN0YXRlOjpSZWFkeSk7Ci0gICAgQVNTRVJUKCFtZXNzYWdlIHx8IG1lc3NhZ2UtPmNoYW5u
ZWxJZCgpID09IG1fY2hhbm5lbElkKTsKLSAgICAvLyBGSVhNRSgxOTIwNjEpCi0gICAgTE9HX0VS
Uk9SKCJTdGFydCByZXR1cm5pbmcgdGhlIHJlc3BvbnNlLiIpOwotICAgIHJldHVyblJlc3BvbnNl
KG1lc3NhZ2UgPyBtZXNzYWdlLT5nZXRNZXNzYWdlUGF5bG9hZCgpIDogVmVjdG9yPHVpbnQ4X3Q+
KCkpOwotfQotCi12b2lkIEN0YXBIaWREcml2ZXI6OnJldHVyblJlc3BvbnNlKFZlY3Rvcjx1aW50
OF90PiYmIHJlc3BvbnNlKQotewotICAgIC8vIFJlc2V0IHN0YXRlIGJlZm9yZSBjYWxsaW5nIHRo
ZSByZXNwb25zZSBjYWxsYmFjayB0byBhdm9pZCBiZWluZyBkZWxldGVkLgotICAgIG1fc3RhdGUg
PSBTdGF0ZTo6SWRsZTsKLSAgICBtX3Jlc3BvbnNlQ2FsbGJhY2soV1RGTW92ZShyZXNwb25zZSkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVU
SE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMDUwMjY4OTRmZWZlMWU5NTNlMDM5ZDBjYzg4ZjM0NmRi
NWE0MjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVk
ZSAiSGlkQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRmlkb0hpZE1lc3NhZ2UuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gVGhlIGZvbGxvd2luZyBpbXBs
ZW1lbnRzIHRoZSBDVEFQIEhJRCBwcm90b2NvbDoKLS8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjdXNiCi0vLyBGU006IElkbGUgPT4gQWxs
b2NhdGVDaGFubmVsID0+IFJlYWR5Ci1jbGFzcyBDdGFwSGlkRHJpdmVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPEN0YXBIaWREcml2ZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdGFwSGlkRHJpdmVyKTsKLXB1YmxpYzoKLSAgICB1
c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChWZWN0b3I8dWludDhfdD4mJik+
OwotCi0gICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewotICAgICAgICBJZGxlLAotICAg
ICAgICBBbGxvY2F0ZUNoYW5uZWwsCi0gICAgICAgIFJlYWR5LAotICAgICAgICAvLyBGSVhNRSgx
OTE1MjgpCi0gICAgICAgIEJ1c3kKLSAgICB9OwotCi0gICAgZXhwbGljaXQgQ3RhcEhpZERyaXZl
cihVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4mJik7Ci0KLSAgICB2b2lkIHRyYW5zYWN0KFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gV29ya2VyIGlzIHRoZSBoZWxwZXIgdGhhdCBtYWludGFpbnMgdGhlIHRyYW5zYWN0aW9uLgot
ICAgIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5
MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3
Lmh0bWwjYXJiaXRyYXRpb24KLSAgICAvLyBGU006IElkbGUgPT4gV3JpdGUgPT4gUmVhZC4KLSAg
ICBjbGFzcyBXb3JrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V29ya2VyPiB7Ci0gICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
b3JrZXIpOwotICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgTWVzc2FnZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChPcHRpb25hbDxmaWRvOjpGaWRvSGlkTWVzc2FnZT4mJik+OwotCi0gICAgICAg
IGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90ICB7Ci0gICAgICAgICAgICBJZGxlLAotICAgICAg
ICAgICAgV3JpdGUsCi0gICAgICAgICAgICBSZWFkCi0gICAgICAgIH07Ci0KLSAgICAgICAgZXhw
bGljaXQgV29ya2VyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYmKTsKLSAgICAgICAgfldvcmtl
cigpOwotCi0gICAgICAgIHZvaWQgdHJhbnNhY3QoZmlkbzo6Rmlkb0hpZE1lc3NhZ2UmJiwgTWVz
c2FnZUNhbGxiYWNrJiYpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB3cml0ZShIaWRD
b25uZWN0aW9uOjpEYXRhU2VudCk7Ci0gICAgICAgIHZvaWQgcmVhZChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKTsKLSAgICAgICAgdm9pZCByZXR1cm5NZXNzYWdlKE9wdGlvbmFsPGZpZG86OkZpZG9I
aWRNZXNzYWdlPiYmKTsKLQotICAgICAgICBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwotICAgICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKLSAgICAgICAg
T3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7Ci0gICAgICAg
IE9wdGlvbmFsPGZpZG86OkZpZG9IaWRNZXNzYWdlPiBtX3Jlc3BvbnNlTWVzc2FnZTsKLSAgICAg
ICAgTWVzc2FnZUNhbGxiYWNrIG1fY2FsbGJhY2s7Ci0gICAgfTsKLQotICAgIHZvaWQgY29udGlu
dWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQoT3B0aW9uYWw8Zmlkbzo6Rmlkb0hpZE1lc3NhZ2U+JiYp
OwotICAgIHZvaWQgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoT3B0aW9uYWw8Zmlkbzo6
Rmlkb0hpZE1lc3NhZ2U+JiYpOwotICAgIHZvaWQgcmV0dXJuUmVzcG9uc2UoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotCi0gICAgVW5pcXVlUmVmPFdvcmtlcj4gbV93b3JrZXI7Ci0gICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpJZGxlIH07Ci0gICAgdWludDMyX3QgbV9jaGFubmVsSWQgeyBmaWRvOjpr
SGlkQnJvYWRjYXN0Q2hhbm5lbCB9OwotICAgIC8vIE9uZSByZXF1ZXN0IGF0IGEgdGltZS4KLSAg
ICBWZWN0b3I8dWludDhfdD4gbV9yZXF1ZXN0RGF0YTsKLSAgICBSZXNwb25zZUNhbGxiYWNrIG1f
cmVzcG9uc2VDYWxsYmFjazsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9ub25jZTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDBhMWM1ZjY0OTlhOWJkYTI2MDlhMjAwYmIzMDE0N2Y3Y2Q2ZmIzNC4uNmMy
ZTdhMmU0OTkwY2RhYjg3OGVhNTExYzZiNTBhODA1MDBhZWI0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDE1LDggKzEwMTUsNiBA
QAogCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjIyMEFFM0JE
NzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCAqLzsgfTsKIAkJNTc1OTdFQjkyMTgxMUQ5
QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk3RUI3MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJp
dmVyLmggKi87IH07CiAJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVu
dGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc1OTdFQkIyMTgxODQ4RjAwMzdGOTI0IC8qIEN0YXBIaWRBdXRoZW50aWNhdG9yLmggKi87IH07
Ci0JCTU3NTk3RUJFMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCQzIx
ODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRpY2F0b3IuY3BwICovOyB9OwotCQk1NzU5
N0VDMTIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VDMDIxODE4QkUyMDAzN0Y5MjQg
LyogQ3RhcEhpZERyaXZlci5jcHAgKi87IH07CiAJCTU3NzJGMjA2MjE3REJENkEwMDU2QkYyQyAv
KiBIaWRTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzcyRjIwNDIxN0RCRDZBMDA1NkJGMkMgLyogSGlkU2VydmljZS5oICovOyB9OwogCQk1
NzhEQzI5ODIxNTVBMDAyMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzhEQzI5NzIx
NTVBMDAxMDA3NEU4MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggKi87IH07CiAJ
CTU3QUM4RjUwMjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0FDOEY0RTIxN0ZFRUQ5MDA1NTQz
OEMgLyogSGlkQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtMTAzOCw2ICsxMDM2LDcgQEAKIAkJNTdE
Q0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREMxMjE0RjExNEMwMDE2Qjg0
NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggKi87IH07CiAJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0
NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDNTIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29u
bmVjdGlvbi5oICovOyB9OwogCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmggKi87IH07CisJCTU3RUIyRTNBMjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50
aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0VCMkUzODIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5oICovOyB9Owog
CQk1ODc3NDNBNjIxQzMwQkJFMDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg3NzQzQTQyMUMzMEFE
ODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxpc3QuZGIgKi87IH07CiAJCTU4RTk3N0RGMjFDNDlB
MDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThFOTc3REQyMUM0OUEwMDAwNUQ5MkE2
IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi87IH07CiAJCTVDMEIxNzc4MUU3Qzg4
MEUwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIxNzc0MUU3Qzg3
OUMwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKQEAgLTM0MDgsNiArMzQwNyw4IEBACiAJCTU3RENFREM2MjE0RjE4MzAwMDE2Qjg0NyAvKiBN
b2NrTG9jYWxDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xvY2FsQ29u
bmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzkyMTRGNEU0
MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrQXV0aGVudGljYXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTdEQ0VEQ0QyMTRGNTE2ODAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0VCMkUzODIxRTE5ODNF
MDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVMmZIaWRB
dXRoZW50aWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RUIyRTM5MjFF
MTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFUyZkhpZEF1dGhlbnRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBI
VFRQU1VwZ3JhZGVMaXN0LmRiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9IVFRQU1Vw
Z3JhZGVMaXN0LmRiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1OEU5
NzdEQzIxQzQ5OUZFMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OEU5NzdERDIxQzQ5QTAw
MDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MTUsOCArNTUxNiw4IEBACiAJCTJEMTU1MUE5MUY1QTlC
NDIwMDA2RTNGRSAvKiBSZW1vdGVMYXllclRyZWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8s
CiAJCQkJMkQxNTUxQUExRjVBOUJBNzAwMDZFM0ZFIC8qIGlvcyAqLywKKwkJCQlFNDA0OTA2RjIx
REU2NUQ3MDAzN0YwREIgLyogbWFjICovLAogCQkJCTFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAv
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi8sCiAJCQkJMEZGMjRBMkYxODc5
RTRGRTAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJMUFCMTZBREYxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0gKi8sCkBAIC02NzA0LDE1ICs2NzA1LDE3IEBACiAJCQluYW1lID0g
RnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTU3NTk3RUJG
MjE4MTg0QjIwMDM3RjkyNCAvKiBmaWRvICovID0geworCQk1NzU5N0VCRjIxODE4NEIyMDAzN0Y5
MjQgLyogRmlkbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJNTc1OTdFQkMyMTgxODQ4RjAwMzdGOTI0IC8qIEN0YXBIaWRBdXRoZW50aWNhdG9yLmNwcCAq
LywKIAkJCQk1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRpY2F0b3Iu
aCAqLywKIAkJCQk1NzU5N0VDMDIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAg
Ki8sCiAJCQkJNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLywK
KwkJCQk1N0VCMkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5jcHAg
Ki8sCisJCQkJNTdFQjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3Iu
aCAqLywKIAkJCSk7Ci0JCQlwYXRoID0gZmlkbzsKKwkJCXBhdGggPSBGaWRvOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJNTc2MDgyOEEyMDI5ODRDOTAwMTE2Njc4IC8qIFdl
YkF1dGhlbnRpY2F0aW9uICovID0gewpAQCAtNjcyOSw3ICs2NzMyLDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTdEQ0VEOUUyMTQ4RjlEMTAwMTZCODQ3IC8q
IENvY29hICovLAotCQkJCTU3NTk3RUJGMjE4MTg0QjIwMDM3RjkyNCAvKiBmaWRvICovLAorCQkJ
CTU3NTk3RUJGMjE4MTg0QjIwMDM3RjkyNCAvKiBGaWRvICovLAogCQkJCTU3RENFREJEMjE0QzlG
QTkwMDE2Qjg0NyAvKiBNb2NrICovLAogCQkJCTU3RENFREE0MjE0OUU2NEEwMDE2Qjg0NyAvKiBB
dXRoZW50aWNhdG9yLmNwcCAqLywKIAkJCQk1N0RDRUQ4QjIxNDg1QkQ3MDAxNkI4NDcgLyogQXV0
aGVudGljYXRvci5oICovLApAQCAtOTMxNSw2ICs5MzE4LDcgQEAKIAkJCQkxQUFGMjYzOTE0Njg3
QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRjA1RDg3MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRjgzMzY4NjFGQTEzOURGMDBD
NkUwODAgLyogVG91Y2hCYXJNZW51RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdFQjJFM0Ey
MUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTVCRTFBOTFENTUyOTM0MDBERDdDNjggLyogVUlHYW1lcGFkUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA3NDYsOCArMTA3NTAsNiBAQAogCQkJCTJEOTJBNzg2MjEy
QjZBQjEwMEY0OTNGRCAvKiBDaGlsZFByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFG
QUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzU5N0VCRTIxODE4NDkwMDAzN0Y5MjQgLyogQ3Rh
cEhpZEF1dGhlbnRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTc1OTdFQzEyMTgxOEJF
MjAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZWQzYTRiNGI5MjA5OTZlN2U5ZDcwNGUzODYyZTE3NWM1NzFk
YjRmYS4uYTJmMDNiNjEwZDdlMDE1NGZiNTZlNzE3YWY4ODdlNDU4MGY2MWE4ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDE5LTAxLTA3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkF1dGhOXSBTdXBwb3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKyAgICAgICAgMSkgYWRkcyBzdXBw
b3J0IGZvciBVMkYgbW9ja2luZyBtZWNoYW5pc207CisgICAgICAgIDIpIHVwZGF0ZXMgdGVzdHMg
dG8gcmVmbGVjdCBVMmZDb21tYW5kQ29uc3RydWN0b3IgY2hhbmdlcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvVGVzdERhdGEuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKwogMjAxOS0wMS0wNyAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExlYWsgb2YgU2Nyb2xsQ29tcGxl
dGlvbkNhbGxiYWNrRGF0YSAoMTYgYnl0ZXMpIGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dCBydW5uaW5nIFdlYktpdCBsYXlvdXQgdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcAppbmRleCBkZTNmMjA5Mjkz
MzA5YzRiYmMyMzIwMDg2YjRhYWY5NjBkZWM0YjhhLi5hN2RjYWIwYjc2YTcyOGY4OTJlN2I0Mzkw
ZmM0ODVhYzhlNzE3ZjhiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCkBAIC01MjAsNyArNTIwLDcgQEAgVEVTVChD
VEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VJbmNvcnJlY3RSZWdpc3RlclJlc3BvbnNlRGF0YTUp
CiAvLyBUZXN0cyB0aGF0IFUyRiBhdXRoZW50aWNhdG9yIGRhdGEgaXMgcHJvcGVybHkgc2VyaWFs
aXplZC4KIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkK
IHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6
OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RT
aWduUmVzcG9uc2UoKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2Uo
VGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCks
IGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CiAgICAgQVNTRVJUX1RSVUUocmVzcG9uc2UpOwogICAg
IEVYUEVDVF9FUShyZXNwb25zZS0+cmF3SWQtPmJ5dGVMZW5ndGgoKSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIEVYUEVDVF9FUShtZW1jbXAocmVzcG9uc2UtPnJh
d0lkLT5kYXRhKCksIFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpLCAwKTsKQEAgLTUzMywyNyArNTMzLDI3IEBAIFRFU1QoQ1RB
UFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlU2lnblJlc3BvbnNlRGF0YSkKIAogVEVTVChDVEFQUmVz
cG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aE51bGxLZXlIYW5kbGUpCiB7Ci0gICAgYXV0
byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1Bh
cnR5SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOworICAgIGF1
dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5
SWQsIFZlY3Rvcjx1aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCkpOwogICAgIEVYUEVD
VF9GQUxTRShyZXNwb25zZSk7CiB9CiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNl
VTJmU2lnbldpdGhOdWxsUmVzcG9uc2UpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9t
VTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50
aWFsUmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAgYXV0byByZXNwb25zZSA9
IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENy
ZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZlY3Rvcjx1aW50OF90PigpKTsKICAgICBFWFBFQ1RfRkFM
U0UocmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNp
Z25XaXRoQ29ycnVwdGVkQ291bnRlcikKIHsKICAgICAvLyBBIHNpZ24gcmVzcG9uc2Ugb2YgbGVz
cyB0aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRl
cygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDMpKTsKKyAgICBhdXRvIHJlc3BvbnNl
ID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0
Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0
LCBUZXN0UGFyc2VVMmZTaWduV2l0aENvcnJ1cHRlZFNpZ25hdHVyZSkKIHsKICAgICAvLyBBIHNp
Z24gcmVzcG9uc2Ugbm8gbW9yZSB0aGFuIDUgYnl0ZXMuCi0gICAgYXV0byByZXNwb25zZSA9IHJl
YWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RD
cmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsK
KyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlp
bmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRl
ZFNpZ25SZXNwb25zZSg1KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCmluZGV4
IDM4ZTAzYzg4NmI1OTY5YWNhZGVhOGQzZTUwMTcwYmNlMjZkMDdkOGMuLmI2ODJmYjdjMjg3YzMw
ZDMwZmRjMGI1NDBiYTY5NTIyNGUzMmE0MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKQEAgLTUxLDcgKzUxLDcgQEAgY29uc3RleHBy
IGNoYXIga1JlbHlpbmdQYXJ0eUlkW10gPSAiYWNtZS5jb20iOwogCiBjb25zdGV4cHIgdWludDhf
dCBrVTJmUmVnaXN0ZXJDb21tYW5kQXBkdVtdID0gewogICAgIC8vIENMQSwgSU5TLCBQMSwgUDIg
QVBEVSBpbnN0cnVjdGlvbnMKLSAgICAweDAwLCAweDAxLCAweDAwLCAweDAwLAorICAgIDB4MDAs
IDB4MDEsIDB4MDMsIDB4MDAsCiAgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRlcyBpbiBiaWcg
ZW5kaWFuIG9yZGVyLgogICAgIDB4MDAsIDB4MDAsIDB4NDAsCiAgICAgLy8gQ2hhbGxlbmdlIHBh
cmFtZXRlciAtLSBzZWUga0NsaWVudERhdGFIYXNoCkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3Rl
eHByIHVpbnQ4X3Qga1UyZkNoZWNrT25seVNpZ25Db21tYW5kQXBkdVtdID0gewogCiBjb25zdGV4
cHIgdWludDhfdCBrVTJmRmFrZVJlZ2lzdGVyQ29tbWFuZFtdID0gewogICAgIC8vIENMQSwgSU5T
LCBQMSwgUDIgQVBEVSBpbnN0cnVjdGlvbnMKLSAgICAweDAwLCAweDAxLCAweDAwLCAweDAwLAor
ICAgIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDAsCiAgICAgLy8gRGF0YSBsZW5ndGggaW4gMyBieXRl
cyBpbiBiaWcgZW5kaWFuIG9yZGVyLgogICAgIDB4MDAsIDB4MDAsIDB4NDAsCiAgICAgLy8gQm9n
dXMgY2hhbGxlbmdlIHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggN2M4MjEzZWRlYmJiYzNhNjNlZWQ4
MzhlZWU1ZmYxMTgzYTU4YTNkZC4uMjRkMzQwZjAwNmVkNThjMzBmNWM3MTM4OTAxMTg2NjU4YTE1
MmMyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0yNTA5LDEwICsyNTA5LDM2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3Vy
YXRpb25WCiAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXlsb2FkQmFzZTY0UHJv
cGVydHlOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicGF5bG9hZEJh
c2U2NCIpKTsKICAgICAgICAgSlNWYWx1ZVJlZiBwYXlsb2FkQmFzZTY0VmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGhpZCwgcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFtZS5nZXQo
KSwgMCk7CiAgICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHBheWxvYWRC
YXNlNjRWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVl
KSkgewotICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgcGF5bG9hZEJh
c2U2NFZhbHVlKSkKKyAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQXJyYXkoY29udGV4dCwgcGF5
bG9hZEJhc2U2NFZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IEpTT2JqZWN0UmVmIHBheWxvYWRCYXNlNjQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcGF5
bG9hZEJhc2U2NFZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgICAgIHN0YXRpYyBhdXRvIGxlbmd0
aFByb3BlcnR5ID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIp
KTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlID0gSlNP
YmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBwYXlsb2FkQmFzZTY0LCBsZW5ndGhQcm9wZXJ0eS5n
ZXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0
LCBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0cyA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlD
cmVhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHBheWxvYWRCYXNlNjRMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBwYXlsb2FkQmFzZTY0TGVuZ3Ro
VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5
bG9hZEJhc2U2NExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBwYXls
b2FkQmFzZTY0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBwYXls
b2FkQmFzZTY0LCBpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc1N0
cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShwYXlsb2FkQmFzZTY0
cy5nZXQoKSwgdG9XSyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRC
YXNlNjRWYWx1ZSwgMCkpLmdldCgpKS5nZXQoKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIGhpZEtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlBheWxvYWRCYXNlNjQiKSB9KTsKLSAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQodG9X
SyhhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSwg
MCkpLmdldCgpKSk7CisgICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHBheWxvYWRCYXNlNjRz
KTsKKyAgICAgICAgfQorCisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBpc1UyZlBy
b3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImlzVTJmIikp
OworICAgICAgICBKU1ZhbHVlUmVmIGlzVTJmVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIGhpZCwgaXNVMmZQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOworICAgICAgICBpZiAoIUpT
VmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBpc1UyZlZhbHVlKSAmJiAhSlNWYWx1ZUlzTnVsbChj
b250ZXh0LCBpc1UyZlZhbHVlKSkgeworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFu
KGNvbnRleHQsIGlzVTJmVmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJvb2wgaXNVMmYgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGlzVTJmVmFsdWUpOwor
ICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQoeyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiSXNVMmYiKSB9KTsKKyAgICAgICAgICAgIGhpZFZhbHVlcy5hcHBlbmQoYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNVMmYpKS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ga2VlcEFsaXZlUHJvcGVydHlOYW1lKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygia2VlcEFsaXZlIikpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2M2Vh
MzZiYzk4YmUwZDc0YzBlODkzMTZiMjAwODY3ZjUzNDhlYzUuLjJiODk4ZGJhZDViNTZlYzlhYzFl
MDgzZGM3NDZlYjM4OTU1ZmIwOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOS0wMS0wNyAg
Smlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRoTl0g
U3VwcG9ydCBVMkYgSElEIEF1dGhlbnRpY2F0b3JzIG9uIG1hY09TCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1MzUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MTAyMDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJlc2lkaW5nIGFkZGluZyB0ZXN0cyBmb3IgVTJGIGF1dGhlbnRpY2F0b3JzLCBp
dCBhbHNvIGNoYW5nZXMgcGF5bG9hZEJhc2U2NCBmcm9tCisgICAgICAgIGEgc3RyaW5nIHRvIGEg
dmVjdG9yIG9mIHN0cmluZ3MuIE5ldyB0ZXN0cyBhcmUgc2tpcHBlZCBmb3IgaU9TLgorCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYt
c2lsZW50Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNz
LXUyZi5odHRwcy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwuCisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUy
Zi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJl
LXUyZi5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5o
dHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisgICAgICAgICog
cGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTAxLTA3ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXRUZXN0cy9odHRwL3dw
dC9mZXRjaC9jc3AtcmVwb3J0cy1ieXBhc3MtY3NwLWNoZWNrcy5odG1sIGlzIGZsYWt5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJl
Lmh0dHBzLmh0bWwKaW5kZXggZTI0NDA1ZmFmZTdhOWY3N2JiMzA3NDIxNjJlMGIxODg4NGNhYWZk
MS4uYzQ2ZWUzOTEzOGYwZWZlY2Y3NDEyOTZlZGFlN2Y5MzI4YTU0Y2U5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0
cHMuaHRtbApAQCAtNjQsNyArNjQsNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5
bG9hZEJhc2U2NDp0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFu
bmVsLWlkIiwgcGF5bG9hZEJhc2U2NDpbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0g
fSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucyksICJVbmtub3duIGludGVy
bmFsIGVycm9yLiBFcnJvciBjb2RlOiAtMSIpOwogICAgIH0sICJDVEFQIEhJRCB3aXRoIHJlcXVl
c3Q6Om1zZyBzdGFnZSB3cm9uZyBjaGFubmVsIGlkIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sCmluZGV4IGRiMDJkNTQxOGE2
YzA1YzM4NGFlNWE4MjI2ZjViZjI5OWIzYWU4N2UuLjhlNWQwOTVlNWZkOTgzZmFhYWM0ZDdlM2E0
NjJiMGNjZGQ5N2Q2MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0dHBzLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAog
ICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29u
ZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVy
cm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQs
IGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVh
dGlvbk1lc3NhZ2VCYXNlNjRdLCBrZWVwQWxpdmU6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRl
ZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7
CkBAIC0zMCw3ICszMCw3IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0
Q3JlYXRpb25NZXNzYWdlQmFzZTY0LCBmYXN0RGF0YUFycml2YWw6IHRydWUgfSB9KTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2Vz
cyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgZmFzdERhdGFB
cnJpdmFsOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtMzksNyArMzksNyBAQAogCiAg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9y
OiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2
NCwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JE
YXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpAQCAtNDgsNyArNDgsNyBAQAogCiAgICAg
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAi
d3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJF
cnJvckRhdGE6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAg
YXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC01Nyw3ICs1Nyw3IEBACiAK
ICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJy
b3I6ICJ3cm9uZy1ub25jZSIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFn
ZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JE
YXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhp
ZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5k
ZXggYjk5NTNmOWY1YjNhNTU2ZjFiNTJiYWI1MmI0YjljMGJjOTg3ZGUzOC4uNjYwMDRhMzIxNTNl
NjU0NGNiMDg4NmZmODRhNmY5MWVkZDY0NjU2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1z
aWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCkBA
IC0yMiw3ICsyMiw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNl
NjQ6IHRlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQ
YXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWhpZC5odHRwcy5odG1sCmluZGV4IDJkZGU2ZDA5YWExMmI5MGJiYTcwYTRmZjFhNGY5MTRhZWU3
YzlkNTAuLmYxNjNhMzk2ZjJhZGQ5Mzg5MjhiZmZkMzc2MWVmNTdmNGFmY2RkMzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0
bWwKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15TWVz
c2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IC0xIik7
CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsaWNpb3Vz
IHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2M2I3YTI4MjVmYmE3NzI2NDM1
N2YxNGMzM2ZhNDg0ZDY2MTVkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2ls
ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKworUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQg
ZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTQxNzk5OGJjNzE4NzE0YTk4ZDMwYTU0ODcyMjVmMTBiY2IyNmY2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAg
LTAsMCArMSwxNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlv
biBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0
aCBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxl
LmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAg
ICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAg
IHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNp
b3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsK
KyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3Jt
ZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUy
RiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAg
ICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0gewor
ICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBs
ZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXls
b2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNOb3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
cmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBk
dUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhh
bXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0s
CisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAg
ICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBo
aWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91
cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJy
b3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRp
bWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICAvLyBNYXRjaCB0aGUgc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbC4K
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLCAvLyBUaGUgY29udGVudCBkb2Vzbid0IG1h
dHRlci4KKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAg
ICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1
cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9y
OiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RV
MmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNv
bmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNy
ZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNl
ciBwcmVzZW5jZS4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDYzYjdhMjgyNWZiYTc3MjY0MzU3ZjE0YzMzZmE0ODRkNjYxNWRjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBA
CisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQg
QVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNw
b25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBj
cmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50
aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0
Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4g
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTdkOWU4OGEwNmJlZDQ2YzdkNGZkODVlMTYwMWNlMmFl
Y2Y0MjNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCkBAIC0w
LDAgKzEsMTU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24g
QVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBmYWlsdXJlIGNhc2VzIHdpdGgg
YSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5j
b20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAg
IGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBw
dWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRoZSBB
UERVIHJlc3BvbnNlLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3du
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3Qg
cGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJlc3BvbnNl
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0
ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3Ig
Y29kZTogMjc5MDQiKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJK
b2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50
OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNy
ZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQs
IHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJv
ciBjb2RlOiAyNzkwNCIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIp
OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3Jl
ZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwg
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMg
YW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNh
dG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZp
cnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKKworICAgIC8vIE1hdGNoIHRoZSBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsLgorICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxl
c2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxz
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRp
YWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0gLy8gVGhlIGNvbnRlbnQgZG9lc24ndCBtYXR0ZXIu
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9
IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBj
cmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0
IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUu
Y29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAg
ICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05v
dFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFs
aWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0
IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVk
ZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRj
aGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggNWQ5M2I4MDdhNDRjNTM3MzRhN2Y1ZDgxMWRmNjAx
MzU2MmMwNWM3Yy4uMGQ3OWE5YWQ5YTZiOTg0NzRjNzViZmMxM2Q1OGMxZGUwNzQxYWE2NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0
cHMuaHRtbApAQCAtNyw3ICs3LDcgQEAKIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNv
bmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVu
dCBjb25maWd1cmF0aW9uLgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9h
ZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCB9IH0pOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0gfSB9KTsKIAogICAgIGZ1bmN0aW9uIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41N2IyNjE3ZmE4ODdmNzEzMWMyYzBkOGQyMzlhODk3OWJiM2M0ZTVmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVt
IG9wdGlvbnMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNsdWRlQ3JlZGVudGlhbHMgaW4gYSBtb2NrIHUy
ZiBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBleGNsdWRlQ3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAyIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRlc3Qgb2YgdXNlciBw
cmVzZW5jZSBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWFiMThkMTdkYjU4ODY5ODE2NjgzZTg1ZmIwMzNjOTgwOGM4NDliMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGlj
YXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBm
dW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sg
cmVzcG9uc2UKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3Jl
ZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOwor
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3
SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNs
aWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1U
SXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFz
c2VydF90aHJvd3MoIk5vdFN1cHBvcnRlZEVycm9yIiwgKCkgPT4geyBjcmVkZW50aWFsLmdldENs
aWVudEV4dGVuc2lvblJlc3VsdHMoKSB9KTsKKworICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlv
bgorICAgICAgICBjb25zdCBhdHRlc3RhdGlvbk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRp
YWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3QpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0
dGVzdGF0aW9uT2JqZWN0LmZtdCwgImZpZG8tdTJmIik7CisgICAgICAgIC8vIENoZWNrIGF1dGhE
YXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25P
YmplY3QuYXV0aERhdGEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmco
YXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0
YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRl
ciwgMCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5h
YWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5jcmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIC8vIENoZWNrIGZpZG8tdTJmIGF0
dGVzdGF0aW9uCisgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1
YmxpY0tleSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0
bXQueDVjLmxlbmd0aCwgMSk7CisgICAgfQorCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1
ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRl
bnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAg
IH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmlt
dW0gb3B0aW9ucyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisg
ICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6
TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlh
bElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIs
IGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVz
cG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVk
ZW50aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
bG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRV
MiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElk
QmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwgLy8gVGhlIGNvbnRlbnQgZG9lc24ndCBtYXR0ZXIuCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9u
c2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRv
ci4gMiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2hu
IEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFw
cGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVk
UGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAg
ICAgdGltZW91dDogNTAwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6
IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRl
c3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9j
ayB1MmYgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhp
ZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXgg
ZTM2MzZjM2U3NWI3ZDYwMTYxZDUwMGIyMTJlZjE1ODg0NjA3YzAyNS4uMTQ0YmE5ZDg5YTliZDg2
MDZkOTQ0NzgwZDQ0YmJhMWY5NTIwMjMyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQu
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCkBAIC0xMyw3ICsx
Myw3IEBACiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3RE
dW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGlj
aW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFz
ZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1h
bGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4
IGVjNmIwYTg4ZmE5YTQyNzg0ODNiNDAwNjExYzdmOTlkMjg4NWZmN2IuLjVhYzIxMzkwYTI1MmE2
M2FhMzc1OTM0NWJkNTEyMDM5Zjg3MzVmOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAg
ICAgfTsKIAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRC
YXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlVua25vd24gaW50ZXJu
YWwgZXJyb3IuIEVycm9yIGNvZGU6IC0xIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNh
dG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEw
NjE0NWJkNTVmYWM1ZDQ2OWI3ZTM4YWU5MDVhOTAxOGZiZWU0ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKwor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJl
c3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiAyIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1m
YWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTdjZDhhNWJiOTFkODFi
MTQ3NmFkZDdjNDJkMDEzNjNiMGQ2YzdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1z
aWxlbnQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRs
ZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBm
YWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2
NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWls
dXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAg
ICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRh
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5
IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAg
ICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdE
YXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJh
c2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRp
bWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBu
byBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4g
MiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMDYxNDViZDU1
ZmFjNWQ0NjliN2UzOGFlOTA1YTkwMThmYmVlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
dTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJlc3BvbnNlIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNo
ZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjQzNWI1ZjVjN2YwMWU2NmQyMTgzMTVjZTAwOWEwY2E2ZDFiZjJmYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50
aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxv
d0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNl
NjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRo
ZSBVMkYgc2lnbiByZXNwb25zZS4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
YWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRl
bnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0
aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxv
d0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZy
b20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRv
ci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRj
aGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlk
Lmh0dHBzLmh0bWwKaW5kZXggNjdkYjgzMTAwN2Y3YTJjNTA0NWQ3MmRhZTNlMWNkODAwMWNjMjRk
MC4uNzQzNjI0NjZlM2ZiNTM4MTcxMWI5Mjk3NDQ0N2E1NjdmYzE5M2ZlOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNiw3
ICs2LDcgQEAKIDxzY3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRl
c3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
LgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogdGVzdEFz
c2VydGlvbk1lc3NhZ2VCYXNlNjQgfSB9KTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3Nl
cnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3Jl
ZGVudGlhbCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNGEzOWVhYTI4
ZDVhNDRjYzRhYzA2Njk3OTI0Mzk2NGE5YjQyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
dTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1v
cmUgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0ZXN0IG9mIHVzZXIgcHJlc2VuY2Ug
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNmFhZmNjZDAx
M2MyMmFkY2Q0M2UwYTM1ODU3MGUxMDg5MzIwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
dTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+
V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gc3Vj
Y2VzcyBjYXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAor
ICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlk
KSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2
NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpT
T04pLCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmln
aW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
cmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUsIG51bGwpOworCisgICAgICAgIC8vIENoZWNr
IGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVp
bnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5
NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFk
OTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCA1OSk7CisgICAgfQorCisgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2Uo
Ik1USXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNl
NjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAg
ICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5p
bXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlz
ZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1U
SXpORFUyIiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0s
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50
aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNz
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbW9yZSBhbGxvdyBj
cmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJ
ek5EVTIiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogNTAwCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdl
OiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNw
b25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGVzdCBvZiB1c2VyIHBy
ZXNlbmNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA4M2Y0
YjQ4YWRjZjI1YjcwMDRlOTcwMWY0N2YwMTNmOGEwNTlhZmFiLi5mNjA5ODZiNDcyMjdlY2VkMzFh
MThmMjJjMGM5MWY5NGFjNGZhMWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtNjksNiArNjksMzQgQEAgY29uc3QgdGVzdEFzc2Vy
dGlvbk1lc3NhZ2VCYXNlNjQgPQogICAgICJaNTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dM
aDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZUdXVCV2dCIiArCiAgICAgIjQvRjBWQjdEbFVWTTA5
SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKICAg
ICAiUW9KMUw3RmU2NEc5dUJjPSI7Citjb25zdCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9u
c2VCYXNlNjQgPSAia0FBPSI7Citjb25zdCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlS
ZXNwb25zZUJhc2U2NCA9ICJiUUE9IjsKK2NvbnN0IHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJl
c3BvbnNlQmFzZTY0ID0gImFvQT0iOworY29uc3QgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0
aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0ID0gImFZVT0iOworY29uc3QgdGVzdFUyZlJlZ2lzdGVy
UmVzcG9uc2UgPQorICAgICJCUVRvZGlXSmJ1VGtiY0F5ZG02QWg1WXZOdCtkL290V2Z6ZGpBVnNa
a0tZT0ZDZmVZUzFtUVl2YUdWQllIcnhjIiArCisgICAgImpCMnRjUXl4VENMNHlYQkY5R0V2c2d5
UlFENjlpYjkzN0ZDWFZlNmNKalh2cXF4N0s1eGM3eGMydzNGOXBJVTAiICsKKyAgICAieU1hMlZO
Zi9sRjlRdGN4T2VBVmIzVGxyWlBlTm9zWDVZZ0RNMUJYTkNQNUNBRGd3Z2dKS01JSUJNcUFEQWdF
QyIgKworICAgICJBZ1FFYklnaU1BMEdDU3FHU0liM0RRRUJDd1VBTUM0eExEQXFCZ05WQkFNVEkx
bDFZbWxqYnlCVk1rWWdVbTl2IiArCisgICAgImRDQkRRU0JUWlhKcFlXd2dORFUzTWpBd05qTXhN
Q0FYRFRFME1EZ3dNVEF3TURBd01Gb1lEekl3TlRBd09UQTAiICsKKyAgICAiTURBd01EQXdXakFz
TVNvd0tBWURWUVFERENGWmRXSnBZMjhnVlRKR0lFVkZJRk5sY21saGJDQXlORGt4T0RJeiIgKwor
ICAgICJNalEzTnpBd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFROHlya3N5NWNv
ZnVqbU9VTitJZnpXIiArCisgICAgInR2RmxzdFdqODlzVEhUSEJhM1FydEhiWTBlbVFnT3RVYkp1
OTlWYm1JUS9VSjRXSm5uak1XSjYrTVE5czI1LzAiICsKKyAgICAib3pzd09UQWlCZ2tyQmdFRUFZ
TEVDZ0lFRlRFdU15NDJMakV1TkM0eExqUXhORGd5TGpFdU1qQVRCZ3NyQmdFRSIgKworICAgICJB
WUxsSEFJQkFRUUVBd0lFTURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQW41c0ZJa2k4VFBRc3ha
a2Z5cXVzIiArCisgICAgIm0yVWJ2bHZjM0k3d3JTd2NIL3MyMFljVjFDNTRza2tpVDVMSDV1ZWdY
RW53NStUSWdiOHVsUFJlU2lHRFBYUlciICsKKyAgICAiaFIwUGJCUmFLVlFNaDA4d2tzazB0RDBp
SzRsaXdQUVF6dkhiZFlrcThSYTBTcGIxMDFyZW80SXZ4eFJ2WUFRNCIgKworICAgICJXOHRwdGx5
WjUrdHBHWGhuQThEWXpVSG85MXpLUktxS3R5V3Rqbm1mODZocGFtOGJKbGJtTWJIa0FZUEFqOXBU
IiArCisgICAgIitrcVBoYUJXazVSSzRYbWhNNTBBTFJYS3ZZRUFrT3h5THZYZStaWmFOeDFCWFdK
TGFLSndmSzJYdk4wWGhhK1giICsKKyAgICAiNGxqelBmVnFBeHFnTlcyT2pWNjhyY2RPQnhZMnhy
RVFyT1hNbTVEZjZzcm1RUDhic1BIK1hiVHY5NmxmQmdjeiIgKworICAgICI5VEJGQWlBeVIzbkdq
ek9BS0lvUmw3WUpYM3B1dWJHeHdTZjJhdUVxbWY2Rk11d2p1UUloQU9PVkZxeE5ZZTVrIiArCisg
ICAgIkJFMVF0QldtcE5UWVM2YllsY3RhdDZHcWZRZ2Q0MEg2a0FBPSI7Citjb25zdCB0ZXN0VTJm
Q3JlZGVudGlhbElkQmFzZTY0ID0KKyAgICAiUHIySnYzZnNVSmRWN3B3bU5lLXFySHNybkZ6dkZ6
YkRjWDJraFRUSXhyWlUxXy1VWDFDMXpFNTRCVnZkT1d0ayIgKworICAgICI5NDJpeGZsaUFNelVG
YzBJX2tJQU9BIjsKK2NvbnN0IHRlc3RVMmZTaWduUmVzcG9uc2UgPQorICAgICJBUUFBQURzd1JB
SWdlOTRLVXF3ZlRJc240QU9qY00xbXBNY1JqZEl0VkVlRFgwVzVuR2hDUC9jQ0lEeFJlMGVIIiAr
CisgICAgImY0VjRMZUVBaHFlRDBlZmZUalk1NTNIMTlxK2pXcTFUYzRXT2tBQT0iOwogCiBjb25z
dCBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQvd2ViYXV0aG4vcmVzb3VyY2VzLyI7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2ZjAwMWU4
YjUyNjc0OGE2MTViNGU5MmRlNmUyZDYzZmE2NGVmOGRkLi41MTE2NGU3YzczMjM5ZTA4MTUwYjI3
NzMzNzczNTIwNDZjYWQwZjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMzI3LDYgKzEzMjcsMTIgQEAgaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIFsgU2tp
cCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
aGlkLXNpbGVudC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMu
aHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1s
IFsgU2tpcCBdCitodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgWyBTa2lw
IF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sIFsgU2tpcCBdCiAKICMgRklYTUU6IFVu
c2tpcCB0aGVzZSB0ZXN0cyBvbmNlIHdlIGhhdmUgdGhlIGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzQ0OTMwMTE5Pi4KIGZhc3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNh
dG9yLXNob3VsZC1iZS12aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3
b3JkLWJ1dHRvbi5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358633</attachid>
            <date>2019-01-08 13:44:16 -0800</date>
            <delta_ts>2019-01-08 14:33:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191535-20190108134414.patch</filename>
            <type>text/plain</type>
            <size>106710</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNiYzUxZDg0OGE2NmU0
YjVkNTZhNzYwNjQwNzQxMDViYzIzYjBlZi4uM2M0ODUzZGUxNmY4YmVmY2I3Nzc2MDRjMjZhY2Fk
ODE1ODU2NmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTA3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBw
b3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIFUyZkNvbW1hbmRDb25zdHJ1Y3RvciB0byBwcm9kdWNl
IHJlZ2lzdGVyIGNvbW1hbmRzIHdpdGgKKyAgICAgICAgZW5mb3JjaW5nIHRlc3Qgb2YgdXNlciBw
cmVzZW5jZS4gT3RoZXJ3aXNlLCBhdXRoZW50aWNhdG9ycyB3b3VsZCBzaWxlbnRseQorICAgICAg
ICBnZW5lcmF0ZSBjcmVkZW50aWFscy4gSXQgYWxzbyByZW5hbWVzIHJlYWRGcm9tVTJmU2lnblJl
c3BvbnNlIHRvCisgICAgICAgIHJlYWRVMmZTaWduUmVzcG9uc2UuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYtc2lsZW50Lmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLXUyZi5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChmaWRvOjpXZWJDb3JlOjpjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHA6Cisg
ICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRG
cm9tVTJmU2lnblJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaDoKKwogMjAxOS0wMS0wNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MGY5
YjQzMTk5OGU5NDM3MmMwYmYxNmM1M2E4YmI5ZmFhZDJmNzUuLmU5NGE2ZjQ1MDY0OTVkZmVlM2Jj
NzlmYzc1MjQxZjY5YjA1Mzk3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTktMDEt
MDcgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aE5dIFN1cHBvcnQgVTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHN1cHBvcnQgZm9yIFUyRiBh
dXRoZW50aWNhdG9ycywgYW5kIGVuYWJsZXMgaXQgZm9yIGhpZCBkZXZpY2VzLgorICAgICAgICBJ
dCBmb2xsb3dzIHRoZSBDVEFQIHNwZWMgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3RzIHRvIFUyRiBj
b21tYW5kcyBhbmQgcmV0dXJuIHRoZSByZXNwb25zZXM6CisgICAgICAgIGh0dHBzOi8vZmlkb2Fs
bGlhbmNlLm9yZy9zcGVjcy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0
aGVudGljYXRvci1wcm90b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWludGVyb3BlcmFi
aWxpdHkKKyAgICAgICAgTW9zdCBvZiB0aGUgcGFydHMgYXJlIGRvbmUgYmVmb3JlIHRoaXMgcGF0
Y2gsIHRoaXMgcGF0Y2ggZm9jdWVzIG9uOiA3LjIuMiBhbmQgNy4zLjIuCisKKyAgICAgICAgQmVz
aWRlcyBpbXBsZW1lbnRpbmcgdGhlIFUyZkhpZEF1dGhlbnRpY2F0b3IsIHRoaXMgcGF0Y2ggYWxz
byBhZGRzIHN1cHBvcnQgaW4gdGhlIG1vY2tpbmcKKyAgICAgICAgZW52aXJvbm1lbnQgZm9yIFUy
RiBhdXRoZW50aWNhdG9ycy4gSXQgaXMgZG9uZSBieSBleHRlbmRpbmcgdGhlIHN0YWdlcyBpbiBN
b2NrSGlkQ29ubmVjdGlvbgorICAgICAgICBmcm9tIDQgdG8gaW5kZWZpbml0ZSBhcyBtdWx0aS1y
b3VuZCBjb21tdW5pY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gbWFwIFdlYkF1dGhOIHJlcXVlc3Rz
CisgICAgICAgIHRvIFUyRiByZXF1ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmNvbnRpbnVlQWRkRGV2aWNlQWZ0
ZXJHZXRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwSGlkRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERyaXZlcjo6Y29udGlu
dWVBZnRlckNoYW5uZWxBbGxvY2F0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6Q3RhcEhpZERy
aXZlcjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VTJmSGlkQXV0aGVudGljYXRvcjo6VTJmSGlkQXV0aGVudGljYXRvcik6CisgICAgICAgIChXZWJL
aXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktp
dDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y2hlY2tFeGNsdWRlTGlzdCk6CisgICAgICAgIChXZWJL
aXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlUmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAg
KFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29tbWFuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlQ2hlY2tPbmx5Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y29u
dGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpwYXJzZVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAxLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2Fubm90IHNjb2xsIGZvciA1IHNlY29uZHMgYWZ0ZXIgc3dp
cGluZyBiYWNrIG9uIHF1b3RldW5xdW90ZWFwcHMuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDE2MDZhYjBkMTM0ODhhOGEwOGU1ZWIzMDRhZGI2MzBkMzQzNWUwYzkuLjIxYmE2
MDkyNDNmYjBkMWUzNTk2ZTM5YzkzNjcxMTNhNmQ1YjhkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3Ry
dWN0b3IuY3BwCkBAIC01NCw2ICs1NCw4IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29uc3Ry
dWN0VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXBwbGljCiAKICAg
ICBhcGR1OjpBcGR1Q29tbWFuZCBjb21tYW5kOwogICAgIGNvbW1hbmQuc2V0SW5zKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFUyZkFwZHVJbnN0cnVjdGlvbjo6a1JlZ2lzdGVyKSk7CisgICAgLy8gVGhp
cyBpcyBuZWVkZWQgZm9yIHRlc3Qgb2YgdXNlciBwcmVzZW5jZSBldmVuIHRob3VnaCB0aGUgc3Bl
YyBkb2Vzbid0IHNwZWNpZnkgaXQuCisgICAgY29tbWFuZC5zZXRQMShrUDFFbmZvcmNlVXNlclBy
ZXNlbmNlQW5kU2lnbik7CiAgICAgY29tbWFuZC5zZXREYXRhKFdURk1vdmUoZGF0YSkpOwogICAg
IGNvbW1hbmQuc2V0UmVzcG9uc2VMZW5ndGgoYXBkdTo6QXBkdUNvbW1hbmQ6OmtBcGR1TWF4UmVz
cG9uc2VMZW5ndGgpOwogICAgIHJldHVybiBjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9u
c2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCBjNDVhMTcxMTc5OTAyMTM1NmJhNzg1Y2VmMTZj
MjhhOTFhMzAxYmUwLi5jYjQ2NzgxNjhiNGI4MmQxZTRhZTdlMGE3N2NkMWEyNTRhODczNjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9u
c2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBPcHRpb25hbDxQ
dWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3Ry
aW5nJiBycElkLCBjbwogICAgIHJldHVybiBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSB7IEFycmF5
QnVmZmVyOjpjcmVhdGUoY3JlZGVudGlhbElkLmRhdGEoKSwgY3JlZGVudGlhbElkLnNpemUoKSks
IHRydWUsIG51bGxwdHIsIEFycmF5QnVmZmVyOjpjcmVhdGUoYXR0ZXN0YXRpb25PYmplY3QuZGF0
YSgpLCBhdHRlc3RhdGlvbk9iamVjdC5zaXplKCkpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07CiB9CiAKLU9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkRnJvbVUyZlNp
Z25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEpCitPcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHUyZkRhdGEpCiB7CiAgICAgaWYgKGtleUhhbmRsZS5pc0VtcHR5KCkgfHwgdTJmRGF0YS5zaXpl
KCkgPD0gc2lnbmF0dXJlSW5kZXgpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oCmluZGV4IGQ2YTQxZjg3M2Q4YmJjNGY5YTVhMGYwN2UzMGQ2N2YyN2Rm
MmFiY2MuLjRjNmQyNGU1YjRmN2UyMmE2NmIzMzRmNWY4NzM0ZjllNGYxNDhjNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZl
cnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5oCkBAIC00Miw3ICs0Miw3IEBAIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmUmVnaXN0ZXJSZXNwb25z
CiAKIC8vIENvbnZlcnRzIGEgVTJGIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlIHRvIFdlYkF1dGhO
IGdldEFzc2VydGlvbiByZXNwb25zZS4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVj
cy9maWRvLXYyLjAtaWQtMjAxODAyMjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90
b2NvbC12Mi4wLWlkLTIwMTgwMjI3Lmh0bWwjdTJmLWF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24t
aW50ZXJvcGVyYWJpbGl0eQotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbERhdGE+IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYg
cnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgdTJmRGF0YSk7CitXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGF0YT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHUyZkRhdGEpOwogCiB9IC8vIG5hbWVzcGFjZSBmaWRvCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGUwYTMy
ODJlMDA5MmQ5N2NlMzVkNjY0NmI0MzMxYjhjYTExZjQ4ZTAuLjhkNzMzNDhjN2ZkOTAzYzk1MzM1
ZWNiNDhiZTA3NmIwOWEzZmJjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzg0LDYgKzM4NCwxMCBAQCBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCiAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL0N0YXBIaWRBdXRoZW50aWNhdG9yLmNwcAorVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKK1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwCisKIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZFNlcnZpY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBh
M2UzNDY4MjU2YmI2NzAwODI5NWZjMTNmMDcyZGYzNzliNzAwMTJjLi5mYjU0OTMzMTMzZjFhYTdj
MWQ3MzFmYjYxZjRkNzk4YTgxNDgwNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTYyNyw4ICs2Mjcs
MTEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVIKICAgICAgICAgaWYgKGVycm9yID09ICJ3cm9u
Zy1ub25jZSIpCiAgICAgICAgICAgICBoaWQuZXJyb3IgPSBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uOjpIaWQ6OkVycm9yOjpXcm9uZ05vbmNlOwogCi0gICAgICAgIGlmIChhdXRv
IHBheWxvYWRCYXNlNjQgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKLSAgICAgICAgICAgIGhpZC5wYXlsb2FkQmFzZTY0
ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnN0cmluZygpOworICAgICAgICBpZiAo
YXV0byBwYXlsb2FkQmFzZTY0ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShoaWRSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlBheWxvYWRCYXNlNjQiKSkuZ2V0KCkpKSkKKyAgICAgICAgICAgIGhpZC5wYXlsb2FkQmFz
ZTY0ID0gV2ViS2l0Ojp0b0ltcGwocGF5bG9hZEJhc2U2NCktPnRvU3RyaW5nVmVjdG9yKCk7CisK
KyAgICAgICAgaWYgKGF1dG8gaXNVMmYgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJJc1UyZiIpKS5nZXQoKSkpKQorICAgICAgICAgICAgaGlkLmlzVTJmID0gV0tC
b29sZWFuR2V0VmFsdWUoaXNVMmYpOwogCiAgICAgICAgIGlmIChhdXRvIGtlZXBBbGl2ZSA9IHN0
YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShoaWRSZWYs
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIktlZXBBbGl2ZSIpKS5nZXQo
KSkpKQogICAgICAgICAgICAgaGlkLmtlZXBBbGl2ZSA9IFdLQm9vbGVhbkdldFZhbHVlKGtlZXBB
bGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRleCAyMzdiMWI0NjA3MjgxMTkxMzJk
Zjc5ODM5Y2E2NzY0NTM1ZDYzZWVmLi5kOGU0ZTQxYWMyNmY4N2I1NTBlZDE4MWY0NjAzMWQyMGZk
MjQwNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNp
bXBvcnQgIkN0YXBIaWRBdXRoZW50aWNhdG9yLmgiCiAjaW1wb3J0ICJDdGFwSGlkRHJpdmVyLmgi
CiAjaW1wb3J0ICJIaWRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJVMmZIaWRBdXRoZW50aWNhdG9y
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlk
b0NvbnN0YW50cy5oPgpAQCAtMTA4LDcgKzEwOSw3IEBAIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNl
QWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogdm9pZCBIaWRTZXJ2aWNlOjpjb250aW51ZUFk
ZERldmljZUFmdGVyR2V0SW5mbyhDdGFwSGlkRHJpdmVyKiBwdHIsIFZlY3Rvcjx1aW50OF90PiYm
IHJlc3BvbnNlKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDdGFwSGlkRHJpdmVyPiBkcml2ZXIg
PSBtX2RyaXZlcnMudGFrZShwdHIpOwotICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpKQor
ICAgIGlmICghZHJpdmVyIHx8ICFvYnNlcnZlcigpIHx8IHJlc3BvbnNlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbmZvID0gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2Uo
cmVzcG9uc2UpOwpAQCAtMTE4LDYgKzExOSw4IEBAIHZvaWQgSGlkU2VydmljZTo6Y29udGludWVB
ZGREZXZpY2VBZnRlckdldEluZm8oQ3RhcEhpZERyaXZlciogcHRyLCBWZWN0b3I8dWludDhfCiAg
ICAgfQogICAgIC8vIEZJWE1FKDE5MTUzNSk6IFN1cHBvcnQgVTJGIGF1dGhlbnRpY2F0b3JzLgog
ICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBjdGFwIGdldCBpbmZvIHJlc3BvbnNlLiIp
OworICAgIGRyaXZlci0+c2V0UHJvdG9jb2woUHJvdG9jb2xWZXJzaW9uOjprVTJmKTsKKyAgICBv
YnNlcnZlcigpLT5hdXRoZW50aWNhdG9yQWRkZWQoVTJmSGlkQXV0aGVudGljYXRvcjo6Y3JlYXRl
KFdURk1vdmUoZHJpdmVyKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hp
ZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5kZXggMGIxNzY5OWJkZGU5Nzg0YjRjNzg2
M2Q5ZDdiZTkyNDU0NjVmMmE2NC4uZDg2YTNhNDcyZTZiYjc3MzkwZTM0MDFhNmNkZTgyYzY1M2E2
ODQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKQEAgLTEyNyw0
MyArMTI3LDQ4IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAg
ICAgIGlmIChwcmV2aW91c1N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cpCiAgICAgICAg
ICAgICBtX3N0YWdlID0gTW9jazo6U3RhZ2U6OlJlcXVlc3Q7CiAgICAgfQotICAgIGlmIChtX3Jl
cXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IpCisgICAg
aWYgKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2Jv
ciB8fCBtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01z
ZykKICAgICAgICAgbV9zdWJTdGFnZSA9IE1vY2s6OlN1YlN0YWdlOjpNc2c7CiAKLSAgICAvLyBT
ZXQgb3B0aW9ucy4KICAgICBpZiAobV9zdGFnZSA9PSBNb2NrOjpTdGFnZTo6UmVxdWVzdCAmJiBt
X3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsKLSAgICAgICAgbV9yZXF1aXJlUmVz
aWRlbnRLZXkgPSBmYWxzZTsKLSAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGZh
bHNlOwotCi0gICAgICAgIGF1dG8gcGF5bG9hZCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmdldE1lc3Nh
Z2VQYXlsb2FkKCk7Ci0gICAgICAgIEFTU0VSVChwYXlsb2FkLnNpemUoKSk7Ci0gICAgICAgIGF1
dG8gY21kID0gc3RhdGljX2Nhc3Q8Q3RhcFJlcXVlc3RDb21tYW5kPihwYXlsb2FkWzBdKTsKLSAg
ICAgICAgcGF5bG9hZC5yZW1vdmUoMCk7Ci0gICAgICAgIGF1dG8gcmVxdWVzdE1hcCA9IENCT1JS
ZWFkZXI6OnJlYWQocGF5bG9hZCk7Ci0gICAgICAgIEFTU0VSVChyZXF1ZXN0TWFwKTsKLQotICAg
ICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JNYWtlQ3Jl
ZGVudGlhbCkgewotICAgICAgICAgICAgYXV0byBpdCA9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmZp
bmQoQ0JPUlZhbHVlKEN0YXBNYWtlQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZp
bmQgb3B0aW9ucy4KLSAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5l
bmQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0
TWFwKCk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JW
YWx1ZShrUmVzaWRlbnRLZXlNYXBLZXkpKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9w
dGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkg
PSBpdHItPnNlY29uZC5nZXRCb29sKCk7Ci0KLSAgICAgICAgICAgICAgICBpdHIgPSBvcHRpb25N
YXAuZmluZChDQk9SVmFsdWUoa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9y
ZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIGlzc3VlIGRpZmZlcmVudCBtc2cgY21kIGZvciBDVEFQIGFuZCBVMkYu
CisgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZiBeIChtX3JlcXVlc3RN
ZXNzYWdlLT5jbWQoKSAhPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZykpOworCisgICAgICAg
IC8vIFNldCBvcHRpb25zLgorICAgICAgICBpZiAobV9yZXF1ZXN0TWVzc2FnZS0+Y21kKCkgPT0g
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yKSB7CisgICAgICAgICAgICBtX3JlcXVpcmVSZXNp
ZGVudEtleSA9IGZhbHNlOworICAgICAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9
IGZhbHNlOworCisgICAgICAgICAgICBhdXRvIHBheWxvYWQgPSBtX3JlcXVlc3RNZXNzYWdlLT5n
ZXRNZXNzYWdlUGF5bG9hZCgpOworICAgICAgICAgICAgQVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGF1dG8gY21kID0gc3RhdGljX2Nhc3Q8Q3RhcFJlcXVlc3RDb21tYW5kPihw
YXlsb2FkWzBdKTsKKyAgICAgICAgICAgIHBheWxvYWQucmVtb3ZlKDApOworICAgICAgICAgICAg
YXV0byByZXF1ZXN0TWFwID0gQ0JPUlJlYWRlcjo6cmVhZChwYXlsb2FkKTsKKyAgICAgICAgICAg
IEFTU0VSVChyZXF1ZXN0TWFwKTsKKworICAgICAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVz
dENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUoQ3RhcE1ha2VD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmluZCBvcHRpb25zLgorICAgICAgICAg
ICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vjb25kLmdldE1hcCgpOworCisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtSZXNp
ZGVudEtleU1hcEtleSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1h
cC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVJlc2lkZW50S2V5ID0g
aXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworCisgICAgICAgICAgICAgICAgICAgIGl0ciA9IG9wdGlv
bk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNhdGlvbk1hcEtleSkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9u
KSB7Ci0gICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9S
VmFsdWUoQ3RhcEdldEFzc2VydGlvblJlcXVlc3RPcHRpb25zS2V5KSk7IC8vIEZpbmQgb3B0aW9u
cy4KLSAgICAgICAgICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgewot
ICAgICAgICAgICAgICAgIGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1VzZXJW
ZXJpZmljYXRpb25NYXBLZXkpKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1h
cC5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9
IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAgIGlmIChjbWQgPT0gQ3RhcFJlcXVl
c3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldEFzc2VydGlvbikgeworICAgICAgICAgICAgICAg
IGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1ZShDdGFwR2V0QXNz
ZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmluZCBvcHRpb25zLgorICAgICAgICAgICAg
ICAgIGlmIChpdCAhPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5lbmQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vjb25kLmdldE1hcCgpOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlm
aWNhdGlvbk1hcEtleSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRyICE9IG9wdGlvbk1h
cC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWlyZVVzZXJWZXJpZmljYXRp
b24gPSBpdHItPnNlY29uZC5nZXRCb29sKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjA3LDggKzIxMiwxMiBAQCB2b2lkIE1vY2tIaWRD
b25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgIGluZm9EYXRhLmluc2VydCgwLCBzdGF0
aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykpOyAvLyBQ
cmVwZW5kIHN0YXR1cyBjb2RlLgogICAgICAgICBpZiAoc3RhZ2VzTWF0Y2goKSAmJiBtX2NvbmZp
Z3VyYXRpb24uaGlkLT5lcnJvciA9PSBNb2NrOjpFcnJvcjo6V3JvbmdDaGFubmVsSWQpCiAgICAg
ICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVs
IC0gMSwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZvRGF0YSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVu
dENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgaW5mb0RhdGEpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmhpZC0+aXNVMmYpCisg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50
Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZvRGF0YSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVh
dGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtFcnJvciwgeyBzdGF0
aWNfY2FzdDx1aW50OF90PihDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprQ3RhcDFFcnJJbnZhbGlk
Q29tbWFuZCkgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV9zdGFnZSA9PSBNb2Nr
OjpTdGFnZTo6UmVxdWVzdCAmJiBtX3N1YlN0YWdlID09IE1vY2s6OlN1YlN0YWdlOjpNc2cpIHsK
QEAgLTIyMyw5ICsyMzIsMTQgQEAgdm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6ZmVlZFJlcG9ydHMo
KQogICAgICAgICAgICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50
Q2hhbm5lbCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCB7IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMkVyclVuc3VwcG9ydGVkT3B0aW9uKSB9
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gcGF5bG9hZDsK
LSAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gYmFzZTY0RGVjb2RlKG1fY29uZmlndXJhdGlvbi5o
aWQtPnBheWxvYWRCYXNlNjQsIHBheWxvYWQpOworICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmZp
Z3VyYXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0LmlzRW1wdHkoKSk7CisgICAgICAgICAgICBhdXRv
IHN0YXR1cyA9IGJhc2U2NERlY29kZShtX2NvbmZpZ3VyYXRpb24uaGlkLT5wYXlsb2FkQmFzZTY0
WzBdLCBwYXlsb2FkKTsKKyAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi5oaWQtPnBheWxvYWRC
YXNlNjQucmVtb3ZlKDApOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsIHN0YXR1
cyk7Ci0gICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJl
bnRDaGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHBheWxvYWQpOworICAgICAg
ICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IsIHBheWxvYWQpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5u
ZWwsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBwYXlsb2FkKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCmluZGV4IGUwYmY4NmIyZmQx
ZTI2NWJmYzAyNzY4MTllOWViY2RjYzExMzM5NDguLjNkY2FiYzRiNWRjOTcwNTcwZmI1ZWMzZmY5
MTM2OGJkNGViZmZlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKQEAg
LTM1LDExICszNSwxMyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoZSBmb2xsb3dpbmcg
YmFzaWNhbGx5IHNpbXVsYXRlcyBhbiBleHRlcm5hbCBISUQgdG9rZW4gdGhhdDoKLS8vICAgIDEu
IE9ubHkgc3VwcG9ydHMgQ1RBUDIgcHJvdG9jb2wsCisvLyAgICAxLiBTdXBwb3J0cyBvbmx5IG9u
ZSBwcm90b2NvbCwgZWl0aGVyIENUQVAyIG9yIFUyRi4KIC8vICAgIDIuIERvZXNuJ3Qgc3VwcG9y
dCByZXNpZGVudCBrZXlzLAogLy8gICAgMy4gRG9lc24ndCBzdXBwb3J0IHVzZXIgdmVyaWZpY2F0
aW9uLgotLy8gVGhlcmUgYXJlIGZvdXIgc3RhZ2VzIGZvciBlYWNoIFdlYkF1dGhOIHJlcXVlc3Q6
CisvLyBUaGVyZSBhcmUgZm91ciBzdGFnZXMgZm9yIGVhY2ggQ1RBUCByZXF1ZXN0OgogLy8gRlNN
OiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9PiBSZXF1ZXN0OjpJbml0ID0+IFJlcXVlc3Q6Ok1z
ZworLy8gVGhlcmUgYXJlIGluZGVmaW5pdGUgc3RhZ2VzIGZvciBlYWNoIFUyRiByZXF1ZXN0Ogor
Ly8gRlNNOiBJbmZvOjpJbml0ID0+IEluZm86Ok1zZyA9PiBbUmVxdWVzdDo6SW5pdCA9PiBSZXF1
ZXN0OjpNc2ddKwogLy8gQWNjb3JkaW5nIHRvIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgZXJy
b3IgYW5kIHN0YWdlcywgZXJyb3Igd2lsbCBtYW5pZmVzdCBkaWZmZXJlbnRseS4KIGNsYXNzIE1v
Y2tIaWRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tIaWRDb25u
ZWN0aW9uPiwgcHVibGljIEhpZENvbm5lY3Rpb24gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRl
eCA3ODg2N2E1ZmM2NjZiOTdkYjkwNzAyOTRlNGVmOWJjZDBkODIyMzdjLi5iZTA4NzJmYmRmYjlj
YWM4Mjc4M2I1NDVmNTQ5OTZkNjRlZTc5Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtNjEsMTAgKzYx
LDExIEBAIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKICAgICAg
ICAgICAgIFdyb25nTm9uY2UKICAgICAgICAgfTsKIAotICAgICAgICBTdHJpbmcgcGF5bG9hZEJh
c2U2NDsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF5bG9hZEJhc2U2NDsKICAgICAgICAgU3Rh
Z2Ugc3RhZ2UgeyBTdGFnZTo6SW5mbyB9OwogICAgICAgICBTdWJTdGFnZSBzdWJTdGFnZSB7IFN1
YlN0YWdlOjpJbml0IH07CiAgICAgICAgIEVycm9yIGVycm9yIHsgRXJyb3I6OlN1Y2Nlc3MgfTsK
KyAgICAgICAgYm9vbCBpc1UyZiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wga2VlcEFsaXZlIHsg
ZmFsc2UgfTsKICAgICAgICAgYm9vbCBmYXN0RGF0YUFycml2YWwgeyBmYWxzZSB9OwogICAgICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZERyaXZlci5jcHAKaW5kZXggNmYyODYyMDMyYmM1YjY0ZTMwOWM3NGQ3NmQ5OGMyMGIyNTYy
NzJhOC4uMWY5ZWY5ODM5NGZlZTQ3OTUzZjljNDBiOGEyNWI5YjRiNzdmZGU5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlk
RHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBDdGFwSGlk
RHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5lbEFsbG9jYXRlZChPcHRpb25hbDxGaWRvSGlkTWVz
c2FnZT4mJiBtZXMKICAgICAvLyBGSVhNRSgxOTE1MzQpOiBDaGVjayB0aGUgcmVzZXQgb2YgdGhl
IHBheWxvYWQuCiAgICAgLy8gRklYTUUoMTkyMDYxKQogICAgIExPR19FUlJPUigiU3RhcnQgc2Vu
ZGluZyB0aGUgcmVxdWVzdC4iKTsKLSAgICBhdXRvIGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVh
dGUobV9jaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgbV9yZXF1ZXN0RGF0
YSk7CisgICAgYXV0byBjbWQgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY2hhbm5lbElkLCBt
X3Byb3RvY29sID09IFByb3RvY29sVmVyc2lvbjo6a0N0YXAgPyBGaWRvSGlkRGV2aWNlQ29tbWFu
ZDo6a0Nib3IgOiBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01zZywgbV9yZXF1ZXN0RGF0YSk7CiAg
ICAgQVNTRVJUKGNtZCk7CiAgICAgbV93b3JrZXItPnRyYW5zYWN0KFdURk1vdmUoKmNtZCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+JiYg
cmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlk
by9DdGFwSGlkRHJpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaAppbmRleCBkZTA1MDI2ODk0ZmVmZTFlOTUzZTAzOWQw
Y2M4OGYzNDZkYjVhNDI2Li44ZmI1MDRkOTFlOTc4MzcwYjBmNmQ5NDI4MThjZDE5ODc5NzgyM2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBIaWREcml2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAKICAgICBleHBsaWNpdCBDdGFwSGlkRHJpdmVyKFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiYm
KTsKIAorICAgIHZvaWQgc2V0UHJvdG9jb2woZmlkbzo6UHJvdG9jb2xWZXJzaW9uIHByb3RvY29s
KSB7IG1fcHJvdG9jb2wgPSBwcm90b2NvbDsgfQogICAgIHZvaWQgdHJhbnNhY3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSwgUmVzcG9uc2VDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKQEAgLTEwMyw2
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlcXVlc3REYXRhOwog
ICAgIFJlc3BvbnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwogICAgIFZlY3Rvcjx1aW50
OF90PiBtX25vbmNlOworICAgIGZpZG86OlByb3RvY29sVmVyc2lvbiBtX3Byb3RvY29sIHsgZmlk
bzo6UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vZmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NDQ3ZjQyZjYzYjM4YWVhZDUzZWU5YjU3YzQ1ZmIzYjI4ZWJmYjEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZIaWRB
dXRoZW50aWNhdG9yLmNwcApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJVMmZIaWRBdXRoZW50aWNhdG9yLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJDdGFwSGlkRHJpdmVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcGR1UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3Rv
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaD4KKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
dXNpbmcgbmFtZXNwYWNlIGFwZHU7Cit1c2luZyBuYW1lc3BhY2UgZmlkbzsKKworbmFtZXNwYWNl
IHsKK2NvbnN0IHVuc2lnbmVkIHJldHJ5VGltZU91dFZhbHVlTXMgPSAyMDA7Cit9CisKK1UyZkhp
ZEF1dGhlbnRpY2F0b3I6OlUyZkhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBI
aWREcml2ZXI+JiYgZHJpdmVyKQorICAgIDogbV9kcml2ZXIoV1RGTW92ZShkcml2ZXIpKQorICAg
ICwgbV9yZXRyeVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlUyZkhpZEF1dGhlbnRpY2F0
b3I6OnJldHJ5TGFzdENvbW1hbmQpCit7CisgICAgLy8gRklYTUUoMTkxNTIwKTogV2UgbmVlZCBh
IHdheSB0byBjb252ZXJ0IHN0ZDo6dW5pcXVlX3B0ciB0byBVbmlxdWVSZWYuCisgICAgQVNTRVJU
KG1fZHJpdmVyKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bCgpCit7CisgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVz
dERhdGEoKS5jcmVhdGlvbk9wdGlvbnMpKSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2Vw
dGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0
IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IXJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX25leHRMaXN0SW5kZXgpOworICAgICAgICBjaGVja0V4
Y2x1ZGVMaXN0KG1fbmV4dExpc3RJbmRleCsrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpc3N1ZVJlZ2lzdGVyQ29tbWFuZCgpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6
OmNoZWNrRXhjbHVkZUxpc3Qoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSByZXF1
ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgpKSB7Cisg
ICAgICAgIGlzc3VlUmVnaXN0ZXJDb21tYW5kKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChyZXF1ZXN0
RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRpb25zLCByZXF1ZXN0RGF0YSgp
LmNyZWF0aW9uT3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHNbaW5kZXhdKTsKKyAgICBBU1NFUlQo
dTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5
cGU6OkNoZWNrT25seUNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlz
c3VlUmVnaXN0ZXJDb21tYW5kKCkKK3sKKyAgICBhdXRvIHUyZkNtZCA9IGNvbnZlcnRUb1UyZlJl
Z2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25P
cHRpb25zKTsKKyAgICBBU1NFUlQodTJmQ21kKTsKKyAgICBpc3N1ZU5ld0NvbW1hbmQoV1RGTW92
ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlJlZ2lzdGVyQ29tbWFuZCk7Cit9CisKK3ZvaWQgVTJm
SGlkQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAoIWlzQ29udmVydGli
bGVUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMpKSB7CisgICAg
ICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIkNh
bm5vdCBjb252ZXJ0IHRoZSByZXF1ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIW1fbmV4dExpc3RJbmRleCk7CisgICAgaXNzdWVT
aWduQ29tbWFuZChtX25leHRMaXN0SW5kZXgrKyk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGlj
YXRvcjo6aXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49
IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5zaXplKCkpIHsK
KyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdEFsbG93ZWRFcnJvciwg
Ik5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlzdCBpcyBmb3VuZCBp
biB0aGUgYXV0aGVudGljYXRvci4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
YXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gs
IHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlv
bnMuYWxsb3dDcmVkZW50aWFsc1tpbmRleF0uaWRWZWN0b3IpOworICAgIEFTU0VSVCh1MmZDbWQp
OworICAgIGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZDbWQpLCBDb21tYW5kVHlwZTo6U2ln
bkNvbW1hbmQpOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlTmV3Q29tbWFu
ZChWZWN0b3I8dWludDhfdD4mJiBjb21tYW5kLCBDb21tYW5kVHlwZSB0eXBlKQoreworICAgIG1f
bGFzdENvbW1hbmQgPSBXVEZNb3ZlKGNvbW1hbmQpOworICAgIG1fbGFzdENvbW1hbmRUeXBlID0g
dHlwZTsKKyAgICBpc3N1ZUNvbW1hbmQobV9sYXN0Q29tbWFuZCwgbV9sYXN0Q29tbWFuZFR5cGUp
OworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Omlzc3VlQ29tbWFuZChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGNvbW1hbmQsIENvbW1hbmRUeXBlIHR5cGUpCit7CisgICAgbV9kcml2ZXIt
PnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90Pihjb21tYW5kKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCB0eXBlXShWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5yZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoZGF0
YSksIHR5cGUpOworICAgIH0pOworfQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OnJlc3Bv
bnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UsIENvbW1hbmRUeXBlIHR5cGUp
Cit7CisgICAgYXV0byBhcGR1UmVzcG9uc2UgPSBBcGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21NZXNz
YWdlKHJlc3BvbnNlKTsKKyAgICBpZiAoIWFwZHVSZXNwb25zZSkgeworICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhl
IEFQRFUgcmVzcG9uc2UuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBDb21tYW5kVHlwZTo6UmVnaXN0ZXJDb21tYW5kOgorICAg
ICAgICBjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3Zl
KCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ29tbWFuZFR5cGU6
OkNoZWNrT25seUNvbW1hbmQ6CisgICAgICAgIGNvbnRpbnVlQ2hlY2tPbmx5Q29tbWFuZEFmdGVy
UmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ29tbWFuZFR5cGU6OkJvZ3VzQ29tbWFuZDoKKyAgICAgICAgY29udGludWVC
b2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZSgqYXBkdVJlc3BvbnNlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbW1hbmRUeXBlOjpTaWduQ29tbWFuZDoKKyAg
ICAgICAgY29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKCph
cGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZVJlZ2lzdGVy
Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9uc2Up
Cit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFwZHVS
ZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogeworICAgICAgICBhdXRvIHJlc3BvbnNlID0g
cmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UocmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMucnAu
aWQsIGFwZHVSZXNwb25zZS5kYXRhKCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CisgICAg
ICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291
bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNwb25zZS4iX3MgfSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoV1RGTW92ZSgqcmVz
cG9uc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIEFwZHVSZXNwb25zZTo6
U3RhdHVzOjpTV19DT05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CisgICAgICAgIC8vIFBvbGxpbmcg
aXMgcmVxdWlyZWQgZHVyaW5nIHRlc3Qgb2YgdXNlciBwcmVzZW5jZS4KKyAgICAgICAgbV9yZXRy
eVRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHJldHJ5VGltZU91
dFZhbHVlTXMpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlVua25v
d24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6ICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
cGR1UmVzcG9uc2Uuc3RhdHVzKCkpKSB9KTsKKyAgICB9Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVu
dGljYXRvcjo6Y29udGludWVDaGVja09ubHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFw
ZHVSZXNwb25zZSYmIGFwZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0Y2ggKGFwZHVSZXNwb25zZS5z
dGF0dXMoKSkgeworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOgor
ICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNfTk9UX1NBVElTRklF
RDoKKyAgICAgICAgaXNzdWVOZXdDb21tYW5kKGNvbnN0cnVjdEJvZ3VzVTJmUmVnaXN0cmF0aW9u
Q29tbWFuZCgpLCBDb21tYW5kVHlwZTo6Qm9ndXNDb21tYW5kKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGNoZWNrRXhjbHVkZUxpc3QobV9uZXh0TGlzdEluZGV4Kysp
OworICAgIH0KK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZUJvZ3VzQ29t
bWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9uc2UpCit7
CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBjYXNlIEFwZHVSZXNw
b25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjoKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0
aW9uRGF0YSB7IEludmFsaWRTdGF0ZUVycm9yLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0
Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6
OlN0YXR1czo6U1dfQ09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgorICAgICAgICAvLyBQb2xsaW5n
IGlzIHJlcXVpcmVkIGR1cmluZyB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UuCisgICAgICAgIG1fcmV0
cnlUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhyZXRyeVRpbWVP
dXRWYWx1ZU1zKSk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJVbmtu
b3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YXBkdVJlc3BvbnNlLnN0YXR1cygpKSkgfSk7CisgICAgfQorfQorCit2b2lkIFUyZkhpZEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJl
c3BvbnNlJiYgYXBkdVJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoYXBkdVJlc3BvbnNlLnN0YXR1
cygpKSB7CisgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJST1I6IHsKKyAg
ICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UocmVxdWVzdERhdGEoKS5y
ZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHNbbV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRh
KCkpOworICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CisgICAgICAgICAgICByZWNlaXZlUmVzcG9u
ZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiBz
aWduIHJlc3BvbnNlLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NPTkRJVElPTlNfTk9U
X1NBVElTRklFRDoKKyAgICAgICAgLy8gUG9sbGluZyBpcyByZXF1aXJlZCBkdXJpbmcgdGVzdCBv
ZiB1c2VyIHByZXNlbmNlLgorICAgICAgICBtX3JldHJ5VGltZXIuc3RhcnRPbmVTaG90KFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMocmV0cnlUaW1lT3V0VmFsdWVNcykpOworICAgICAgICByZXR1
cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgaXNzdWVTaWduQ29tbWFuZChtX25leHRMaXN0SW5k
ZXgrKyk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVUSE4pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZIaWRB
dXRoZW50aWNhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZmMjk0NzdlZDY5OTUxZTkwY2M3ODNhYmNhYjU0
NGJkMDE1YzM0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlkQXV0aGVudGljYXRvci5oCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVUSE4pICYm
IFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3IuaCIKKyNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgYXBkdSB7CitjbGFzcyBBcGR1UmVzcG9uc2U7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDdGFwSGlkRHJpdmVyOworCitjbGFzcyBV
MmZIaWRBdXRoZW50aWNhdG9yIGZpbmFsIDogcHVibGljIEF1dGhlbnRpY2F0b3IgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8VTJmSGlkQXV0aGVudGljYXRvcj4gY3JlYXRlKHN0ZDo6dW5pcXVl
X3B0cjxDdGFwSGlkRHJpdmVyPiYmIGRyaXZlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFUyZkhpZEF1dGhlbnRpY2F0b3IoV1RGTW92ZShkcml2ZXIpKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFUyZkhpZEF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVf
cHRyPEN0YXBIaWREcml2ZXI+JiYpOworCisgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFs
OworICAgIHZvaWQgY2hlY2tFeGNsdWRlTGlzdChzaXplX3QgaW5kZXgpOworICAgIHZvaWQgaXNz
dWVSZWdpc3RlckNvbW1hbmQoKTsKKyAgICB2b2lkIGdldEFzc2VydGlvbigpIGZpbmFsOworICAg
IHZvaWQgaXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpOworCisgICAgZW51bSBjbGFzcyBD
b21tYW5kVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBSZWdpc3RlckNvbW1hbmQsCisgICAgICAg
IENoZWNrT25seUNvbW1hbmQsCisgICAgICAgIEJvZ3VzQ29tbWFuZCwKKyAgICAgICAgU2lnbkNv
bW1hbmQKKyAgICB9OworICAgIHZvaWQgaXNzdWVOZXdDb21tYW5kKFZlY3Rvcjx1aW50OF90PiYm
IGNvbW1hbmQsIENvbW1hbmRUeXBlKTsKKyAgICB2b2lkIHJldHJ5TGFzdENvbW1hbmQoKSB7IGlz
c3VlQ29tbWFuZChtX2xhc3RDb21tYW5kLCBtX2xhc3RDb21tYW5kVHlwZSk7IH0KKyAgICB2b2lk
IGlzc3VlQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvbW1hbmQsIENvbW1hbmRUeXBl
KTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2Us
IENvbW1hbmRUeXBlKTsKKyAgICB2b2lkIGNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25zZSYmKTsKKyAgICB2b2lkIGNvbnRpbnVlQ2hl
Y2tPbmx5Q29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1OjpBcGR1UmVzcG9uc2UmJik7
CisgICAgdm9pZCBjb250aW51ZUJvZ3VzQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChhcGR1
OjpBcGR1UmVzcG9uc2UmJik7CisgICAgdm9pZCBjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25zZSYmKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDdGFwSGlkRHJpdmVyPiBtX2RyaXZlcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxVMmZIaWRBdXRo
ZW50aWNhdG9yPiBtX3JldHJ5VGltZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fbGFzdENvbW1h
bmQ7CisgICAgQ29tbWFuZFR5cGUgbV9sYXN0Q29tbWFuZFR5cGU7CisgICAgc2l6ZV90IG1fbmV4
dExpc3RJbmRleCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKaW5kZXggZjMxM2E0OGZkN2Q3OGNhY2U4MzMwMWE0
YmM0ZmM1YTA3ZGQ5OGJlNi4uYmZiMDMyNDI2ZDk4Y2ZmMzg4YjUxMDQ5MzQ4NDM4MTFiMTEwZWY4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5H
KQogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0
Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAwYTFjNWY2NDk5YTliZGEyNjA5YTIwMGJiMzAxNDdm
N2NkNmZiMzQuLjNmZGRlNjE4Y2ZlNGI1MmNjOTNiMDA1NzczZTMzM2JiN2MzODhkZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAx
NSw4ICsxMDE1LDYgQEAKIAkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MEFCOEYyMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggKi87IH07CiAJCTU3
NTk3RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU5N0VCNzIxODExRDlBMDAzN0Y5MjQg
LyogQ3RhcEhpZERyaXZlci5oICovOyB9OwogCQk1NzU5N0VCRDIxODE4NDkwMDAzN0Y5MjQgLyog
Q3RhcEhpZEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3NTk3RUJCMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGlj
YXRvci5oICovOyB9OwotCQk1NzU5N0VCRTIxODE4NDkwMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhl
bnRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc1OTdFQkMyMTgxODQ4RjAwMzdGOTI0IC8qIEN0YXBIaWRBdXRoZW50aWNhdG9yLmNwcCAq
LzsgfTsKLQkJNTc1OTdFQzEyMTgxOEJFMjAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQzAyMTgx
OEJFMjAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuY3BwICovOyB9OwogCQk1NzcyRjIwNjIxN0RC
RDZBMDA1NkJGMkMgLyogSGlkU2VydmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc3MkYyMDQyMTdEQkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2Uu
aCAqLzsgfTsKIAkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc4REMyOTcyMTU1QTAwMTAwNzRFODE1IC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGlu
ay5oICovOyB9OwogCQk1N0FDOEY1MDIxN0ZFRUQ5MDA1NTQzOEMgLyogSGlkQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdBQzhGNEUy
MTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTEwMzgsNiArMTAz
Niw3IEBACiAJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRURDMTIx
NEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oICovOyB9OwogCQk1N0RDRURDNzIx
NEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8q
IE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3
IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzkyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRo
ZW50aWNhdG9yTWFuYWdlci5oICovOyB9OworCQk1N0VCMkUzQTIxRTE5ODNFMDBCODlDREYgLyog
VTJmSGlkQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdFQjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0
b3IuaCAqLzsgfTsKIAkJNTg3NzQzQTYyMUMzMEJCRTAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxp
c3QuZGIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4
Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVMaXN0LmRiICovOyB9OwogCQk1
OEU5NzdERjIxQzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4RTk3N0REMjFD
NDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICovOyB9OwogCQk1
QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzBCMTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CkBAIC0zNDA4LDYgKzM0MDcsOCBAQAogCQk1N0RDRURDNjIxNEYxODMw
MDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1vY2tMb2NhbENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
RENFREM5MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RENFRENEMjE0RjUxNjgwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdF
QjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVTJmSGlkQXV0aGVudGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1N0VCMkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVMmZIaWRBdXRoZW50aWNhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTg3NzQzQTQyMUMzMEFEODAwQUU5MDg0IC8qIEhUVFBTVXBncmFkZUxp
c3QuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBm
aWxlOyBuYW1lID0gSFRUUFNVcGdyYWRlTGlzdC5kYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvSFRUUFNVcGdyYWRlTGlzdC5kYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJNThFOTc3REMyMUM0OTlGRTAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNThF
OTc3REQyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTE1LDggKzU1MTYsOCBAQAogCQky
RDE1NTFBOTFGNUE5QjQyMDAwNkUzRkUgLyogUmVtb3RlTGF5ZXJUcmVlICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0Yw
REIgLyogbWFjICovLAogCQkJCTJEMTU1MUFBMUY1QTlCQTcwMDA2RTNGRSAvKiBpb3MgKi8sCisJ
CQkJRTQwNDkwNkYyMURFNjVENzAwMzdGMERCIC8qIG1hYyAqLywKIAkJCQkxQUIxNkFFMDE2NDg2
NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oICovLAogCQkJ
CTBGRjI0QTJGMTg3OUU0RkUwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTFBQjE2QURGMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tICovLApAQCAtNjcxMSw2ICs2NzEyLDggQEAK
IAkJCQk1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCAq
LywKIAkJCQk1NzU5N0VDMDIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAgKi8s
CiAJCQkJNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLywKKwkJ
CQk1N0VCMkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5jcHAgKi8s
CisJCQkJNTdFQjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gZmlkbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC05MzE1LDYgKzkzMTgsNyBAQAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcx
NDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTJGODMzNjg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1l
bnVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0VCMkUzQTIxRTE5ODNFMDBCODlDREYgLyog
VTJmSGlkQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYxOEI2QzA4
MTAwOUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUI1MUQ1
OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUE5
MUQ1NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDc0Niw4ICsxMDc1MCw2IEBACiAJCQkJMkQ5MkE3ODYyMTJCNkFCMTAwRjQ5M0ZEIC8qIENo
aWxkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0
RTcgLyogQ2hpbGRQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTU3NTk3RUJFMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzU5N0VDMTIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhp
ZERyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQg
LyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcx
MDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhC
OUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBlZDNhNGI0YjkyMDk5NmU3ZTlkNzA0ZTM4NjJlMTc1YzU3MWRiNGZhLi5hMmYwM2I2MTBkN2Uw
MTU0ZmI1NmU3MTdhZjg4N2U0NTgwZjYxYThmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDcgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBv
cnQgVTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoOgorICAgICAgICAxKSBhZGRzIHN1cHBvcnQgZm9yIFUyRiBtb2NraW5n
IG1lY2hhbmlzbTsKKyAgICAgICAgMikgdXBkYXRlcyB0ZXN0cyB0byByZWZsZWN0IFUyZkNvbW1h
bmRDb25zdHJ1Y3RvciBjaGFuZ2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9UZXN0RGF0YS5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24pOgorCiAyMDE5LTAxLTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgTGVhayBvZiBTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhICgx
NiBieXRlcykgaW4gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IHJ1bm5pbmcgV2ViS2l0IGxh
eW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0N0YXBSZXNwb25zZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0N0YXBSZXNwb25zZVRlc3QuY3BwCmluZGV4IGRlM2YyMDkyOTMzMDljNGJiYzIzMjAwODZiNGFh
Zjk2MGRlYzRiOGEuLmE3ZGNhYjBiNzZhNzI4Zjg5MmU3YjQzOTBmYzQ4NWFjOGU3MTdmOGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VU
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3Bv
bnNlVGVzdC5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRl
c3RQYXJzZUluY29ycmVjdFJlZ2lzdGVyUmVzcG9uc2VEYXRhNSkKIC8vIFRlc3RzIHRoYXQgVTJG
IGF1dGhlbnRpY2F0b3IgZGF0YSBpcyBwcm9wZXJseSBzZXJpYWxpemVkLgogVEVTVChDVEFQUmVz
cG9uc2VUZXN0LCBUZXN0UGFyc2VTaWduUmVzcG9uc2VEYXRhKQogewotICAgIGF1dG8gcmVzcG9u
c2UgPSByZWFkRnJvbVUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBn
ZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdFNpZ25SZXNwb25zZSgpKTsKKyAg
ICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQ
YXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdFNpZ25SZXNwb25z
ZSgpKTsKICAgICBBU1NFUlRfVFJVRShyZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKHJlc3BvbnNl
LT5yYXdJZC0+Ynl0ZUxlbmd0aCgpLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxl
KSk7CiAgICAgRVhQRUNUX0VRKG1lbWNtcChyZXNwb25zZS0+cmF3SWQtPmRhdGEoKSwgVGVzdERh
dGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxl
KSksIDApOwpAQCAtNTMzLDI3ICs1MzMsMjcgQEAgVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0
UGFyc2VTaWduUmVzcG9uc2VEYXRhKQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJz
ZVUyZlNpZ25XaXRoTnVsbEtleUhhbmRsZSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZy
b21VMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgVmVjdG9yPHVpbnQ4
X3Q+KCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRV
MmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgVmVjdG9yPHVpbnQ4X3Q+
KCksIGdldFRlc3RTaWduUmVzcG9uc2UoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsK
IH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aE51bGxSZXNw
b25zZSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoVGVz
dERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIFZl
Y3Rvcjx1aW50OF90PigpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25z
ZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMo
KSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAK
IFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNlVTJmU2lnbldpdGhDb3JydXB0ZWRDb3Vu
dGVyKQogewogICAgIC8vIEEgc2lnbiByZXNwb25zZSBvZiBsZXNzIHRoYW4gNSBieXRlcy4KLSAg
ICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5
aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RDb3JydXB0
ZWRTaWduUmVzcG9uc2UoMykpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3Bv
bnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRl
cygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDMpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25X
aXRoQ29ycnVwdGVkU2lnbmF0dXJlKQogewogICAgIC8vIEEgc2lnbiByZXNwb25zZSBubyBtb3Jl
IHRoYW4gNSBieXRlcy4KLSAgICBhdXRvIHJlc3BvbnNlID0gcmVhZEZyb21VMmZTaWduUmVzcG9u
c2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVz
KCksIGdldFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoNSkpOworICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RD
cmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0Q29ycnVwdGVkU2lnblJlc3BvbnNlKDUpKTsK
ICAgICBFWFBFQ1RfRkFMU0UocmVzcG9uc2UpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKaW5kZXggMzhlMDNjODg2YjU5NjlhY2Fk
ZWE4ZDNlNTAxNzBiY2UyNmQwN2Q4Yy4uYjY4MmZiN2MyODdjMzBkMzBmZGMwYjU0MGJhNjk1MjI0
ZTMyYTQwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
ZG9UZXN0RGF0YS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRv
VGVzdERhdGEuaApAQCAtNTEsNyArNTEsNyBAQCBjb25zdGV4cHIgY2hhciBrUmVseWluZ1BhcnR5
SWRbXSA9ICJhY21lLmNvbSI7CiAKIGNvbnN0ZXhwciB1aW50OF90IGtVMmZSZWdpc3RlckNvbW1h
bmRBcGR1W10gPSB7CiAgICAgLy8gQ0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3RydWN0aW9ucwot
ICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwMSwgMHgwMywgMHgwMCwK
ICAgICAvLyBEYXRhIGxlbmd0aCBpbiAzIGJ5dGVzIGluIGJpZyBlbmRpYW4gb3JkZXIuCiAgICAg
MHgwMCwgMHgwMCwgMHg0MCwKICAgICAvLyBDaGFsbGVuZ2UgcGFyYW1ldGVyIC0tIHNlZSBrQ2xp
ZW50RGF0YUhhc2gKQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdGV4cHIgdWludDhfdCBrVTJmQ2hl
Y2tPbmx5U2lnbkNvbW1hbmRBcGR1W10gPSB7CiAKIGNvbnN0ZXhwciB1aW50OF90IGtVMmZGYWtl
UmVnaXN0ZXJDb21tYW5kW10gPSB7CiAgICAgLy8gQ0xBLCBJTlMsIFAxLCBQMiBBUERVIGluc3Ry
dWN0aW9ucwotICAgIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwMSwgMHgw
MywgMHgwMCwKICAgICAvLyBEYXRhIGxlbmd0aCBpbiAzIGJ5dGVzIGluIGJpZyBlbmRpYW4gb3Jk
ZXIuCiAgICAgMHgwMCwgMHgwMCwgMHg0MCwKICAgICAvLyBCb2d1cyBjaGFsbGVuZ2UgcGFyYW1l
dGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCA3YzgyMTNlZGViYmJjM2E2M2VlZDgzOGVlZTVmZjExODNhNThhM2Rk
Li4yNGQzNDBmMDA2ZWQ1OGMzMGY1YzcxMzg5MDExODY2NThhMTUyYzIzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTI1MDksMTAgKzI1MDksMzYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKEpTVmFsdWVSZWYgY29uZmlndXJhdGlvblYKICAgICAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUoQWRvcHQsIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwYXlsb2FkQmFzZTY0IikpOwogICAgICAgICBK
U1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgaGlkLCBwYXlsb2FkQmFzZTY0UHJvcGVydHlOYW1lLmdldCgpLCAwKTsKICAgICAgICAgaWYg
KCFKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSAmJiAhSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKSB7Ci0gICAgICAgICAgICBp
ZiAoIUpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQorICAgICAg
ICAgICAgaWYgKCFKU1ZhbHVlSXNBcnJheShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSlNPYmplY3RSZWYgcGF5bG9h
ZEJhc2U2NCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIG51
bGxwdHIpOworICAgICAgICAgICAgc3RhdGljIGF1dG8gbGVuZ3RoUHJvcGVydHkgPSBhZG9wdChK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgICAgICAgICAgSlNW
YWx1ZVJlZiBwYXlsb2FkQmFzZTY0TGVuZ3RoVmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNv
bnRleHQsIHBheWxvYWRCYXNlNjQsIGxlbmd0aFByb3BlcnR5LmdldCgpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5n
dGhWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIHBh
eWxvYWRCYXNlNjRzID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gcGF5bG9hZEJhc2U2NExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkQmFzZTY0TGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRWYWx1ZSA9IEpT
T2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIHBheWxvYWRCYXNlNjQsIGksIG51bGxw
dHIpOworICAgICAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxv
YWRCYXNlNjRWYWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKHBheWxvYWRCYXNlNjRzLmdldCgpLCB0b1dLKGFkb3B0
KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0
KCkpLmdldCgpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaGlkS2V5cy5hcHBlbmQo
eyBBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUGF5bG9hZEJhc2U2NCIp
IH0pOwotICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZCh0b1dLKGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlLCAwKSkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIGhpZFZhbHVlcy5hcHBlbmQocGF5bG9hZEJhc2U2NHMpOworICAgICAgICB9CisKKyAg
ICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGlzVTJmUHJvcGVydHlOYW1lKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiaXNVMmYiKSk7CisgICAgICAgIEpTVmFsdWVS
ZWYgaXNVMmZWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgaGlkLCBpc1UyZlBy
b3BlcnR5TmFtZS5nZXQoKSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzVW5kZWZpbmVkKGNv
bnRleHQsIGlzVTJmVmFsdWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIGlzVTJmVmFsdWUp
KSB7CisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0Jvb2xlYW4oY29udGV4dCwgaXNVMmZWYWx1
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYm9vbCBpc1UyZiA9IEpT
VmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgaXNVMmZWYWx1ZSk7CisgICAgICAgICAgICBoaWRLZXlz
LmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJJc1UyZiIp
IH0pOworICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLQm9vbGVhbkNyZWF0
ZShpc1UyZikpLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBrZWVwQWxpdmVQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJrZWVwQWxpdmUiKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzYzZWEzNmJjOThiZTBkNzRjMGU4OTMx
NmIyMDA4NjdmNTM0OGVjNS4uMmI4OThkYmFkNWI1NmVjOWFjMWUwODNkYzc0NmViMzg5NTVmYjA4
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTAxLTA3ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBwb3J0IFUyRiBISUQgQXV0
aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcxMDIwMjc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVzaWRpbmcg
YWRkaW5nIHRlc3RzIGZvciBVMkYgYXV0aGVudGljYXRvcnMsIGl0IGFsc28gY2hhbmdlcyBwYXls
b2FkQmFzZTY0IGZyb20KKyAgICAgICAgYSBzdHJpbmcgdG8gYSB2ZWN0b3Igb2Ygc3RyaW5ncy4g
TmV3IHRlc3RzIGFyZSBza2lwcGVkIGZvciBpT1MuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICAq
IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11
MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWw6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRw
cy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTktMDEtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIExheW91dFRlc3RzL2h0dHAvd3B0L2ZldGNoL2NzcC1yZXBvcnRz
LWJ5cGFzcy1jc3AtY2hlY2tzLmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbAppbmRleCBl
MjQ0MDVmYWZlN2E5Zjc3YmIzMDc0MjE2MmUwYjE4ODg0Y2FhZmQxLi5jNDZlZTM5MTM4ZjBlZmVj
Zjc0MTI5NmVkYWU3ZjkzMjhhNTRjZTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCkBAIC02NCw3ICs2
NCw3IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFzZTY0OnRlc3REdW1t
eU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFz
ZTY0Olt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKGRlZmF1bHRPcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNv
ZGU6IC0xIik7CiAgICAgfSwgIkNUQVAgSElEIHdpdGggcmVxdWVzdDo6bXNnIHN0YWdlIHdyb25n
IGNoYW5uZWwgaWQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1z
dWNjZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhp
ZC1zdWNjZXNzLmh0dHBzLmh0bWwKaW5kZXggZGIwMmQ1NDE4YTZjMDVjMzg0YWU1YTgyMjZmNWJm
Mjk5YjNhZTg3ZS4uOGU1ZDA5NWU1ZmQ5ODNmYWFhYzRkN2UzYTQ2MmIwY2NkZDk3ZDYwNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1
Y2Nlc3MuaHR0cHMuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7
IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5
bG9hZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwga2VlcEFsaXZlOiB0cnVlIH0g
fSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NF0s
IGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShkZWZhdWx0T3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCBudWxsKTsKQEAgLTMwLDcgKzMwLDcgQEAK
IAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNl
NjQsIGZhc3REYXRhQXJyaXZhbDogdHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBmYXN0RGF0YUFycml2YWw6IHRydWUgfSB9KTsK
ICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhj
cmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3Jl
ZGVudGlhbCwgbnVsbCk7CkBAIC0zOSw3ICszOSw3IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiLCBw
YXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0LCBjb250aW51ZUFmdGVyRXJy
b3JEYXRhOiB0cnVlIH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJpbmZvIiwgc3ViU3RhZ2U6
ICJpbml0IiwgZXJyb3I6ICJlbXB0eS1yZXBvcnQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0
aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVk
ZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVu
dGlhbCwgbnVsbCk7CkBAIC00OCw3ICs0OCw3IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwg
cGF5bG9hZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwgY29udGludWVBZnRlckVy
cm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
Q3JlYXRpb25NZXNzYWdlQmFzZTY0XSwgY29udGludWVBZnRlckVycm9yRGF0YTogdHJ1ZSB9IH0p
OwogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShkZWZhdWx0T3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGNyZWRlbnRpYWwsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhj
cmVkZW50aWFsLCBudWxsKTsKQEAgLTU3LDcgKzU3LDcgQEAKIAogICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQiLCBlcnJvcjogIndyb25nLW5vbmNlIiwg
cGF5bG9hZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwgY29udGludWVBZnRlckVy
cm9yRGF0YTogdHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdl
OiAiaW5pdCIsIGVycm9yOiAid3Jvbmctbm9uY2UiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0
aW9uTWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVk
ZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVu
dGlhbCwgbnVsbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCBiOTk1M2Y5ZjViM2E1NTZm
MWI1MmJhYjUyYjRiOWMwYmM5ODdkZTM4Li42NjAwNGEzMjE1M2U2NTQ0Y2IwODg2ZmY4NGE2Zjkx
ZWRkNjQ2NTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAg
ICAgICAgfTsKIAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15TWVzc2Fn
ZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7
CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
Iik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsaWNp
b3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKaW5k
ZXggMmRkZTZkMDlhYTEyYjkwYmJhNzBhNGZmMWE0ZjkxNGFlZTdjOWQ1MC4uZjE2M2EzOTZmMmFk
ZDkzODkyOGJmZmQzNzYxZWY1N2Y0YWZjZGQzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbApAQCAtNDYsNyArNDYsNyBA
QAogICAgICAgICB9OwogCiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhp
ZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3Vz
LXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9
IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdl
UGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVW5r
bm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogLTEiKTsKICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxpY2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDYzYjdhMjgyNWZiYTc3MjY0MzU3ZjE0YzMzZmE0ODRkNjYxNWRj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWFsZm9ybWVkIEFQRFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1l
ZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5k
IGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlk
IGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vj
b25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhj
bHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiBUZXN0
IG9mIHVzZXIgcHJlc2VuY2UuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NDE3OTk4YmM3MTg3MTRhOThkMzBhNTQ4NzIyNWYxMGJjYjI2ZjYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDE2NSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gZmFpbHVyZSBjYXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVu
dGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVv
dXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVx
dWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJm
OiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbIkFRPT0iXSB9IH0pOworICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFt
cGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
KyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJlc3BvbnNl
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJl
OiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVy
cm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0s
CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBk
dU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25s
eVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
Ik5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAg
IHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJK
b2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNj
aWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJh
bXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBl
eGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVl
c3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjog
dHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3Jl
ZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIC8v
IE1hdGNoIHRoZSBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsLgorICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwg
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJ
ZEJhc2U2NCkgfV0sIC8vIFRoZSBjb250ZW50IGRvZXNuJ3QgbWF0dGVyLgorICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0
YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9h
ZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5
UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRp
YWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNl
NjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFp
bHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJy
b3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVz
dFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
QXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vy
cm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNjNiN2EyODI1ZmJh
NzcyNjQzNTdmMTRjMzNmYTQ4NGQ2NjE1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
dTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKKworUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQg
ZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE1N2Q5ZTg4YTA2YmVkNDZjN2Q0ZmQ4NWUxNjAxY2UyYWVjZjQyM2QKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNTggQEAKKzwhRE9D
VFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1dGhlbnRp
Y2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBp
c1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsKKyAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFyc2UgdGhlIEFQRFUgcmVzcG9uc2UuIik7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIEFQ
RFUgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdl
OiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHJlZ2lz
dGVyIHJlc3BvbnNlLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIG1hbGZvcm1lZCBVMkYgcmVnaXN0ZXIgcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAg
ICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTog
YXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQ
YXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDog
eyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBh
eWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1SW5zTm90U3Vw
cG9ydGVkT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNzkwNCIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlZ2lzdGVyIGNvbW1h
bmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAg
ICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0
KSB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVJbnNOb3RT
dXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IDI3OTA0Iik7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggYm9ndXMgY29tbWFu
ZCBlcnJvciBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
dXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAg
ICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JP
bmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhj
bHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50
aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgLy8gTWF0
Y2ggdGhlIHNlY29uZCBleGNsdWRlIGNyZWRlbnRpYWwuCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9LCB7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFz
ZTY0KSB9XSAvLyBUaGUgY29udGVudCBkb2Vzbid0IG1hdHRlci4KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsg
c3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXls
b2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9u
bHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBh
biBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIGF1dGhlbnRpY2F0
b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2Vj
b25kIGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVk
ZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6
IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRP
bmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlS
ZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRp
YWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhl
IGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiBUZXN0IG9mIHVzZXIgcHJlc2VuY2UuIik7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRt
bAppbmRleCA1ZDkzYjgwN2E0NGM1MzczNGE3ZjVkODExZGY2MDEzNTYyYzA1YzdjLi4wZDc5YTlh
ZDlhNmI5ODQ3NGM3NWJmYzEzZDU4YzFkZTA3NDFhYTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3Mt
aGlkLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC03LDcgKzcs
NyBAQAogPHNjcmlwdD4KICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMg
bmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCiAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRp
b25NZXNzYWdlQmFzZTY0IH0gfSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3JlYXRpb25N
ZXNzYWdlQmFzZTY0XSB9IH0pOwogCiAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3YjI2MTdmYTg4
N2Y3MTMxYzJjMGQ4ZDIzOWE4OTc5YmIzYzRlNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sg
dTJmIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIGV4Y2x1ZGVDcmVkZW50aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIAor
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVkZW50
aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuIDIgCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9jayB1
MmYgYXV0aGVudGljYXRvci4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWIxOGQxN2RiNTg4Njk4
MTY2ODNlODVmYjAzM2M5ODA4Yzg0OWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUy
Zi5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5X
ZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBz
dWNjZXNzIGNhc2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvY2Jvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25zZQorICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0
VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0
eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJo
dHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cygiTm90U3Vw
cG9ydGVkRXJyb3IiLCAoKSA9PiB7IGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0
cygpIH0pOworCisgICAgICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0
dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3Rh
dGlvbk9iamVjdCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10
LCAiZmlkby11MmYiKTsKKyAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKKyAgICAgICAgY29uc3Qg
YXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCks
ICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNi
YTgzMWQ5NzYzIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY1KTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLmFhZ3VpZCksICIwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF1
dGhEYXRhLmNyZWRlbnRpYWxJRCwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRC
YXNlNjQpKTsKKyAgICAgICAgLy8gQ2hlY2sgZmlkby11MmYgYXR0ZXN0YXRpb24KKyAgICAgICAg
YXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWMubGVuZ3RoLCAxKTsK
KyAgICB9CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4g
QXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBw
bGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTog
QmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQ
YXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAg
ICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGlj
YXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAg
ICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9j
ayB1MmYgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFz
ZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAg
ICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxv
YWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUy
ZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRpYWxzIGluIGEgbW9jayB1
MmYgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAg
ICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0
VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
IH1dLCAvLyBUaGUgY29udGVudCBkb2Vzbid0IG1hdHRlci4KKyAgICAgICAgICAgICAgICB0aW1l
b3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUy
ZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25s
eVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0gfSB9KTsKKyAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9
KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNsdWRl
Q3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAyIik7CisKKyAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVz
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCks
CisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJN
VEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiA1MDAKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Q29uZGl0
aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25kaXRpb25z
Tm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZV0g
fSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9y
LiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCBlMzYzNmMzZTc1YjdkNjAxNjFk
NTAwYjIxMmVmMTU4ODQ2MDdjMDI1Li4xNDRiYTlkODlhOWJkODYwNmQ5NDQ3ODBkNDRiYmExZjk1
MjAyMzIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgfTsK
IAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0
cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1h
bGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15TWVzc2FnZVBheWxvYWRC
YXNlNjQgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXls
b2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CiAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4g
YSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKaW5kZXggZWM2YjBhODhmYTlhNDI3ODQ4
M2I0MDA2MTFjN2Y5OWQyODg1ZmY3Yi4uNWFjMjEzOTBhMjUyYTYzYWEzNzU5MzQ1YmQ1MTIwMzlm
ODczNWY5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1o
aWQuaHR0cHMuaHRtbApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICB9OwogCiAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiB0
ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0RHVtbXlNZXNzYWdlUGF5bG9hZEJhc2U2NF0gfSB9KTsKICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiVW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29k
ZTogLTEiKTsKICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxp
Y2lvdXMgcGF5bG9hZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2ls
ZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTA2MTQ1YmQ1NWZhYzVkNDY5Yjdl
MzhhZTkwNWE5MDE4ZmJlZTRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBh
bGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhN2NkOGE1YmI5MWQ4MWIxNDc2YWRkN2M0MmQwMTM2M2Iw
ZDZjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sCkBA
IC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlv
biBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIGZhaWx1cmUgY2FzZXMgd2l0aCBh
IG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBz
dGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxv
YWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0
b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxs
b3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNl
KHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25m
aWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIs
IHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVl
LCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRd
IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0
Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBh
c2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6
IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVz
dCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0
cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNl
NjQsIHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3Jl
ZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7Cis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEwNjE0NWJkNTVmYWM1ZDQ2OWI3ZTM4YWU5MDVh
OTAxOGZiZWU0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFs
bG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFs
cyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIDIgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDM1YjVm
NWM3ZjAxZTY2ZDIxODMxNWNlMDA5YTBjYTZkMWJmMmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLXUyZi5odHRwcy5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRp
dGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IGZhaWx1cmUgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3IuPC90aXRsZT4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFz
ZTY0KSB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1z
ZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiBzaWduIHJlc3BvbnNl
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGZvcm1l
ZCBzaWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJ
ZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxs
b3dDcmVkZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cg
Y3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFz
ZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3Jl
ZGVudGlhbElkQmFzZTY0KSB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0
ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gY3JlZGVudGlhbHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50
aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlh
bHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAppbmRleCA2
N2RiODMxMDA3ZjdhMmM1MDQ1ZDcyZGFlM2UxY2Q4MDAxY2MyNGQwLi43NDM2MjQ2NmUzZmI1Mzgx
NzExYjkyOTc0NDQ3YTU2N2ZjMTkzZmU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCkBAIC02LDcgKzYsNyBAQAogPHNjcmlwdD4K
ICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCiAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBl
cnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2
NCB9IH0pOworICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRd
IH0gfSk7CiAKICAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQogICAgIHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM0YTM5ZWFhMjhkNWE0NGNjNGFjMDY2OTc5MjQz
OTY0YTliNDIzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbW9yZSBhbGxvdyBjcmVkZW50aWFs
cyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIHRlc3Qgb2YgdXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgaGlkIGF1dGhl
bnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
dTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE2YWFmY2NkMDEzYzIyYWRjZDQzZTBhMzU4NTcw
ZTEwODkzMjBmMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24g
QVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBzdWNjZXNzIGNhc2VzIHdpdGggYSBt
b2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwpCisgICAgeworICAgICAgICAvLyBDaGVjayByZXNwb25kCisgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBCYXNlNjRVUkwucGFyc2Uo
dGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRl
bnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhu
ZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZD
cmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlT
dHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJh
dXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxo
b3N0Ojk0NDMifScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwucmVzcG9uc2Uu
dXNlckhhbmRsZSwgbnVsbCk7CisKKyAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKKyAgICAgICAg
Y29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShuZXcgVWludDhBcnJheShjcmVkZW50aWFs
LnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFzaCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3
MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgzMWQ5NzYzIik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDEpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1
dGhEYXRhLmNvdW50ZXIsIDU5KTsKKyAgICB9CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAg
ICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2
NDogW3Rlc3RVMmZTaWduUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAg
ICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVibGljLWtl
eSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1
ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtb3JlIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9j
ayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAg
ICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAg
ICB0aW1lb3V0OiA1MDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3Rh
Z2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVz
dFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJm
U2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UgaW4gYSBtb2NrIGhp
ZCBhdXRoZW50aWNhdG9yLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IDgzZjRiNDhhZGNmMjViNzAwNGU5NzAx
ZjQ3ZjAxM2Y4YTA1OWFmYWIuLmY2MDk4NmI0NzIyN2VjZWQzMWExOGYyMmMwYzkxZjk0YWM0ZmEx
YmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91
dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGls
LmpzCkBAIC02OSw2ICs2OSwzNCBAQCBjb25zdCB0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NCA9
CiAgICAgIlo1MVZzdHVRa3VISTJlWGgwQ3QxZ1BDMGdTeDNDV0xoNUk5YTJBRUFBQUJRQTFoSE1F
VUNJUUNTRlR1dUJXZ0IiICsKICAgICAiNC9GMFZCN0RsVVZNMDlJSFBteGUxTXpIVXdSb0NSWmJD
QUlnR0tvdjZ4b0F4Mk1FZjYvNnFOczhPdXR6aFAyQyIgKwogICAgICJRb0oxTDdGZTY0Rzl1QmM9
IjsKK2NvbnN0IHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCA9ICJrQUE9IjsK
K2NvbnN0IHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVkT25seVJlc3BvbnNlQmFzZTY0ID0gImJR
QT0iOworY29uc3QgdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQgPSAiYW9B
PSI7Citjb25zdCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VC
YXNlNjQgPSAiYVlVPSI7Citjb25zdCB0ZXN0VTJmUmVnaXN0ZXJSZXNwb25zZSA9CisgICAgIkJR
VG9kaVdKYnVUa2JjQXlkbTZBaDVZdk50K2Qvb3RXZnpkakFWc1prS1lPRkNmZVlTMW1RWXZhR1ZC
WUhyeGMiICsKKyAgICAiakIydGNReXhUQ0w0eVhCRjlHRXZzZ3lSUUQ2OWliOTM3RkNYVmU2Y0pq
WHZxcXg3SzV4Yzd4YzJ3M0Y5cElVMCIgKworICAgICJ5TWEyVk5mL2xGOVF0Y3hPZUFWYjNUbHJa
UGVOb3NYNVlnRE0xQlhOQ1A1Q0FEZ3dnZ0pLTUlJQk1xQURBZ0VDIiArCisgICAgIkFnUUViSWdp
TUEwR0NTcUdTSWIzRFFFQkN3VUFNQzR4TERBcUJnTlZCQU1USTFsMVltbGpieUJWTWtZZ1VtOXYi
ICsKKyAgICAiZENCRFFTQlRaWEpwWVd3Z05EVTNNakF3TmpNeE1DQVhEVEUwTURnd01UQXdNREF3
TUZvWUR6SXdOVEF3T1RBMCIgKworICAgICJNREF3TURBd1dqQXNNU293S0FZRFZRUUREQ0ZaZFdK
cFkyOGdWVEpHSUVWRklGTmxjbWxoYkNBeU5Ea3hPREl6IiArCisgICAgIk1qUTNOekF3V1RBVEJn
Y3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVE4eXJrc3k1Y29mdWptT1VOK0lmelciICsKKyAg
ICAidHZGbHN0V2o4OXNUSFRIQmEzUXJ0SGJZMGVtUWdPdFViSnU5OVZibUlRL1VKNFdKbm5qTVdK
NitNUTlzMjUvMCIgKworICAgICJvenN3T1RBaUJna3JCZ0VFQVlMRUNnSUVGVEV1TXk0MkxqRXVO
QzR4TGpReE5EZ3lMakV1TWpBVEJnc3JCZ0VFIiArCisgICAgIkFZTGxIQUlCQVFRRUF3SUVNREFO
QmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbjVzRklraThUUFFzeFprZnlxdXMiICsKKyAgICAibTJV
YnZsdmMzSTd3clN3Y0gvczIwWWNWMUM1NHNra2lUNUxINXVlZ1hFbnc1K1RJZ2I4dWxQUmVTaUdE
UFhSVyIgKworICAgICJoUjBQYkJSYUtWUU1oMDh3a3NrMHREMGlLNGxpd1BRUXp2SGJkWWtxOFJh
MFNwYjEwMXJlbzRJdnh4UnZZQVE0IiArCisgICAgIlc4dHB0bHlaNSt0cEdYaG5BOERZelVIbzkx
ektSS3FLdHlXdGpubWY4NmhwYW04YkpsYm1NYkhrQVlQQWo5cFQiICsKKyAgICAiK2txUGhhQldr
NVJLNFhtaE01MEFMUlhLdllFQWtPeHlMdlhlK1paYU54MUJYV0pMYUtKd2ZLMlh2TjBYaGErWCIg
KworICAgICI0bGp6UGZWcUF4cWdOVzJPalY2OHJjZE9CeFkyeHJFUXJPWE1tNURmNnNybVFQOGJz
UEgrWGJUdjk2bGZCZ2N6IiArCisgICAgIjlUQkZBaUF5UjNuR2p6T0FLSW9SbDdZSlgzcHV1Ykd4
d1NmMmF1RXFtZjZGTXV3anVRSWhBT09WRnF4TlllNWsiICsKKyAgICAiQkUxUXRCV21wTlRZUzZi
WWxjdGF0NkdxZlFnZDQwSDZrQUE9IjsKK2NvbnN0IHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQg
PQorICAgICJQcjJKdjNmc1VKZFY3cHdtTmUtcXJIc3JuRnp2RnpiRGNYMmtoVFRJeHJaVTFfLVVY
MUMxekU1NEJWdmRPV3RrIiArCisgICAgIjk0Mml4ZmxpQU16VUZjMElfa0lBT0EiOworY29uc3Qg
dGVzdFUyZlNpZ25SZXNwb25zZSA9CisgICAgIkFRQUFBRHN3UkFJZ2U5NEtVcXdmVElzbjRBT2pj
TTFtcE1jUmpkSXRWRWVEWDBXNW5HaENQL2NDSUR4UmUwZUgiICsKKyAgICAiZjRWNExlRUFocWVE
MGVmZlRqWTU1M0gxOXEraldxMVRjNFdPa0FBPSI7CiAKIGNvbnN0IFJFU09VUkNFU19ESVIgPSAi
L1dlYktpdC93ZWJhdXRobi9yZXNvdXJjZXMvIjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZmMDAxZThiNTI2NzQ4YTYxNWI0ZTkyZGU2
ZTJkNjNmYTY0ZWY4ZGQuLjUxMTY0ZTdjNzMyMzllMDgxNTBiMjc3MzM3NzM1MjA0NmNhZDBmMjQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzMjcsNiArMTMyNywxMiBAQCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0
bWwgWyBTa2lwIF0KIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1oaWQuaHR0cHMuaHRtbCBbIFNraXAgXQogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sIFsgU2tpcCBdCitodHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNp
bGVudC5odHRwcy5odG1sIFsgU2tpcCBdCitodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwgWyBTa2lwIF0KK2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMu
aHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRwcy5odG1sIFsgU2tp
cCBdCitodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3Mt
dTJmLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAogIyBGSVhNRTogVW5za2lwIHRoZXNlIHRlc3RzIG9u
Y2Ugd2UgaGF2ZSB0aGUgZml4IGZvciA8cmRhcjovL3Byb2JsZW0vNDQ5MzAxMTk+LgogZmFzdC9m
b3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2li
bGUtYWZ0ZXItaGlkaW5nLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBT
a2lwIF0K
</data>
<flag name="review"
          id="375458"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358644</attachid>
            <date>2019-01-08 15:56:26 -0800</date>
            <delta_ts>2019-01-08 16:35:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191535-20190108155624.patch</filename>
            <type>text/plain</type>
            <size>105790</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE2MTdkOGMwYTMwNjdj
N2RjZjk3NGY4NTEwZTMyODMzYzZkMTQ4NS4uODBmMGNlNjJiZTIwYjU0NzkxN2JjMzQ4MzA4MGNm
NjlhZjMwNWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTA3ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhOXSBTdXBw
b3J0IFUyRiBISUQgQXV0aGVudGljYXRvcnMgb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTUzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDcxMDIwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgVTJmQ29tbWFuZENvbnN0cnVjdG9yIHRvIHByb2R1Y2Ug
cmVnaXN0ZXIgY29tbWFuZHMgd2l0aAorICAgICAgICBlbmZvcmNpbmcgdGVzdCBvZiB1c2VyIHBy
ZXNlbmNlLiBPdGhlcndpc2UsIGF1dGhlbnRpY2F0b3JzIHdvdWxkIHNpbGVudGx5CisgICAgICAg
IGdlbmVyYXRlIGNyZWRlbnRpYWxzLiBJdCBhbHNvIHJlbmFtZXMgcmVhZEZyb21VMmZTaWduUmVz
cG9uc2UgdG8KKyAgICAgICAgcmVhZFUyZlNpZ25SZXNwb25zZS4KKworICAgICAgICBUZXN0czog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUy
Zi1zaWxlbnQuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS11MmYuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAg
ICAgICAgKGZpZG86OnJlYWRVMmZTaWduUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6cmVhZEZy
b21VMmZTaWduUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oOgorCiAyMDE5LTAxLTA4ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBzZXJ2aWNlIHdvcmtlciBmZXRjaCBoYW5k
bGVyIHJlc3VsdHMgaW4gYmFkIHJlZmVycmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2YzJhMzQ2ZTVjNWRkZDIx
Nzk4ZmY5M2E5ZGQ1MjI2YWI4MzY2NGEuLmMzNWI5ZjNiOTFlMTMyOGE1ZTVhMTA3ZDhlZjE1ZGYw
NTk1YjUyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTktMDEtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQg
VTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgc3VwcG9ydCBmb3IgVTJGIGF1dGhlbnRpY2F0b3Jz
LCBhbmQgZW5hYmxlcyBpdCBmb3IgaGlkIGRldmljZXMuCisgICAgICAgIEl0IGZvbGxvd3MgdGhl
IENUQVAgc3BlYyB0byBtYXAgV2ViQXV0aE4gcmVxdWVzdHMgdG8gVTJGIGNvbW1hbmRzIGFuZCBy
ZXR1cm4gdGhlIHJlc3BvbnNlczoKKyAgICAgICAgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3Nw
ZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXBy
b3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtaW50ZXJvcGVyYWJpbGl0eQorICAgICAg
ICBNb3N0IG9mIHRoZSBwYXJ0cyBhcmUgZG9uZSBiZWZvcmUgdGhpcyBwYXRjaCwgdGhpcyBwYXRj
aCBmb2N1ZXMgb246IDcuMi4yIGFuZCA3LjMuMi4KKworICAgICAgICBCZXNpZGVzIGltcGxlbWVu
dGluZyB0aGUgVTJmSGlkQXV0aGVudGljYXRvciwgdGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9y
dCBpbiB0aGUgbW9ja2luZworICAgICAgICBlbnZpcm9ubWVudCBmb3IgVTJGIGF1dGhlbnRpY2F0
b3JzLiBJdCBpcyBkb25lIGJ5IGV4dGVuZGluZyB0aGUgc3RhZ2VzIGluIE1vY2tIaWRDb25uZWN0
aW9uCisgICAgICAgIGZyb20gNCB0byBpbmRlZmluaXRlIGFzIG11bHRpLXJvdW5kIGNvbW11bmlj
YXRpb25zIGFyZSBleHBlY3RlZCB0byBtYXAgV2ViQXV0aE4gcmVxdWVzdHMKKyAgICAgICAgdG8g
VTJGIHJlcXVlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6SGlkU2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpjb250aW51ZUFmdGVyQ2hhbm5l
bEFsbG9jYXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8v
Q3RhcEhpZERyaXZlci5oOgorICAgICAgICAoV2ViS2l0OjpDdGFwSGlkRHJpdmVyOjpzZXRQcm90
b2NvbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlk
QXV0aGVudGljYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRoZW50
aWNhdG9yOjpVMmZIaWRBdXRoZW50aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRo
ZW50aWNhdG9yOjpjaGVja0V4Y2x1ZGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6aXNzdWVSZWdpc3RlckNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpVMmZI
aWRBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRB
dXRoZW50aWNhdG9yOjppc3N1ZVNpZ25Db21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6aXNzdWVOZXdDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6aXNzdWVDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0
aGVudGljYXRvcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkhpZEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlkQXV0aGVudGljYXRvcjo6Y29udGludWVDaGVja09u
bHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6VTJmSGlk
QXV0aGVudGljYXRvcjo6Y29udGludWVCb2d1c0NvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViS2l0OjpVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250aW51ZVNpZ25Db21t
YW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTktMDEtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIHNlcnZpY2Ugd29ya2VyIGZldGNoIGhhbmRsZXIgcmVzdWx0cyBpbiBiYWQgcmVm
ZXJyZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9V
MmZDb21tYW5kQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTYwNmFiMGQxMzQ4OGE4YTA4
ZTVlYjMwNGFkYjYzMGQzNDM1ZTBjOS4uMjFiYTYwOTI0M2ZiMGQxZTM1OTZlMzljOTM2NzExM2E2
ZDViOGRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKQEAgLTU0LDYgKzU0LDggQEAg
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWMKIAogICAgIGFwZHU6OkFwZHVDb21tYW5kIGNvbW1hbmQ7
CiAgICAgY29tbWFuZC5zZXRJbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4oVTJmQXBkdUluc3RydWN0
aW9uOjprUmVnaXN0ZXIpKTsKKyAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgdGVzdCBvZiB1c2Vy
IHByZXNlbmNlIGV2ZW4gdGhvdWdoIHRoZSBzcGVjIGRvZXNuJ3Qgc3BlY2lmeSBpdC4KKyAgICBj
b21tYW5kLnNldFAxKGtQMUVuZm9yY2VVc2VyUHJlc2VuY2VBbmRTaWduKTsKICAgICBjb21tYW5k
LnNldERhdGEoV1RGTW92ZShkYXRhKSk7CiAgICAgY29tbWFuZC5zZXRSZXNwb25zZUxlbmd0aChh
cGR1OjpBcGR1Q29tbWFuZDo6a0FwZHVNYXhSZXNwb25zZUxlbmd0aCk7CiAgICAgcmV0dXJuIGNv
bW1hbmQuZ2V0RW5jb2RlZENvbW1hbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4
IGM0NWExNzExNzk5MDIxMzU2YmE3ODVjZWYxNmMyOGE5MWEzMDFiZTAuLmNiNDY3ODE2OGI0Yjgy
ZDFlNGFlN2UwYTc3Y2QxYTI1NGE4NzM2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApA
QCAtMTczLDcgKzE3Myw3IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFk
VTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvCiAgICAgcmV0dXJuIFB1
YmxpY0tleUNyZWRlbnRpYWxEYXRhIHsgQXJyYXlCdWZmZXI6OmNyZWF0ZShjcmVkZW50aWFsSWQu
ZGF0YSgpLCBjcmVkZW50aWFsSWQuc2l6ZSgpKSwgdHJ1ZSwgbnVsbHB0ciwgQXJyYXlCdWZmZXI6
OmNyZWF0ZShhdHRlc3RhdGlvbk9iamVjdC5kYXRhKCksIGF0dGVzdGF0aW9uT2JqZWN0LnNpemUo
KSksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIH0KIAotT3B0aW9uYWw8UHVibGljS2V5
Q3JlZGVudGlhbERhdGE+IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdTJmRGF0YSkKK09wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmU2ln
blJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlI
YW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSkKIHsKICAgICBpZiAoa2V5SGFu
ZGxlLmlzRW1wdHkoKSB8fCB1MmZEYXRhLnNpemUoKSA8PSBzaWduYXR1cmVJbmRleCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmgKaW5kZXggZDZhNDFm
ODczZDhiYmM0ZjlhNWEwZjA3ZTMwZDY3ZjI3ZGYyYWJjYy4uNGM2ZDI0ZTViNGY3ZTIyYTY2YjMz
NGY1Zjg3MzRmOWU0ZjE0OGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmgKQEAgLTQyLDcgKzQy
LDcgQEAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlh
bERhdGE+IHJlYWRVMmZSZWdpc3RlclJlc3BvbnMKIAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVu
dGljYXRpb24gcmVzcG9uc2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8g
aHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRv
LWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1
MmYtYXV0aGVudGljYXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YT4gcmVhZEZyb21V
MmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhKTsKK1dFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhPiByZWFkVTJmU2ln
blJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlI
YW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSk7CiAKIH0gLy8gbmFtZXNwYWNl
IGZpZG8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKaW5kZXggNDk2ZTg4YzgzZmJkOWVjNGNjZWIxYzI4OWYzZDNmOGE1
YWFmOGI5Zi4uZjU4MDAxZWIxMmRmNzgyZDBiNzI3OTg1NzllNDdhMTIwOGNhMzM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CkBAIC0zODUsNiArMzg1LDEwIEBAIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ci5jcHAKIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAKIAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZEF1dGhlbnRp
Y2F0b3IuY3BwCitVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVy
LmNwcAorVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlkQXV0aGVudGljYXRv
ci5jcHAKKwogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENv
bm5lY3Rpb24uY3BwCiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2Vy
dmljZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGNmNmNhZjY4OWE2MTA0ZGE3Nzc3ZTg1Nzk5Mzgy
MzNlZTM0MGU4ZGMuLjYxZTkzYzg0ZmQ0NmJhYmY3MjMyNTQyNDg3NDU1MGQxMWU3YTVjNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcApAQCAtNjI3LDggKzYyNywxMSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UgogICAgICAgICBpZiAoZXJyb3IgPT0gIndyb25nLW5vbmNlIikKICAgICAgICAgICAgIGhpZC5l
cnJvciA9IFdlYktpdDo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkOjpF
cnJvcjo6V3JvbmdOb25jZTsKIAotICAgICAgICBpZiAoYXV0byBwYXlsb2FkQmFzZTY0ID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0IikpLmdl
dCgpKSkpCi0gICAgICAgICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBsKHBh
eWxvYWRCYXNlNjQpLT5zdHJpbmcoKTsKKyAgICAgICAgaWYgKGF1dG8gcGF5bG9hZEJhc2U2NCA9
IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVm
LCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXlsb2FkQmFzZTY0Iikp
LmdldCgpKSkpCisgICAgICAgICAgICBoaWQucGF5bG9hZEJhc2U2NCA9IFdlYktpdDo6dG9JbXBs
KHBheWxvYWRCYXNlNjQpLT50b1N0cmluZ1ZlY3RvcigpOworCisgICAgICAgIGlmIChhdXRvIGlz
VTJmID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGhpZFJlZiwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSXNVMmYiKSku
Z2V0KCkpKSkKKyAgICAgICAgICAgIGhpZC5pc1UyZiA9IFdLQm9vbGVhbkdldFZhbHVlKGlzVTJm
KTsKIAogICAgICAgICBpZiAoYXV0byBrZWVwQWxpdmUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaGlkUmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJLZWVwQWxpdmUiKSkuZ2V0KCkpKSkKICAgICAgICAgICAgIGhp
ZC5rZWVwQWxpdmUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShrZWVwQWxpdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UubW0KaW5kZXggMjM3YjFiNDYwNzI4MTE5MTMyZGY3OTgzOWNhNjc2NDUzNWQ2M2Vl
Zi4uM2RhODcwNjBkYjU3NjI5MDRiMzNiYTE2ZmNjYzg0Y2ZhM2UxMmU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vydmlj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9IaWRTZXJ2aWNlLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJDdGFwSGlkQXV0aGVu
dGljYXRvci5oIgogI2ltcG9ydCAiQ3RhcEhpZERyaXZlci5oIgogI2ltcG9ydCAiSGlkQ29ubmVj
dGlvbi5oIgorI2ltcG9ydCAiVTJmSGlkQXV0aGVudGljYXRvci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RldmljZVJlc3Bv
bnNlQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpZG9Db25zdGFudHMuaD4KQEAgLTEw
OCw3ICsxMDksNyBAQCB2b2lkIEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVm
IGRldmljZSkKIHZvaWQgSGlkU2VydmljZTo6Y29udGludWVBZGREZXZpY2VBZnRlckdldEluZm8o
Q3RhcEhpZERyaXZlciogcHRyLCBWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkKIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4gZHJpdmVyID0gbV9kcml2ZXJzLnRha2UocHRy
KTsKLSAgICBpZiAoIWRyaXZlciB8fCAhb2JzZXJ2ZXIoKSkKKyAgICBpZiAoIWRyaXZlciB8fCAh
b2JzZXJ2ZXIoKSB8fCByZXNwb25zZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gaW5mbyA9IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKHJlc3BvbnNlKTsKQEAgLTExNiw4
ICsxMTcsOSBAQCB2b2lkIEhpZFNlcnZpY2U6OmNvbnRpbnVlQWRkRGV2aWNlQWZ0ZXJHZXRJbmZv
KEN0YXBIaWREcml2ZXIqIHB0ciwgVmVjdG9yPHVpbnQ4XwogICAgICAgICBvYnNlcnZlcigpLT5h
dXRoZW50aWNhdG9yQWRkZWQoQ3RhcEhpZEF1dGhlbnRpY2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGRy
aXZlciksIFdURk1vdmUoKmluZm8pKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8g
RklYTUUoMTkxNTM1KTogU3VwcG9ydCBVMkYgYXV0aGVudGljYXRvcnMuCiAgICAgTE9HX0VSUk9S
KCJDb3VsZG4ndCBwYXJzZSBhIGN0YXAgZ2V0IGluZm8gcmVzcG9uc2UuIik7CisgICAgZHJpdmVy
LT5zZXRQcm90b2NvbChQcm90b2NvbFZlcnNpb246OmtVMmYpOworICAgIG9ic2VydmVyKCktPmF1
dGhlbnRpY2F0b3JBZGRlZChVMmZIaWRBdXRoZW50aWNhdG9yOjpjcmVhdGUoV1RGTW92ZShkcml2
ZXIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmNwcAppbmRleCAwYjE3Njk5YmRkZTk3ODRiNGM3ODYzZDlkN2JlOTI0NTQ2
NWYyYTY0Li5kODZhM2E0NzJlNmJiNzczOTBlMzQwMWE2Y2RlODJjNjUzYTY4NDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtMTI3LDQzICsxMjcsNDggQEAg
dm9pZCBNb2NrSGlkQ29ubmVjdGlvbjo6cGFyc2VSZXF1ZXN0KCkKICAgICAgICAgaWYgKHByZXZp
b3VzU3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6Ok1zZykKICAgICAgICAgICAgIG1fc3RhZ2Ug
PSBNb2NrOjpTdGFnZTo6UmVxdWVzdDsKICAgICB9Ci0gICAgaWYgKG1fcmVxdWVzdE1lc3NhZ2Ut
PmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvcikKKyAgICBpZiAobV9yZXF1ZXN0
TWVzc2FnZS0+Y21kKCkgPT0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yIHx8IG1fcmVxdWVz
dE1lc3NhZ2UtPmNtZCgpID09IEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKQogICAgICAgICBt
X3N1YlN0YWdlID0gTW9jazo6U3ViU3RhZ2U6Ok1zZzsKIAotICAgIC8vIFNldCBvcHRpb25zLgog
ICAgIGlmIChtX3N0YWdlID09IE1vY2s6OlN0YWdlOjpSZXF1ZXN0ICYmIG1fc3ViU3RhZ2UgPT0g
TW9jazo6U3ViU3RhZ2U6Ok1zZykgewotICAgICAgICBtX3JlcXVpcmVSZXNpZGVudEtleSA9IGZh
bHNlOwotICAgICAgICBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uID0gZmFsc2U7Ci0KLSAgICAg
ICAgYXV0byBwYXlsb2FkID0gbV9yZXF1ZXN0TWVzc2FnZS0+Z2V0TWVzc2FnZVBheWxvYWQoKTsK
LSAgICAgICAgQVNTRVJUKHBheWxvYWQuc2l6ZSgpKTsKLSAgICAgICAgYXV0byBjbWQgPSBzdGF0
aWNfY2FzdDxDdGFwUmVxdWVzdENvbW1hbmQ+KHBheWxvYWRbMF0pOwotICAgICAgICBwYXlsb2Fk
LnJlbW92ZSgwKTsKLSAgICAgICAgYXV0byByZXF1ZXN0TWFwID0gQ0JPUlJlYWRlcjo6cmVhZChw
YXlsb2FkKTsKLSAgICAgICAgQVNTRVJUKHJlcXVlc3RNYXApOwotCi0gICAgICAgIGlmIChjbWQg
PT0gQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsKSB7Ci0g
ICAgICAgICAgICBhdXRvIGl0ID0gcmVxdWVzdE1hcC0+Z2V0TWFwKCkuZmluZChDQk9SVmFsdWUo
Q3RhcE1ha2VDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmluZCBvcHRpb25zLgot
ICAgICAgICAgICAgaWYgKGl0ICE9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKLQotICAg
ICAgICAgICAgICAgIGF1dG8gaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtSZXNpZGVu
dEtleU1hcEtleSkpOwotICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgp
KQotICAgICAgICAgICAgICAgICAgICBtX3JlcXVpcmVSZXNpZGVudEtleSA9IGl0ci0+c2Vjb25k
LmdldEJvb2woKTsKLQotICAgICAgICAgICAgICAgIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JW
YWx1ZShrVXNlclZlcmlmaWNhdGlvbk1hcEtleSkpOwotICAgICAgICAgICAgICAgIGlmIChpdHIg
IT0gb3B0aW9uTWFwLmVuZCgpKQotICAgICAgICAgICAgICAgICAgICBtX3JlcXVpcmVVc2VyVmVy
aWZpY2F0aW9uID0gaXRyLT5zZWNvbmQuZ2V0Qm9vbCgpOworICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgaXNzdWUgZGlmZmVyZW50IG1zZyBjbWQgZm9yIENUQVAgYW5kIFUyRi4KKyAgICAgICAgQVNT
RVJUKG1fY29uZmlndXJhdGlvbi5oaWQtPmlzVTJmIF4gKG1fcmVxdWVzdE1lc3NhZ2UtPmNtZCgp
ICE9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnKSk7CisKKyAgICAgICAgLy8gU2V0IG9wdGlv
bnMuCisgICAgICAgIGlmIChtX3JlcXVlc3RNZXNzYWdlLT5jbWQoKSA9PSBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Nib3IpIHsKKyAgICAgICAgICAgIG1fcmVxdWlyZVJlc2lkZW50S2V5ID0gZmFs
c2U7CisgICAgICAgICAgICBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIGF1dG8gcGF5bG9hZCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmdldE1lc3NhZ2VQYXls
b2FkKCk7CisgICAgICAgICAgICBBU1NFUlQocGF5bG9hZC5zaXplKCkpOworICAgICAgICAgICAg
YXV0byBjbWQgPSBzdGF0aWNfY2FzdDxDdGFwUmVxdWVzdENvbW1hbmQ+KHBheWxvYWRbMF0pOwor
ICAgICAgICAgICAgcGF5bG9hZC5yZW1vdmUoMCk7CisgICAgICAgICAgICBhdXRvIHJlcXVlc3RN
YXAgPSBDQk9SUmVhZGVyOjpyZWFkKHBheWxvYWQpOworICAgICAgICAgICAgQVNTRVJUKHJlcXVl
c3RNYXApOworCisgICAgICAgICAgICBpZiAoY21kID09IEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1
dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCkgeworICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBy
ZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1ZShDdGFwTWFrZUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9uc0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgaWYgKGl0
ICE9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBpdHIgPSBvcHRpb25NYXAuZmluZChDQk9SVmFsdWUoa1Jlc2lkZW50S2V5TWFwS2V5
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlUmVzaWRlbnRLZXkgPSBpdHItPnNlY29uZC5n
ZXRCb29sKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JP
UlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1
aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vjb25kLmdldEJvb2woKTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAoY21kID09IEN0
YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24pIHsKLSAgICAgICAg
ICAgIGF1dG8gaXQgPSByZXF1ZXN0TWFwLT5nZXRNYXAoKS5maW5kKENCT1JWYWx1ZShDdGFwR2V0
QXNzZXJ0aW9uUmVxdWVzdE9wdGlvbnNLZXkpKTsgLy8gRmluZCBvcHRpb25zLgotICAgICAgICAg
ICAgaWYgKGl0ICE9IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKLSAgICAgICAgICAgICAg
ICBhdXRvIGl0ciA9IG9wdGlvbk1hcC5maW5kKENCT1JWYWx1ZShrVXNlclZlcmlmaWNhdGlvbk1h
cEtleSkpOwotICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKQotICAg
ICAgICAgICAgICAgICAgICBtX3JlcXVpcmVVc2VyVmVyaWZpY2F0aW9uID0gaXRyLT5zZWNvbmQu
Z2V0Qm9vbCgpOworICAgICAgICAgICAgaWYgKGNtZCA9PSBDdGFwUmVxdWVzdENvbW1hbmQ6OmtB
dXRoZW50aWNhdG9yR2V0QXNzZXJ0aW9uKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdCA9IHJl
cXVlc3RNYXAtPmdldE1hcCgpLmZpbmQoQ0JPUlZhbHVlKEN0YXBHZXRBc3NlcnRpb25SZXF1ZXN0
T3B0aW9uc0tleSkpOyAvLyBGaW5kIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgaWYgKGl0ICE9
IHJlcXVlc3RNYXAtPmdldE1hcCgpLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8m
IG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gaXRyID0gb3B0aW9uTWFwLmZpbmQoQ0JPUlZhbHVlKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdHIgIT0gb3B0aW9uTWFwLmVuZCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yZXF1aXJlVXNlclZlcmlmaWNhdGlvbiA9IGl0ci0+c2Vj
b25kLmdldEJvb2woKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMDcsOCArMjEyLDEyIEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OmZl
ZWRSZXBvcnRzKCkKICAgICAgICAgaW5mb0RhdGEuaW5zZXJ0KDAsIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKSk7IC8vIFByZXBlbmQgc3RhdHVz
IGNvZGUuCiAgICAgICAgIGlmIChzdGFnZXNNYXRjaCgpICYmIG1fY29uZmlndXJhdGlvbi5oaWQt
PmVycm9yID09IE1vY2s6OkVycm9yOjpXcm9uZ0NoYW5uZWxJZCkKICAgICAgICAgICAgIG1lc3Nh
Z2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwgLSAxLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbWVzc2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBpbmZvRGF0YSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaGlkLT5pc1UyZikKKyAgICAgICAgICAgICAg
ICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIGluZm9EYXRhKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRD
aGFubmVsLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Vycm9yLCB7IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtDdGFwMUVyckludmFsaWRDb21tYW5kKSB9KTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtX3N0YWdlID09IE1vY2s6OlN0YWdlOjpSZXF1
ZXN0ICYmIG1fc3ViU3RhZ2UgPT0gTW9jazo6U3ViU3RhZ2U6Ok1zZykgewpAQCAtMjIzLDkgKzIz
MiwxNCBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9uOjpmZWVkUmVwb3J0cygpCiAgICAgICAgICAg
ICBtZXNzYWdlID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2N1cnJlbnRDaGFubmVsLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0Nib3IsIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oQ3RhcERldmlj
ZVJlc3BvbnNlQ29kZTo6a0N0YXAyRXJyVW5zdXBwb3J0ZWRPcHRpb24pIH0pOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwYXlsb2FkOwotICAgICAgICAgICAg
YXV0byBzdGF0dXMgPSBiYXNlNjREZWNvZGUobV9jb25maWd1cmF0aW9uLmhpZC0+cGF5bG9hZEJh
c2U2NCwgcGF5bG9hZCk7CisgICAgICAgICAgICBBU1NFUlQoIW1fY29uZmlndXJhdGlvbi5oaWQt
PnBheWxvYWRCYXNlNjQuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGF1dG8gc3RhdHVzID0gYmFz
ZTY0RGVjb2RlKG1fY29uZmlndXJhdGlvbi5oaWQtPnBheWxvYWRCYXNlNjRbMF0sIHBheWxvYWQp
OworICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLmhpZC0+cGF5bG9hZEJhc2U2NC5yZW1vdmUo
MCk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVzKTsKLSAgICAgICAg
ICAgIG1lc3NhZ2UgPSBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciwgcGF5bG9hZCk7CisgICAgICAgICAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi5oaWQtPmlzVTJmKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGaWRv
SGlkTWVzc2FnZTo6Y3JlYXRlKG1fY3VycmVudENoYW5uZWwsIEZpZG9IaWREZXZpY2VDb21tYW5k
OjprQ2JvciwgcGF5bG9hZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWVz
c2FnZSA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jdXJyZW50Q2hhbm5lbCwgRmlkb0hpZERl
dmljZUNvbW1hbmQ6OmtNc2csIHBheWxvYWQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tI
aWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggZTBiZjg2YjJmZDFlMjY1YmZjMDI3Njgx
OWU5ZWJjZGNjMTEzMzk0OC4uM2RjYWJjNGI1ZGM5NzA1NzBmYjVlYzNmZjkxMzY4YmQ0ZWJmZmU2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uaApAQCAtMzUsMTEgKzM1LDEz
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gVGhlIGZvbGxvd2luZyBiYXNpY2FsbHkgc2lt
dWxhdGVzIGFuIGV4dGVybmFsIEhJRCB0b2tlbiB0aGF0OgotLy8gICAgMS4gT25seSBzdXBwb3J0
cyBDVEFQMiBwcm90b2NvbCwKKy8vICAgIDEuIFN1cHBvcnRzIG9ubHkgb25lIHByb3RvY29sLCBl
aXRoZXIgQ1RBUDIgb3IgVTJGLgogLy8gICAgMi4gRG9lc24ndCBzdXBwb3J0IHJlc2lkZW50IGtl
eXMsCiAvLyAgICAzLiBEb2Vzbid0IHN1cHBvcnQgdXNlciB2ZXJpZmljYXRpb24uCi0vLyBUaGVy
ZSBhcmUgZm91ciBzdGFnZXMgZm9yIGVhY2ggV2ViQXV0aE4gcmVxdWVzdDoKKy8vIFRoZXJlIGFy
ZSBmb3VyIHN0YWdlcyBmb3IgZWFjaCBDVEFQIHJlcXVlc3Q6CiAvLyBGU006IEluZm86OkluaXQg
PT4gSW5mbzo6TXNnID0+IFJlcXVlc3Q6OkluaXQgPT4gUmVxdWVzdDo6TXNnCisvLyBUaGVyZSBh
cmUgaW5kZWZpbml0ZSBzdGFnZXMgZm9yIGVhY2ggVTJGIHJlcXVlc3Q6CisvLyBGU006IEluZm86
OkluaXQgPT4gSW5mbzo6TXNnID0+IFtSZXF1ZXN0OjpJbml0ID0+IFJlcXVlc3Q6Ok1zZ10rCiAv
LyBBY2NvcmRpbmcgdG8gZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBlcnJvciBhbmQgc3RhZ2Vz
LCBlcnJvciB3aWxsIG1hbmlmZXN0IGRpZmZlcmVudGx5LgogY2xhc3MgTW9ja0hpZENvbm5lY3Rp
b24gZmluYWwgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0hpZENvbm5lY3Rpb24+LCBwdWJs
aWMgSGlkQ29ubmVjdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01v
Y2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCmluZGV4IDc4ODY3YTVmYzY2
NmI5N2RiOTA3MDI5NGU0ZWY5YmNkMGQ4MjIzN2MuLmJlMDg3MmZiZGZiOWNhYzgyNzgzYjU0NWY1
NDk5NmQ2NGVlNzkzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC02MSwxMCArNjEsMTEgQEAgc3RydWN0
IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICAgICAgV3JvbmdO
b25jZQogICAgICAgICB9OwogCi0gICAgICAgIFN0cmluZyBwYXlsb2FkQmFzZTY0OworICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBwYXlsb2FkQmFzZTY0OwogICAgICAgICBTdGFnZSBzdGFnZSB7IFN0
YWdlOjpJbmZvIH07CiAgICAgICAgIFN1YlN0YWdlIHN1YlN0YWdlIHsgU3ViU3RhZ2U6OkluaXQg
fTsKICAgICAgICAgRXJyb3IgZXJyb3IgeyBFcnJvcjo6U3VjY2VzcyB9OworICAgICAgICBib29s
IGlzVTJmIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBrZWVwQWxpdmUgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIGZhc3REYXRhQXJyaXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgY29udGlu
dWVBZnRlckVycm9yRGF0YSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNw
cAppbmRleCA2ZjI4NjIwMzJiYzViNjRlMzA5Yzc0ZDc2ZDk4YzIwYjI1NjI3MmE4Li4xZjllZjk4
Mzk0ZmVlNDc5NTNmOWM0MGI4YTI1YjliNGI3N2ZkZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhp
ZERyaXZlci5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6OmNvbnRp
bnVlQWZ0ZXJDaGFubmVsQWxsb2NhdGVkKE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiYmIG1lcwog
ICAgIC8vIEZJWE1FKDE5MTUzNCk6IENoZWNrIHRoZSByZXNldCBvZiB0aGUgcGF5bG9hZC4KICAg
ICAvLyBGSVhNRSgxOTIwNjEpCiAgICAgTE9HX0VSUk9SKCJTdGFydCBzZW5kaW5nIHRoZSByZXF1
ZXN0LiIpOwotICAgIGF1dG8gY21kID0gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZShtX2NoYW5uZWxJ
ZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYm9yLCBtX3JlcXVlc3REYXRhKTsKKyAgICBhdXRv
IGNtZCA9IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUobV9jaGFubmVsSWQsIG1fcHJvdG9jb2wgPT0g
UHJvdG9jb2xWZXJzaW9uOjprQ3RhcCA/IEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvciA6IEZp
ZG9IaWREZXZpY2VDb21tYW5kOjprTXNnLCBtX3JlcXVlc3REYXRhKTsKICAgICBBU1NFUlQoY21k
KTsKICAgICBtX3dvcmtlci0+dHJhbnNhY3QoV1RGTW92ZSgqY21kKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXShPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4mJiByZXNwb25zZSkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEhpZERyaXZlci5oCmluZGV4IGRlMDUwMjY4OTRmZWZlMWU5NTNlMDM5ZDBjYzg4ZjM0NmRiNWE0
MjYuLjhmYjUwNGQ5MWU5NzgzNzBiMGY2ZDk0MjgxOGNkMTk4Nzk3ODIzY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERy
aXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcEhpZERyaXZlci5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxp
Y2l0IEN0YXBIaWREcml2ZXIoVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+JiYpOwogCisgICAgdm9p
ZCBzZXRQcm90b2NvbChmaWRvOjpQcm90b2NvbFZlcnNpb24gcHJvdG9jb2wpIHsgbV9wcm90b2Nv
bCA9IHByb3RvY29sOyB9CiAgICAgdm9pZCB0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBSZXNwb25zZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgpAQCAtMTAzLDYgKzEwNCw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVxdWVzdERhdGE7CiAgICAgUmVzcG9uc2VD
YWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fbm9uY2U7
CisgICAgZmlkbzo6UHJvdG9jb2xWZXJzaW9uIG1fcHJvdG9jb2wgeyBmaWRvOjpQcm90b2NvbFZl
cnNpb246OmtDdGFwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmSGlkQXV0
aGVudGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9maWRvL1UyZkhpZEF1dGhlbnRpY2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDdmNDJmNjNiMzhh
ZWFkNTNlZTliNTdjNDVmYjNiMjhlYmZiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkhpZEF1dGhlbnRpY2F0b3Iu
Y3BwCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlUyZkhpZEF1dGhlbnRpY2F0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVUSE4p
ICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkN0YXBIaWREcml2ZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0FwZHVSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0
YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVTJmQ29tbWFuZENvbnN0cnVjdG9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VMmZSZXNwb25zZUNvbnZlcnRlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgYXBkdTsKK3VzaW5nIG5hbWVzcGFjZSBmaWRvOworCituYW1lc3BhY2UgeworY29uc3QgdW5z
aWduZWQgcmV0cnlUaW1lT3V0VmFsdWVNcyA9IDIwMDsKK30KKworVTJmSGlkQXV0aGVudGljYXRv
cjo6VTJmSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERyaXZlcj4mJiBk
cml2ZXIpCisgICAgOiBtX2RyaXZlcihXVEZNb3ZlKGRyaXZlcikpCisgICAgLCBtX3JldHJ5VGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVTJmSGlkQXV0aGVudGljYXRvcjo6cmV0cnlMYXN0
Q29tbWFuZCkKK3sKKyAgICAvLyBGSVhNRSgxOTE1MjApOiBXZSBuZWVkIGEgd2F5IHRvIGNvbnZl
cnQgc3RkOjp1bmlxdWVfcHRyIHRvIFVuaXF1ZVJlZi4KKyAgICBBU1NFUlQobV9kcml2ZXIpOwor
fQorCit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKK3sKKyAgICBp
ZiAoIWlzQ29udmVydGlibGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmNyZWF0
aW9uT3B0aW9ucykpIHsKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5v
dFN1cHBvcnRlZEVycm9yLCAiQ2Fubm90IGNvbnZlcnQgdGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1h
bmQuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghcmVxdWVzdERhdGEo
KS5jcmVhdGlvbk9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzLmlzRW1wdHkoKSkgeworICAgICAg
ICBBU1NFUlQoIW1fbmV4dExpc3RJbmRleCk7CisgICAgICAgIGNoZWNrRXhjbHVkZUxpc3QobV9u
ZXh0TGlzdEluZGV4KyspOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlzc3VlUmVnaXN0
ZXJDb21tYW5kKCk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6Y2hlY2tFeGNsdWRl
TGlzdChzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IHJlcXVlc3REYXRhKCkuY3Jl
YXRpb25PcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscy5zaXplKCkpIHsKKyAgICAgICAgaXNzdWVS
ZWdpc3RlckNvbW1hbmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHUyZkNt
ZCA9IGNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKHJlcXVlc3REYXRhKCkuaGFzaCwg
cmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMsIHJlcXVlc3REYXRhKCkuY3JlYXRpb25PcHRp
b25zLmV4Y2x1ZGVDcmVkZW50aWFsc1tpbmRleF0pOworICAgIEFTU0VSVCh1MmZDbWQpOworICAg
IGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZDbWQpLCBDb21tYW5kVHlwZTo6Q2hlY2tPbmx5
Q29tbWFuZCk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6aXNzdWVSZWdpc3RlckNv
bW1hbmQoKQoreworICAgIGF1dG8gdTJmQ21kID0gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5k
KHJlcXVlc3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEoKS5jcmVhdGlvbk9wdGlvbnMpOworICAg
IEFTU0VSVCh1MmZDbWQpOworICAgIGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZDbWQpLCBD
b21tYW5kVHlwZTo6UmVnaXN0ZXJDb21tYW5kKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNh
dG9yOjpnZXRBc3NlcnRpb24oKQoreworICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNv
bW1hbmQocmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucykpIHsKKyAgICAgICAgcmVjZWl2ZVJl
c3BvbmQoRXhjZXB0aW9uRGF0YSB7IE5vdFN1cHBvcnRlZEVycm9yLCAiQ2Fubm90IGNvbnZlcnQg
dGhlIHJlcXVlc3QgdG8gVTJGIGNvbW1hbmQuIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEFTU0VSVCghbV9uZXh0TGlzdEluZGV4KTsKKyAgICBpc3N1ZVNpZ25Db21tYW5kKG1f
bmV4dExpc3RJbmRleCsrKTsKK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjppc3N1ZVNp
Z25Db21tYW5kKHNpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gcmVxdWVzdERhdGEo
KS5yZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLnNpemUoKSkgeworICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiTm8gY3JlZGVudGlh
bHMgZnJvbSB0aGUgYWxsb3dDcmVkZW50aWFscyBsaXN0IGlzIGZvdW5kIGluIHRoZSBhdXRoZW50
aWNhdG9yLiJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHUyZkNtZCA9
IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3REYXRhKCkuaGFzaCwgcmVxdWVzdERhdGEo
KS5yZXF1ZXN0T3B0aW9ucywgcmVxdWVzdERhdGEoKS5yZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzW2luZGV4XS5pZFZlY3Rvcik7CisgICAgQVNTRVJUKHUyZkNtZCk7CisgICAgaXNzdWVO
ZXdDb21tYW5kKFdURk1vdmUoKnUyZkNtZCksIENvbW1hbmRUeXBlOjpTaWduQ29tbWFuZCk7Cit9
CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6aXNzdWVOZXdDb21tYW5kKFZlY3Rvcjx1aW50
OF90PiYmIGNvbW1hbmQsIENvbW1hbmRUeXBlIHR5cGUpCit7CisgICAgbV9sYXN0Q29tbWFuZCA9
IFdURk1vdmUoY29tbWFuZCk7CisgICAgbV9sYXN0Q29tbWFuZFR5cGUgPSB0eXBlOworICAgIGlz
c3VlQ29tbWFuZChtX2xhc3RDb21tYW5kLCBtX2xhc3RDb21tYW5kVHlwZSk7Cit9CisKK3ZvaWQg
VTJmSGlkQXV0aGVudGljYXRvcjo6aXNzdWVDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y29tbWFuZCwgQ29tbWFuZFR5cGUgdHlwZSkKK3sKKyAgICBtX2RyaXZlci0+dHJhbnNhY3QoVmVj
dG9yPHVpbnQ4X3Q+KGNvbW1hbmQpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHR5
cGVdKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgd2Vha1RoaXMtPnJlc3BvbnNlUmVjZWl2ZWQoV1RGTW92ZShkYXRhKSwgdHlwZSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6cmVzcG9uc2VSZWNlaXZlZChW
ZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSwgQ29tbWFuZFR5cGUgdHlwZSkKK3sKKyAgICBhdXRv
IGFwZHVSZXNwb25zZSA9IEFwZHVSZXNwb25zZTo6Y3JlYXRlRnJvbU1lc3NhZ2UocmVzcG9uc2Up
OworICAgIGlmICghYXBkdVJlc3BvbnNlKSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2Vw
dGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgQVBEVSByZXNwb25z
ZS4iX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIENvbW1hbmRUeXBlOjpSZWdpc3RlckNvbW1hbmQ6CisgICAgICAgIGNvbnRpbnVl
UmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoKmFwZHVSZXNwb25z
ZSkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDb21tYW5kVHlwZTo6Q2hlY2tPbmx5Q29t
bWFuZDoKKyAgICAgICAgY29udGludWVDaGVja09ubHlDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKFdURk1vdmUoKmFwZHVSZXNwb25zZSkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBD
b21tYW5kVHlwZTo6Qm9ndXNDb21tYW5kOgorICAgICAgICBjb250aW51ZUJvZ3VzQ29tbWFuZEFm
dGVyUmVzcG9uc2VSZWNlaXZlZChXVEZNb3ZlKCphcGR1UmVzcG9uc2UpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQ29tbWFuZFR5cGU6OlNpZ25Db21tYW5kOgorICAgICAgICBjb250aW51
ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURk1vdmUoKmFwZHVSZXNwb25zZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJS
ZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGFwZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0
Y2ggKGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgeworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0
dXM6OlNXX05PX0VSUk9SOiB7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmUmVnaXN0
ZXJSZXNwb25zZShyZXF1ZXN0RGF0YSgpLmNyZWF0aW9uT3B0aW9ucy5ycC5pZCwgYXBkdVJlc3Bv
bnNlLmRhdGEoKSk7CisgICAgICAgIGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0
aGUgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlLiJfcyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICByZWNlaXZlUmVzcG9uZChXVEZNb3ZlKCpyZXNwb25zZSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6OlNXX0NP
TkRJVElPTlNfTk9UX1NBVElTRklFRDoKKyAgICAgICAgLy8gUG9sbGluZyBpcyByZXF1aXJlZCBk
dXJpbmcgdGVzdCBvZiB1c2VyIHByZXNlbmNlLgorICAgICAgICBtX3JldHJ5VGltZXIuc3RhcnRP
bmVTaG90KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMocmV0cnlUaW1lT3V0VmFsdWVNcykpOwor
ICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhj
ZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiVW5rbm93biBpbnRlcm5hbCBl
cnJvci4gRXJyb3IgY29kZTogIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFwZHVSZXNwb25zZS5z
dGF0dXMoKSkpIH0pOworICAgIH0KK30KKwordm9pZCBVMmZIaWRBdXRoZW50aWNhdG9yOjpjb250
aW51ZUNoZWNrT25seUNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYg
YXBkdVJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoYXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7Cisg
ICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJST1I6CisgICAgY2FzZSBBcGR1
UmVzcG9uc2U6OlN0YXR1czo6U1dfQ09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgorICAgICAgICBp
c3N1ZU5ld0NvbW1hbmQoY29uc3RydWN0Qm9ndXNVMmZSZWdpc3RyYXRpb25Db21tYW5kKCksIENv
bW1hbmRUeXBlOjpCb2d1c0NvbW1hbmQpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoK
KyAgICAgICAgY2hlY2tFeGNsdWRlTGlzdChtX25leHRMaXN0SW5kZXgrKyk7CisgICAgfQorfQor
Cit2b2lkIFUyZkhpZEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmIGFwZHVSZXNwb25zZSkKK3sKKyAgICBzd2l0Y2gg
KGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgeworICAgIGNhc2UgQXBkdVJlc3BvbnNlOjpTdGF0dXM6
OlNXX05PX0VSUk9SOgorICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgYXV0aGVudGljYXRvci4iX3Mg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19D
T05ESVRJT05TX05PVF9TQVRJU0ZJRUQ6CisgICAgICAgIC8vIFBvbGxpbmcgaXMgcmVxdWlyZWQg
ZHVyaW5nIHRlc3Qgb2YgdXNlciBwcmVzZW5jZS4KKyAgICAgICAgbV9yZXRyeVRpbWVyLnN0YXJ0
T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHJldHJ5VGltZU91dFZhbHVlTXMpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlVua25vd24gaW50ZXJuYWwg
ZXJyb3IuIEVycm9yIGNvZGU6ICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcGR1UmVzcG9uc2Uu
c3RhdHVzKCkpKSB9KTsKKyAgICB9Cit9CisKK3ZvaWQgVTJmSGlkQXV0aGVudGljYXRvcjo6Y29u
dGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZChBcGR1UmVzcG9uc2UmJiBhcGR1
UmVzcG9uc2UpCit7CisgICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKKyAgICBj
YXNlIEFwZHVSZXNwb25zZTo6U3RhdHVzOjpTV19OT19FUlJPUjogeworICAgICAgICBhdXRvIHJl
c3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0RGF0YSgpLnJlcXVlc3RPcHRpb25z
LnJwSWQsIHJlcXVlc3REYXRhKCkucmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1ttX25l
eHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3BvbnNlLmRhdGEoKSk7CisgICAgICAg
IGlmICghcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRh
dGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2Uu
Il9zIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlY2VpdmVS
ZXNwb25kKFdURk1vdmUoKnJlc3BvbnNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfQ09ORElUSU9OU19OT1RfU0FUSVNGSUVEOgor
ICAgICAgICAvLyBQb2xsaW5nIGlzIHJlcXVpcmVkIGR1cmluZyB0ZXN0IG9mIHVzZXIgcHJlc2Vu
Y2UuCisgICAgICAgIG1fcmV0cnlUaW1lci5zdGFydE9uZVNob3QoU2Vjb25kczo6ZnJvbU1pbGxp
c2Vjb25kcyhyZXRyeVRpbWVPdXRWYWx1ZU1zKSk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBpc3N1ZVNpZ25Db21tYW5kKG1fbmV4dExpc3RJbmRleCsrKTsKKyAgICB9
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRI
TikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkhpZEF1dGhlbnRpY2F0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZmYyOTQ3N2VkNjk5NTFlOTBjYzc4M2FiY2FiNTQ0YmQwMTVjMzQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZIaWRBdXRoZW50aWNhdG9yLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oTUFD
KQorCisjaW5jbHVkZSAiQXV0aGVudGljYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBhcGR1IHsKK2NsYXNzIEFwZHVSZXNwb25zZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEN0YXBIaWREcml2ZXI7CisKK2NsYXNzIFUyZkhpZEF1dGhlbnRp
Y2F0b3IgZmluYWwgOiBwdWJsaWMgQXV0aGVudGljYXRvciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxVMmZIaWRBdXRoZW50aWNhdG9yPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWRE
cml2ZXI+JiYgZHJpdmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVTJm
SGlkQXV0aGVudGljYXRvcihXVEZNb3ZlKGRyaXZlcikpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgVTJmSGlkQXV0aGVudGljYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q3RhcEhpZERy
aXZlcj4mJik7CisKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7CisgICAgdm9pZCBj
aGVja0V4Y2x1ZGVMaXN0KHNpemVfdCBpbmRleCk7CisgICAgdm9pZCBpc3N1ZVJlZ2lzdGVyQ29t
bWFuZCgpOworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CisgICAgdm9pZCBpc3N1ZVNp
Z25Db21tYW5kKHNpemVfdCBpbmRleCk7CisKKyAgICBlbnVtIGNsYXNzIENvbW1hbmRUeXBlIDog
dWludDhfdCB7CisgICAgICAgIFJlZ2lzdGVyQ29tbWFuZCwKKyAgICAgICAgQ2hlY2tPbmx5Q29t
bWFuZCwKKyAgICAgICAgQm9ndXNDb21tYW5kLAorICAgICAgICBTaWduQ29tbWFuZAorICAgIH07
CisgICAgdm9pZCBpc3N1ZU5ld0NvbW1hbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgY29tbWFuZCwgQ29t
bWFuZFR5cGUpOworICAgIHZvaWQgcmV0cnlMYXN0Q29tbWFuZCgpIHsgaXNzdWVDb21tYW5kKG1f
bGFzdENvbW1hbmQsIG1fbGFzdENvbW1hbmRUeXBlKTsgfQorICAgIHZvaWQgaXNzdWVDb21tYW5k
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29tbWFuZCwgQ29tbWFuZFR5cGUpOworICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSwgQ29tbWFuZFR5cGUp
OworICAgIHZvaWQgY29udGludWVSZWdpc3RlckNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
YXBkdTo6QXBkdVJlc3BvbnNlJiYpOworICAgIHZvaWQgY29udGludWVDaGVja09ubHlDb21tYW5k
QWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25zZSYmKTsKKyAgICB2b2lkIGNv
bnRpbnVlQm9ndXNDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGFwZHU6OkFwZHVSZXNwb25z
ZSYmKTsKKyAgICB2b2lkIGNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQo
YXBkdTo6QXBkdVJlc3BvbnNlJiYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEN0YXBIaWREcml2
ZXI+IG1fZHJpdmVyOworICAgIFJ1bkxvb3A6OlRpbWVyPFUyZkhpZEF1dGhlbnRpY2F0b3I+IG1f
cmV0cnlUaW1lcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9sYXN0Q29tbWFuZDsKKyAgICBDb21t
YW5kVHlwZSBtX2xhc3RDb21tYW5kVHlwZTsKKyAgICBzaXplX3QgbV9uZXh0TGlzdEluZGV4IHsg
MCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVVEhOKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlN2U0NzcyYTAzNmZlOWUyY2ExZmEzNmY3MTBlMjI0
NzM0YTdjNmFlLi45YzgyNTE3ODMyNjM0MThhODcxZTVlOWIzMzg3NDU0MzkxNTY3ZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MTMsOCArMTAxMyw2IEBACiAJCTU3MEFCOEYzMjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94
eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwogCQk1
NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0
IC8qIEN0YXBIaWREcml2ZXIuaCAqLzsgfTsKIAkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8q
IEN0YXBIaWRBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRp
Y2F0b3IuaCAqLzsgfTsKLQkJNTc1OTdFQkUyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBIaWRBdXRo
ZW50aWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NTk3RUJDMjE4MTg0OEYwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAg
Ki87IH07Ci0JCTU3NTk3RUMxMjE4MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTk3RUMwMjE4
MThCRTIwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmNwcCAqLzsgfTsKIAkJNTc3MkYyMDYyMTdE
QkQ2QTAwNTZCRjJDIC8qIEhpZFNlcnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NzJGMjA0MjE3REJENkEwMDU2QkYyQyAvKiBIaWRTZXJ2aWNl
LmggKi87IH07CiAJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3OERDMjk3MjE1NUEwMDEwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExp
bmsuaCAqLzsgfTsKIAkJNTdBQzhGNTAyMTdGRUVEOTAwNTU0MzhDIC8qIEhpZENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3QUM4RjRF
MjE3RkVFRDkwMDU1NDM4QyAvKiBIaWRDb25uZWN0aW9uLmggKi87IH07CkBAIC0xMDM2LDYgKzEw
MzQsNyBAQAogCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQzEy
MTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCAqLzsgfTsKIAkJNTdEQ0VEQzcy
MTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM1MjE0RjE4MzAwMDE2Qjg0NyAv
KiBNb2NrTG9jYWxDb25uZWN0aW9uLmggKi87IH07CiAJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0
NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREM5MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0
aGVudGljYXRvck1hbmFnZXIuaCAqLzsgfTsKKwkJNTdFQjJFM0EyMUUxOTgzRTAwQjg5Q0RGIC8q
IFUyZkhpZEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNh
dG9yLmggKi87IH07CiAJCTU4Nzc0M0E2MjFDMzBCQkUwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODc3NDNBNDIxQzMwQUQ4MDBBRTkwODQgLyogSFRUUFNVcGdyYWRlTGlzdC5kYiAqLzsgfTsKIAkJ
NThFOTc3REYyMUM0OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEU5NzdERDIx
QzQ5QTAwMDA1RDkyQTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLzsgfTsKIAkJ
NUMwQjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMwQjE3NzQxRTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwpAQCAtMzQwNCw2ICszNDAzLDggQEAKIAkJNTdEQ0VEQzYyMTRGMTgz
MDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNb2NrTG9jYWxDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0RDRURDOTIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1N0RDRURDRDIxNEY1MTY4MDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
RUIyRTM4MjFFMTk4M0UwMEI4OUNERiAvKiBVMmZIaWRBdXRoZW50aWNhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFUyZkhpZEF1dGhlbnRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTdFQjJFMzkyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVTJmSGlkQXV0aGVudGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU4Nzc0M0E0MjFDMzBBRDgwMEFFOTA4NCAvKiBIVFRQU1VwZ3JhZGVM
aXN0LmRiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgbmFtZSA9IEhUVFBTVXBncmFkZUxpc3QuZGI7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL0hUVFBTVXBncmFkZUxpc3QuZGI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTU4RTk3N0RDMjFDNDk5RkUwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4
RTk3N0REMjFDNDlBMDAwMDVEOTJBNiAvKiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcxNCw2ICs2NzE1LDggQEAKIAkJ
CQk1NzU5N0VCQjIxODE4NDhGMDAzN0Y5MjQgLyogQ3RhcEhpZEF1dGhlbnRpY2F0b3IuaCAqLywK
IAkJCQk1NzU5N0VDMDIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5jcHAgKi8sCiAJ
CQkJNTc1OTdFQjcyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCAqLywKKwkJCQk1
N0VCMkUzOTIxRTE5ODNFMDBCODlDREYgLyogVTJmSGlkQXV0aGVudGljYXRvci5jcHAgKi8sCisJ
CQkJNTdFQjJFMzgyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkhpZEF1dGhlbnRpY2F0b3IuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gZmlkbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05
MzIzLDYgKzkzMjYsNyBAQAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4
ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJGODMzNjg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1lbnVE
YXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0VCMkUzQTIxRTE5ODNFMDBCODlDREYgLyogVTJm
SGlkQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTQzNjYxOEI2QzA4MTAw
OUM3QTQ4IC8qIFVJRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUI1MUQ1OTE3
RkYwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMUE5MUQ1
NTI5MzQwMEREN0M2OCAvKiBVSUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDc1NCw4ICsxMDc1OCw2IEBACiAJCQkJMkQ5MkE3ODYyMTJCNkFCMTAwRjQ5M0ZEIC8qIENoaWxk
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcg
LyogQ2hpbGRQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTU3NTk3RUJFMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwSGlkQXV0aGVudGljYXRvci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1NzU5N0VDMTIxODE4QkUyMDAzN0Y5MjQgLyogQ3RhcEhpZERy
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQgLyog
RGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcxMDBG
NDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5
MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAy
ZWIwMzYyZDU5NDcxMjNjZDRjNzk2ZTQ0NGEyNzU2NGNhYmZlNDAzLi4zMjE2YWJjNzI5NGVjNjli
ZmQ2NGY3ZDQ0N2ZkZmJkNDllZWFhODYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDEtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQg
VTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IFRoaXMgcGF0Y2g6CisgICAgICAgIDEpIGFkZHMgc3VwcG9ydCBmb3IgVTJGIG1vY2tpbmcgbWVj
aGFuaXNtOworICAgICAgICAyKSB1cGRhdGVzIHRlc3RzIHRvIHJlZmxlY3QgVTJmQ29tbWFuZENv
bnN0cnVjdG9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb1Rlc3REYXRhLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbik6CisKIDIwMTktMDEtMDggIFpoaWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUu
Y29tPgogICAKICAgICAgICAgTGF5b3V0IHRlc3Qgd2lsbCBnZW5lcmF0ZSBhIHBlcmYgbWV0cmlj
IGZpbGUgdG8gcmVzdWx0cyBkaXIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKaW5kZXggZGUzZjIwOTI5MzMwOWM0YmJj
MjMyMDA4NmI0YWFmOTYwZGVjNGI4YS4uYTdkY2FiMGI3NmE3MjhmODkyZTdiNDM5MGZjNDg1YWM4
ZTcxN2Y4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0
YXBSZXNwb25zZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DdGFwUmVzcG9uc2VUZXN0LmNwcApAQCAtNTIwLDcgKzUyMCw3IEBAIFRFU1QoQ1RBUFJlc3Bv
bnNlVGVzdCwgVGVzdFBhcnNlSW5jb3JyZWN0UmVnaXN0ZXJSZXNwb25zZURhdGE1KQogLy8gVGVz
dHMgdGhhdCBVMkYgYXV0aGVudGljYXRvciBkYXRhIGlzIHByb3Blcmx5IHNlcmlhbGl6ZWQuCiBU
RVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVNpZ25SZXNwb25zZURhdGEpCiB7Ci0gICAg
YXV0byByZXNwb25zZSA9IHJlYWRGcm9tVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWlu
Z1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0U2lnblJlc3Bv
bnNlKCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRh
OjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpLCBnZXRUZXN0
U2lnblJlc3BvbnNlKCkpOwogICAgIEFTU0VSVF9UUlVFKHJlc3BvbnNlKTsKICAgICBFWFBFQ1Rf
RVEocmVzcG9uc2UtPnJhd0lkLT5ieXRlTGVuZ3RoKCksIHNpemVvZihUZXN0RGF0YTo6a1UyZlNp
Z25LZXlIYW5kbGUpKTsKICAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3BvbnNlLT5yYXdJZC0+ZGF0
YSgpLCBUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNp
Z25LZXlIYW5kbGUpKSwgMCk7CkBAIC01MzMsMjcgKzUzMywyNyBAQCBURVNUKENUQVBSZXNwb25z
ZVRlc3QsIFRlc3RQYXJzZVNpZ25SZXNwb25zZURhdGEpCiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVz
dCwgVGVzdFBhcnNlVTJmU2lnbldpdGhOdWxsS2V5SGFuZGxlKQogewotICAgIGF1dG8gcmVzcG9u
c2UgPSByZWFkRnJvbVUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBW
ZWN0b3I8dWludDhfdD4oKSwgZ2V0VGVzdFNpZ25SZXNwb25zZSgpKTsKKyAgICBhdXRvIHJlc3Bv
bnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBWZWN0
b3I8dWludDhfdD4oKSwgZ2V0VGVzdFNpZ25SZXNwb25zZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
cmVzcG9uc2UpOwogfQogCiBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQYXJzZVUyZlNpZ25X
aXRoTnVsbFJlc3BvbnNlKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUyZlNpZ25S
ZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lk
Qnl0ZXMoKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJm
U2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIGdldFRlc3RDcmVkZW50aWFs
UmF3SWRCeXRlcygpLCBWZWN0b3I8dWludDhfdD4oKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc3Bv
bnNlKTsKIH0KIAogVEVTVChDVEFQUmVzcG9uc2VUZXN0LCBUZXN0UGFyc2VVMmZTaWduV2l0aENv
cnJ1cHRlZENvdW50ZXIpCiB7CiAgICAgLy8gQSBzaWduIHJlc3BvbnNlIG9mIGxlc3MgdGhhbiA1
IGJ5dGVzLgotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUyZlNpZ25SZXNwb25zZShUZXN0
RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMoKSwgZ2V0
VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSgzKSk7CisgICAgYXV0byByZXNwb25zZSA9IHJlYWRV
MmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJZCwgZ2V0VGVzdENyZWRlbnRp
YWxSYXdJZEJ5dGVzKCksIGdldFRlc3RDb3JydXB0ZWRTaWduUmVzcG9uc2UoMykpOwogICAgIEVY
UEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBh
cnNlVTJmU2lnbldpdGhDb3JydXB0ZWRTaWduYXR1cmUpCiB7CiAgICAgLy8gQSBzaWduIHJlc3Bv
bnNlIG5vIG1vcmUgdGhhbiA1IGJ5dGVzLgotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkRnJvbVUy
ZlNpZ25SZXNwb25zZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBnZXRUZXN0Q3JlZGVudGlh
bFJhd0lkQnl0ZXMoKSwgZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZSg1KSk7CisgICAgYXV0
byByZXNwb25zZSA9IHJlYWRVMmZTaWduUmVzcG9uc2UoVGVzdERhdGE6OmtSZWx5aW5nUGFydHlJ
ZCwgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCksIGdldFRlc3RDb3JydXB0ZWRTaWduUmVz
cG9uc2UoNSkpOwogICAgIEVYUEVDVF9GQUxTRShyZXNwb25zZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvVGVzdERhdGEuaAppbmRleCAzOGUwM2M4
ODZiNTk2OWFjYWRlYThkM2U1MDE3MGJjZTI2ZDA3ZDhjLi5iNjgyZmI3YzI4N2MzMGQzMGZkYzBi
NTQwYmE2OTUyMjRlMzJhNDAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlkb1Rlc3REYXRhLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9UZXN0RGF0YS5oCkBAIC01MSw3ICs1MSw3IEBAIGNvbnN0ZXhwciBjaGFyIGtS
ZWx5aW5nUGFydHlJZFtdID0gImFjbWUuY29tIjsKIAogY29uc3RleHByIHVpbnQ4X3Qga1UyZlJl
Z2lzdGVyQ29tbWFuZEFwZHVbXSA9IHsKICAgICAvLyBDTEEsIElOUywgUDEsIFAyIEFQRFUgaW5z
dHJ1Y3Rpb25zCi0gICAgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwKKyAgICAweDAwLCAweDAxLCAw
eDAzLCAweDAwLAogICAgIC8vIERhdGEgbGVuZ3RoIGluIDMgYnl0ZXMgaW4gYmlnIGVuZGlhbiBv
cmRlci4KICAgICAweDAwLCAweDAwLCAweDQwLAogICAgIC8vIENoYWxsZW5nZSBwYXJhbWV0ZXIg
LS0gc2VlIGtDbGllbnREYXRhSGFzaApAQCAtMTQxLDcgKzE0MSw3IEBAIGNvbnN0ZXhwciB1aW50
OF90IGtVMmZDaGVja09ubHlTaWduQ29tbWFuZEFwZHVbXSA9IHsKIAogY29uc3RleHByIHVpbnQ4
X3Qga1UyZkZha2VSZWdpc3RlckNvbW1hbmRbXSA9IHsKICAgICAvLyBDTEEsIElOUywgUDEsIFAy
IEFQRFUgaW5zdHJ1Y3Rpb25zCi0gICAgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwKKyAgICAweDAw
LCAweDAxLCAweDAzLCAweDAwLAogICAgIC8vIERhdGEgbGVuZ3RoIGluIDMgYnl0ZXMgaW4gYmln
IGVuZGlhbiBvcmRlci4KICAgICAweDAwLCAweDAwLCAweDQwLAogICAgIC8vIEJvZ3VzIGNoYWxs
ZW5nZSBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDdjODIxM2VkZWJiYmMzYTYzZWVkODM4ZWVlNWZm
MTE4M2E1OGEzZGQuLjI0ZDM0MGYwMDZlZDU4YzMwZjVjNzEzODkwMTE4NjY1OGExNTJjMjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcApAQCAtMjUwOSwxMCArMjUwOSwzNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oSlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVgog
ICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGF5bG9hZEJhc2U2NFByb3BlcnR5TmFt
ZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBheWxvYWRCYXNlNjQiKSk7
CiAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2NFZhbHVlID0gSlNPYmplY3RHZXRQcm9w
ZXJ0eShjb250ZXh0LCBoaWQsIHBheWxvYWRCYXNlNjRQcm9wZXJ0eU5hbWUuZ2V0KCksIDApOwog
ICAgICAgICBpZiAoIUpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFs
dWUpICYmICFKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1ZSkpIHsKLSAg
ICAgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHBheWxvYWRCYXNlNjRWYWx1
ZSkpCisgICAgICAgICAgICBpZiAoIUpTVmFsdWVJc0FycmF5KGNvbnRleHQsIHBheWxvYWRCYXNl
NjRWYWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBKU09iamVj
dFJlZiBwYXlsb2FkQmFzZTY0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHBheWxvYWRCYXNl
NjRWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0aWMgYXV0byBsZW5ndGhQcm9wZXJ0
eSA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAg
ICAgICAgICBKU1ZhbHVlUmVmIHBheWxvYWRCYXNlNjRMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0
UHJvcGVydHkoY29udGV4dCwgcGF5bG9hZEJhc2U2NCwgbGVuZ3RoUHJvcGVydHkuZ2V0KCksIG51
bGxwdHIpOworICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgcGF5bG9h
ZEJhc2U2NExlbmd0aFZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGF1dG8gcGF5bG9hZEJhc2U2NHMgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkp
OworICAgICAgICAgICAgYXV0byBwYXlsb2FkQmFzZTY0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgcGF5bG9hZEJhc2U2NExlbmd0aFZhbHVlLCBu
dWxscHRyKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRCYXNl
NjRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgcGF5bG9hZEJhc2U2
NFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgcGF5bG9hZEJhc2U2
NCwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJpbmcoY29u
dGV4dCwgcGF5bG9hZEJhc2U2NFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0ocGF5bG9hZEJhc2U2NHMuZ2V0KCks
IHRvV0soYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFs
dWUsIDApKS5nZXQoKSkuZ2V0KCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBoaWRL
ZXlzLmFwcGVuZCh7IEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXls
b2FkQmFzZTY0IikgfSk7Ci0gICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKHRvV0soYWRvcHQo
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBwYXlsb2FkQmFzZTY0VmFsdWUsIDApKS5nZXQo
KSkpOworICAgICAgICAgICAgaGlkVmFsdWVzLmFwcGVuZChwYXlsb2FkQmFzZTY0cyk7CisgICAg
ICAgIH0KKworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaXNVMmZQcm9wZXJ0eU5h
bWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpc1UyZiIpKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZiBpc1UyZlZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBo
aWQsIGlzVTJmUHJvcGVydHlOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNV
bmRlZmluZWQoY29udGV4dCwgaXNVMmZWYWx1ZSkgJiYgIUpTVmFsdWVJc051bGwoY29udGV4dCwg
aXNVMmZWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0
LCBpc1UyZlZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBib29s
IGlzVTJmID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBpc1UyZlZhbHVlKTsKKyAgICAgICAg
ICAgIGhpZEtleXMuYXBwZW5kKHsgQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIklzVTJmIikgfSk7CisgICAgICAgICAgICBoaWRWYWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tC
b29sZWFuQ3JlYXRlKGlzVTJmKSkuZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGtlZXBBbGl2ZVByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoImtlZXBBbGl2ZSIpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjY3NDhhYjk1Y2Q1
YmRjZDA4MTRmMTA5Mjg1MmJjMDJjOTVhMGJiLi5mNmI2NDQ3ZGU4ZWMxZWZmMWQxNzFhZjg0ZTk5
NzYwZGM0NDQwN2QxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDEtMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aE5dIFN1cHBvcnQg
VTJGIEhJRCBBdXRoZW50aWNhdG9ycyBvbiBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NzEwMjAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IEJlc2lkaW5nIGFkZGluZyB0ZXN0cyBmb3IgVTJGIGF1dGhlbnRpY2F0b3JzLCBpdCBhbHNvIGNo
YW5nZXMgcGF5bG9hZEJhc2U2NCBmcm9tCisgICAgICAgIGEgc3RyaW5nIHRvIGEgdmVjdG9yIG9m
IHN0cmluZ3MuIE5ldyB0ZXN0cyBhcmUgc2tpcHBlZCBmb3IgaU9TLgorCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtaGlk
LXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJm
LXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0
dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbDoK
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRw
cy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwuCisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1z
aWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisgICAgICAgICogcGxhdGZvcm0v
aW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTAxLTA4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBzZXJ2aWNlIHdvcmtlciBmZXRjaCBoYW5kbGVy
IHJlc3VsdHMgaW4gYmFkIHJlZmVycmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9jdGFwLWhpZC1mYWlsdXJlLmh0dHBzLmh0bWwKaW5kZXggZTI0NDA1ZmFm
ZTdhOWY3N2JiMzA3NDIxNjJlMGIxODg4NGNhYWZkMS4uYzQ2ZWUzOTEzOGYwZWZlY2Y3NDEyOTZl
ZGFlN2Y5MzI4YTU0Y2U5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vY3RhcC1oaWQtZmFpbHVyZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL2N0YXAtaGlkLWZhaWx1cmUuaHR0cHMuaHRtbApAQCAtNjQsNyArNjQsNyBAQAog
CiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDp0ZXN0RHVtbXlNZXNzYWdl
UGF5bG9hZEJhc2U2NCB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50
aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0
YWdlOiAibXNnIiwgZXJyb3I6ICJ3cm9uZy1jaGFubmVsLWlkIiwgcGF5bG9hZEJhc2U2NDpbdGVz
dER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShk
ZWZhdWx0T3B0aW9ucyksICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAtMSIp
OwogICAgIH0sICJDVEFQIEhJRCB3aXRoIHJlcXVlc3Q6Om1zZyBzdGFnZSB3cm9uZyBjaGFubmVs
IGlkIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vzcy5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vY3RhcC1oaWQtc3VjY2Vz
cy5odHRwcy5odG1sCmluZGV4IGRiMDJkNTQxOGE2YzA1YzM4NGFlNWE4MjI2ZjViZjI5OWIzYWU4
N2UuLjhlNWQwOTVlNWZkOTgzZmFhYWM0ZDdlM2E0NjJiMGNjZGQ5N2Q2MDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL2N0YXAtaGlkLXN1Y2Nlc3MuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9jdGFwLWhpZC1zdWNjZXNzLmh0
dHBzLmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTog
InJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNl
NjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQsIGtlZXBBbGl2ZTogdHJ1ZSB9IH0pOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjRdLCBrZWVwQWxp
dmU6IHRydWUgfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUoZGVmYXVsdE9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhjcmVkZW50aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoY3JlZGVudGlhbCwgbnVsbCk7CkBAIC0zMCw3ICszMCw3IEBACiAKICAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
InN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiB0ZXN0Q3JlYXRpb25NZXNzYWdlQmFzZTY0LCBmYXN0
RGF0YUFycml2YWw6IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0
aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0Q3Jl
YXRpb25NZXNzYWdlQmFzZTY0XSwgZmFzdERhdGFBcnJpdmFsOiB0cnVlIH0gfSk7CiAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlh
bCwgdW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWws
IG51bGwpOwpAQCAtMzksNyArMzksNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQp
IHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
aW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJh
c2U2NDogdGVzdENyZWF0aW9uTWVzc2FnZUJhc2U2NCwgY29udGludWVBZnRlckVycm9yRGF0YTog
dHJ1ZSB9IH0pOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5mbyIsIHN1YlN0YWdlOiAiaW5pdCIs
IGVycm9yOiAiZW1wdHktcmVwb3J0IiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3Nh
Z2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwg
dW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51
bGwpOwpAQCAtNDgsNyArNDgsNyBAQAogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAiaW5m
byIsIHN1YlN0YWdlOiAiaW5pdCIsIGVycm9yOiAid3JvbmctY2hhbm5lbC1pZCIsIHBheWxvYWRC
YXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6
IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogIndyb25nLWNoYW5uZWwtaWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9u
TWVzc2FnZUJhc2U2NF0sIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6IHRydWUgfSB9KTsKICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoZGVmYXVsdE9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhjcmVkZW50
aWFsLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlh
bCwgbnVsbCk7CkBAIC01Nyw3ICs1Nyw3IEBACiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJpbmZvIiwgc3ViU3RhZ2U6ICJpbml0IiwgZXJyb3I6ICJ3cm9uZy1ub25jZSIsIHBheWxvYWRC
YXNlNjQ6IHRlc3RDcmVhdGlvbk1lc3NhZ2VCYXNlNjQsIGNvbnRpbnVlQWZ0ZXJFcnJvckRhdGE6
IHRydWUgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogImluZm8iLCBzdWJTdGFnZTogImluaXQi
LCBlcnJvcjogIndyb25nLW5vbmNlIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RDcmVhdGlvbk1lc3Nh
Z2VCYXNlNjRdLCBjb250aW51ZUFmdGVyRXJyb3JEYXRhOiB0cnVlIH0gfSk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKGRlZmF1bHRPcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4gewogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoY3JlZGVudGlhbCwg
dW5kZWZpbmVkKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGNyZWRlbnRpYWwsIG51
bGwpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggYjk5NTNmOWY1YjNhNTU2ZjFiNTJiYWI1
MmI0YjljMGJjOTg3ZGUzOC4uNjYwMDRhMzIxNTNlNjU0NGNiMDg4NmZmODRhNmY5MWVkZDY0NjU2
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgICAgIH07
CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTog
dHJ1ZSwgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJt
YWxpY2lvdXMtcGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3REdW1teU1lc3NhZ2VQYXlsb2Fk
QmFzZTY0IH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5
bG9hZEJhc2U2NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGljaW91cyBwYXls
b2FkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWls
dXJlLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4IDJkZGU2
ZDA5YWExMmI5MGJiYTcwYTRmZjFhNGY5MTRhZWU3YzlkNTAuLmYxNjNhMzk2ZjJhZGQ5Mzg5Mjhi
ZmZkMzc2MWVmNTdmNGFmY2RkMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1oaWQuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtaGlkLmh0dHBzLmh0bWwKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAg
ICAgfTsKIAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2Fk
IiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRC
YXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIlVua25vd24gaW50
ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IC0xIik7CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggbWFsaWNpb3VzIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRo
ZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTA2M2I3YTI4MjVmYmE3NzI2NDM1N2YxNGMzM2ZhNDg0ZDY2MTVkYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG1hbGZvcm1lZCBBUERVIHBheWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgVTJGIHJl
Z2lzdGVyIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBp
biBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50
aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJz
dCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3Iu
IAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNs
dWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3Jl
ZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gVGVzdCBvZiB1c2Vy
IHByZXNlbmNlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQxNzk5OGJj
NzE4NzE0YTk4ZDMwYTU0ODcyMjVmMTBiY2IyNmY2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFp
bHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxNjUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHRpdGxlPldlYiBBdXRoZW50aWNhdGlvbiBBUEk6IFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIGZhaWx1cmUgY2FzZXMgd2l0aCBhIG1vY2sgdTJmIGF1dGhlbnRpY2F0b3Iu
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9
IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4g
QXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBz
dWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwg
cGF5bG9hZEJhc2U2NDogWyJBUT09Il0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20i
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlk
OiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJL
ZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAg
ICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1
dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6
IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1w
YXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JP
bmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1v
Y2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUu
Y29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAg
ICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRX
ZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lv
dXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVJbnNO
b3RTdXBwb3J0ZWRPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggcmVnaXN0ZXIgY29tbWFuZCBlcnJvciBpbiBh
IG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVOb0Vycm9y
T25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25z
ZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0
aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4i
KTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJK
b2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50
OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0
eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNy
ZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3Vi
U3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBh
eWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RV
MmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwg
bWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICAvLyBNYXRjaCB0
aGUgc2Vjb25kIGV4Y2x1ZGUgY3JlZGVudGlhbC4KKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
IH1dLCAvLyBUaGUgY29udGVudCBkb2Vzbid0IG1hdHRlci4KKyAgICAgICAgICAgICAgICB0aW1l
b3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25N
b2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJl
cXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1Uy
ZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNl
QmFzZTY0LCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VS
ZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNo
ZWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1Ymxp
Y0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwK
KyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFs
aWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVDb25k
aXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlv
bnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlS
ZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sg
aGlkIGF1dGhlbnRpY2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4iKTsKKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
dTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDYzYjdhMjgyNWZiYTc3MjY0MzU3
ZjE0YzMzZmE0ODRkNjYxNWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtYWxmb3JtZWQgQVBEVSBwYXlsb2FkIGluIGEgbW9jayBoaWQg
YXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbWFsZm9ybWVkIFUyRiByZWdpc3RlciByZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHJlZ2lz
dGVyIGNvbW1hbmQgZXJyb3IgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBib2d1cyBjb21tYW5kIGVycm9yIGlu
IGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggZmlyc3QgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2Nr
IGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBzZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsIG1hdGNoZWQgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBmaXJzdCBleGNsdWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRp
Y2F0b3IuIFRlc3Qgb2YgdXNlciBwcmVzZW5jZS4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11
MmYuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTdk
OWU4OGEwNmJlZDQ2YzdkNGZkODVlMTYwMWNlMmFlY2Y0MjNkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTU4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFw
cGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIz
NDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdl
YkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0
Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRy
dWUsIHBheWxvYWRCYXNlNjQ6IFsiQVE9PSJdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRoZSBBUERVIHJlc3BvbnNlLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hbGZvcm1lZCBBUERVIHBheWxv
YWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1Ymxp
Y0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAg
ICAgICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIs
IGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDog
W3Rlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgcGFyc2UgdGhlIFUyRiByZWdpc3RlciByZXNw
b25zZS4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBt
YWxmb3JtZWQgVTJGIHJlZ2lzdGVyIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRv
ci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6
ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwg
aXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9u
bHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
VW5rbm93biBpbnRlcm5hbCBlcnJvci4gRXJyb3IgY29kZTogMjc5MDQiKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCByZWdpc3RlciBjb21tYW5kIGVycm9y
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3Vy
YXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjog
Im1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1SW5zTm90U3VwcG9ydGVk
T25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJVbmtub3duIGludGVybmFsIGVycm9yLiBFcnJvciBjb2RlOiAyNzkwNCIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGJvZ3VzIGNvbW1hbmQgZXJyb3Ig
aW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
bWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZB
cGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3Bv
bnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFs
aWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0
IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVk
ZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRj
aGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIC8vIE1hdGNoIHRoZSBz
ZWNvbmQgZXhjbHVkZSBjcmVkZW50aWFsLgorICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5j
b20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAg
IGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBw
dWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAg
ICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0g
Ly8gVGhlIGNvbnRlbnQgZG9lc24ndCBtYXR0ZXIuCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAi
cmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlz
VTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9u
c2VCYXNlNjQsIHRlc3RVMmZBcGR1Tm9FcnJvck9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkg
b2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50aWNhdG9yLiIpOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNlY29uZCBleGNs
dWRlIGNyZWRlbnRpYWwgbWF0Y2hlZCBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpIH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3Bv
bnNlQmFzZTY0LCB0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VC
YXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2
NCwgdGVzdFUyZkFwZHVOb0Vycm9yT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNo
ZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBhdXRoZW50
aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IGZpcnN0IGV4Y2x1ZGUgY3JlZGVudGlhbCBtYXRjaGVkIGluIGEgbW9jayBoaWQgYXV0aGVudGlj
YXRvci4gVGVzdCBvZiB1c2VyIHByZXNlbmNlLiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXgg
NWQ5M2I4MDdhNDRjNTM3MzRhN2Y1ZDgxMWRmNjAxMzU2MmMwNWM3Yy4uMGQ3OWE5YWQ5YTZiOTg0
NzRjNzViZmMxM2Q1OGMxZGUwNzQxYWE2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWhpZC5odHRw
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNyw3ICs3LDcgQEAKIDxz
Y3JpcHQ+CiAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8g
b3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgogICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogdGVzdENyZWF0aW9uTWVzc2Fn
ZUJhc2U2NCB9IH0pOworICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdENyZWF0aW9uTWVzc2FnZUJh
c2U2NF0gfSB9KTsKIAogICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2IyNjE3ZmE4ODdmNzEzMWMy
YzBkOGQyMzlhODk3OWJiM2M0ZTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLXUyZi5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIHUyZiBhdXRo
ZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBl
eGNsdWRlQ3JlZGVudGlhbHMgaW4gYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBleGNsdWRlQ3JlZGVudGlhbHMgaW4g
YSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLiAyIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIHRlc3Qgb2YgdXNlciBwcmVzZW5jZSBpbiBhIG1vY2sgdTJmIGF1dGhl
bnRpY2F0b3IuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFiMThkMTdkYjU4ODY5ODE2NjgzZTg1
ZmIwMzNjOTgwOGM4NDliMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy11MmYuaHR0cHMu
aHRtbApAQCAtMCwwICsxLDEyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhl
bnRpY2F0aW9uIEFQSTogUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gc3VjY2VzcyBj
YXNlcyB3aXRoIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVz
b3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50
aWFsKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uc2UKKyAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3Jl
ZGVudGlhbC50eXBlLCAncHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBCYXNlNjRVUkwucGFyc2UodGVzdFUy
ZkNyZWRlbnRpYWxJZEJhc2U2NCkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJ
SVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6Indl
YmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9s
b2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF90aHJvd3MoIk5vdFN1cHBvcnRlZEVy
cm9yIiwgKCkgPT4geyBjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSB9KTsK
KworICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRlc3RhdGlv
bk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmpl
Y3QpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgImZpZG8t
dTJmIik7CisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRh
ID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBk
ZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2
MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2NSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAiKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5j
cmVkZW50aWFsSUQsIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0KSk7
CisgICAgICAgIC8vIENoZWNrIGZpZG8tdTJmIGF0dGVzdGF0aW9uCisgICAgICAgIGFzc2VydF90
cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwgMSk7CisgICAgfQor
CisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAg
ICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5k
bGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVS
TC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9j
a0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ci
LCBlcnJvcjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZS
ZWdpc3RlclJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgdTJmIGF1
dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAg
ICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0
OiBbdGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZSZWdpc3Rl
clJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1
bHQoY3JlZGVudGlhbCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGV4Y2x1ZGVDcmVkZW50aWFscyBpbiBhIG1vY2sgdTJmIGF1dGhl
bnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
IkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1Yktl
eUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAg
ICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwgLy8g
VGhlIGNvbnRlbnQgZG9lc24ndCBtYXR0ZXIuCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogInN1Y2Nlc3MiLCBpc1UyZjogdHJ1ZSwgcGF5bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3Jv
bmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25z
ZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7CisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZXhjbHVkZUNyZWRlbnRp
YWxzIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4gMiIpOworCisgICAgcHJvbWlzZV90ZXN0
KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxv
Y2FsaG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogNTAwCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsg
aGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNz
IiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdUNvbmRpdGlvbnNOb3RT
YXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1Q29uZGl0aW9uc05vdFNhdGlz
ZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2VdIH0gfSk7Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4o
Y3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAg
ICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
dGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9jayB1MmYgYXV0aGVudGljYXRvci4iKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS1oaWQtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggZTM2MzZjM2U3NWI3ZDYwMTYxZDUwMGIyMTJl
ZjE1ODg0NjA3YzAyNS4uMTQ0YmE5ZDg5YTliZDg2MDZkOTQ0NzgwZDQ0YmJhMWY5NTIwMjMyMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1mYWlsdXJlLWhpZC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlk
LXNpbGVudC5odHRwcy5odG1sCkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgIH07CiAKICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJB
dXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgaGlk
OiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJtYWxpY2lvdXMt
cGF5bG9hZCIsIHBheWxvYWRCYXNlNjQ6IHRlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0IH0g
fSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwg
c3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2
NDogW3Rlc3REdW1teU1lc3NhZ2VQYXlsb2FkQmFzZTY0XSB9IH0pOwogICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwogICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1hbGljaW91cyBwYXlsb2FkIGluIGEgbW9jayBo
aWQgYXV0aGVudGljYXRvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWhpZC5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1mYWlsdXJlLWhpZC5odHRwcy5odG1sCmluZGV4IGVjNmIwYTg4ZmE5YTQyNzg0ODNiNDAwNjEx
YzdmOTlkMjg4NWZmN2IuLjVhYzIxMzkwYTI1MmE2M2FhMzc1OTM0NWJkNTEyMDM5Zjg3MzVmOTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1oaWQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLmh0dHBz
Lmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgfTsKIAogICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgcGF5bG9hZEJhc2U2NDogdGVzdER1bW15
TWVzc2FnZVBheWxvYWRCYXNlNjQgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3Qi
LCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBwYXlsb2FkQmFz
ZTY0OiBbdGVzdER1bW15TWVzc2FnZVBheWxvYWRCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKSwgIlVua25vd24gaW50ZXJuYWwgZXJyb3IuIEVycm9yIGNvZGU6IC0xIik7
CiAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWFsaWNpb3VzIHBh
eWxvYWQgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1
cmUtdTJmLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLXNpbGVudC5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEwNjE0NWJkNTVmYWM1ZDQ2OWI3ZTM4YWU5MDVh
OTAxOGZiZWU0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tnZXRdXSB3aXRoIG1hbGZvcm1lZCBzaWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0
Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3Jl
ZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YTdjZDhhNWJiOTFkODFiMTQ3NmFkZDdjNDJkMDEzNjNiMGQ2YzdhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIgQXV0aGVudGljYXRpb24gQVBJOiBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBmYWlsdXJlIGNhc2VzIHdpdGggYSBtb2NrIHUy
ZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAg
ICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRV
UkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGlt
ZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9u
TW9ja0NvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBoaWQ6IHsgc3RhZ2U6ICJy
ZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNV
MmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VC
YXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
bWFsZm9ybWVkIHNpZ24gcmVzcG9uc2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOwor
CisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9
IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTog
YXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVu
dGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3Jl
ZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5bG9h
ZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0XSB9IH0pOwor
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxs
b3cgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElk
QmFzZTY0KSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJT
dGFnZTogIm1zZyIsIGVycm9yOiAibWFsaWNpb3VzLXBheWxvYWQiLCBpc1UyZjogdHJ1ZSwgcGF5
bG9hZEJhc2U2NDogW3Rlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0LCB0ZXN0
VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NF0gfSB9KTsKKyAgICAgICAgcmV0dXJu
IHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxz
IGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhMDYxNDViZDU1ZmFjNWQ0NjliN2UzOGFlOTA1YTkwMThmYmVl
NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1h
bGZvcm1lZCBzaWduIHJlc3BvbnNlIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4gCitQQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBhbGxvdyBjcmVk
ZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAyIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtZ2V0LWZhaWx1cmUtdTJmLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQzNWI1ZjVjN2YwMWU2
NmQyMTgzMTVjZTAwOWEwY2E2ZDFiZjJmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYu
aHR0cHMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5XZWIg
QXV0aGVudGljYXRpb24gQVBJOiBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSBmYWlsdXJl
IGNhc2VzIHdpdGggYSBtb2NrIHUyZiBhdXRoZW50aWNhdG9yLjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfV0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJv
cjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKSwgIkNvdWxkbid0IHBhcnNlIHRoZSBVMkYgc2lnbiByZXNwb25zZS4iKTsKKyAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYWxmb3JtZWQgc2lnbiBy
ZXNwb25zZSBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tD
b25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwg
ZXJyb3I6ICJtYWxpY2lvdXMtcGF5bG9hZCIsIGlzVTJmOiB0cnVlLCBwYXlsb2FkQmFzZTY0OiBb
dGVzdFUyZkFwZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVu
dGlhbHMgbGlzdCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRp
YWxzIGluIGEgbW9jayBoaWQgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCkgfSwg
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJ
ZEJhc2U2NCkgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdlYkF1dGhlbnRpY2F0
aW9uTW9ja0NvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6
ICJtc2ciLCBlcnJvcjogIm1hbGljaW91cy1wYXlsb2FkIiwgaXNVMmY6IHRydWUsIHBheWxvYWRC
YXNlNjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZkFw
ZHVXcm9uZ0RhdGFPbmx5UmVzcG9uc2VCYXNlNjRdIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdl
dChvcHRpb25zKSwgIk5vIGNyZWRlbnRpYWxzIGZyb20gdGhlIGFsbG93Q3JlZGVudGlhbHMgbGlz
dCBpcyBmb3VuZCBpbiB0aGUgYXV0aGVudGljYXRvci4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEg
bW9jayBoaWQgYXV0aGVudGljYXRvci4gMiIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nl
c3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggNjdkYjgzMTAw
N2Y3YTJjNTA0NWQ3MmRhZTNlMWNkODAwMWNjMjRkMC4uNzQzNjI0NjZlM2ZiNTM4MTcxMWI5Mjk3
NDQ0N2E1NjdmYzE5M2ZlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtNiw3ICs2LDcgQEAKIDxzY3JpcHQ+CiAgICAgLy8g
RGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhl
eSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0
aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJz
dWNjZXNzIiwgcGF5bG9hZEJhc2U2NDogdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjQgfSB9KTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNj
ZXNzIiwgcGF5bG9hZEJhc2U2NDogW3Rlc3RBc3NlcnRpb25NZXNzYWdlQmFzZTY0XSB9IH0pOwog
CiAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKICAgICB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy11MmYuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRjNGEzOWVhYTI4ZDVhNDRjYzRhYzA2Njk3OTI0Mzk2NGE5YjQy
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUgQEAKKworUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1p
bmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgaGlkIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1vcmUgYWxsb3cgY3JlZGVudGlhbHMgaW4gYSBt
b2NrIGhpZCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCB0ZXN0IG9mIHVzZXIgcHJlc2VuY2UgaW4gYSBtb2NrIGhpZCBhdXRoZW50aWNhdG9y
LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhNmFhZmNjZDAxM2MyMmFkY2Q0M2UwYTM1ODU3MGUxMDg5MzIw
ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw3
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+V2ViIEF1dGhlbnRpY2F0aW9uIEFQSTogUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gc3VjY2VzcyBjYXNlcyB3aXRoIGEgbW9jayB1MmYg
YXV0aGVudGljYXRvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKQorICAg
IHsKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZD
cmVkZW50aWFsSWRCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5
cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4
QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VTJmQ3JlZGVudGlh
bElkQmFzZTY0KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNy
ZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0
IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQz
In0nKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5k
bGUsIG51bGwpOworCisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1
dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25z
ZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhT
dHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYw
NWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCAxKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5j
b3VudGVyLCA1OSk7CisgICAgfQorCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJM
LnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAgICAgICAgIHRp
bWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAi
bXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0
VTJmU2lnblJlc3BvbnNlXSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGhpZCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAg
YWxsb3dDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDog
QmFzZTY0VVJMLnBhcnNlKHRlc3RVMmZDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAorICAgICAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRo
ZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1
YlN0YWdlOiAibXNnIiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNl
NjQ6IFt0ZXN0VTJmQXBkdVdyb25nRGF0YU9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25S
ZXNwb25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Jl
c3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbW9yZSBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgaGlkIGF1
dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBh
bGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdFUyZkNyZWRlbnRpYWxJZEJhc2U2NCkgfV0sCisgICAgICAgICAgICAgICAgdGltZW91
dDogNTAwCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHsgaGlkOiB7IHN0YWdlOiAicmVxdWVzdCIsIHN1YlN0YWdlOiAibXNn
IiwgZXJyb3I6ICJzdWNjZXNzIiwgaXNVMmY6IHRydWUsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0VTJm
QXBkdUNvbmRpdGlvbnNOb3RTYXRpc2ZpZWRPbmx5UmVzcG9uc2VCYXNlNjQsIHRlc3RVMmZBcGR1
Q29uZGl0aW9uc05vdFNhdGlzZmllZE9ubHlSZXNwb25zZUJhc2U2NCwgdGVzdFUyZlNpZ25SZXNw
b25zZV0gfSB9KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggdGVzdCBvZiB1c2VyIHByZXNlbmNlIGluIGEgbW9jayBoaWQgYXV0aGVu
dGljYXRvci4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA4M2Y0YjQ4YWRjZjI1YjcwMDRlOTcwMWY0N2YwMTNm
OGEwNTlhZmFiLi5mNjA5ODZiNDcyMjdlY2VkMzFhMThmMjJjMGM5MWY5NGFjNGZhMWJkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAt
NjksNiArNjksMzQgQEAgY29uc3QgdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjQgPQogICAgICJa
NTFWc3R1UWt1SEkyZVhoMEN0MWdQQzBnU3gzQ1dMaDVJOWEyQUVBQUFCUUExaEhNRVVDSVFDU0ZU
dXVCV2dCIiArCiAgICAgIjQvRjBWQjdEbFVWTTA5SUhQbXhlMU16SFV3Um9DUlpiQ0FJZ0dLb3Y2
eG9BeDJNRWY2LzZxTnM4T3V0emhQMkMiICsKICAgICAiUW9KMUw3RmU2NEc5dUJjPSI7Citjb25z
dCB0ZXN0VTJmQXBkdU5vRXJyb3JPbmx5UmVzcG9uc2VCYXNlNjQgPSAia0FBPSI7Citjb25zdCB0
ZXN0VTJmQXBkdUluc05vdFN1cHBvcnRlZE9ubHlSZXNwb25zZUJhc2U2NCA9ICJiUUE9IjsKK2Nv
bnN0IHRlc3RVMmZBcGR1V3JvbmdEYXRhT25seVJlc3BvbnNlQmFzZTY0ID0gImFvQT0iOworY29u
c3QgdGVzdFUyZkFwZHVDb25kaXRpb25zTm90U2F0aXNmaWVkT25seVJlc3BvbnNlQmFzZTY0ID0g
ImFZVT0iOworY29uc3QgdGVzdFUyZlJlZ2lzdGVyUmVzcG9uc2UgPQorICAgICJCUVRvZGlXSmJ1
VGtiY0F5ZG02QWg1WXZOdCtkL290V2Z6ZGpBVnNaa0tZT0ZDZmVZUzFtUVl2YUdWQllIcnhjIiAr
CisgICAgImpCMnRjUXl4VENMNHlYQkY5R0V2c2d5UlFENjlpYjkzN0ZDWFZlNmNKalh2cXF4N0s1
eGM3eGMydzNGOXBJVTAiICsKKyAgICAieU1hMlZOZi9sRjlRdGN4T2VBVmIzVGxyWlBlTm9zWDVZ
Z0RNMUJYTkNQNUNBRGd3Z2dKS01JSUJNcUFEQWdFQyIgKworICAgICJBZ1FFYklnaU1BMEdDU3FH
U0liM0RRRUJDd1VBTUM0eExEQXFCZ05WQkFNVEkxbDFZbWxqYnlCVk1rWWdVbTl2IiArCisgICAg
ImRDQkRRU0JUWlhKcFlXd2dORFUzTWpBd05qTXhNQ0FYRFRFME1EZ3dNVEF3TURBd01Gb1lEekl3
TlRBd09UQTAiICsKKyAgICAiTURBd01EQXdXakFzTVNvd0tBWURWUVFERENGWmRXSnBZMjhnVlRK
R0lFVkZJRk5sY21saGJDQXlORGt4T0RJeiIgKworICAgICJNalEzTnpBd1dUQVRCZ2NxaGtqT1BR
SUJCZ2dxaGtqT1BRTUJCd05DQUFROHlya3N5NWNvZnVqbU9VTitJZnpXIiArCisgICAgInR2Rmxz
dFdqODlzVEhUSEJhM1FydEhiWTBlbVFnT3RVYkp1OTlWYm1JUS9VSjRXSm5uak1XSjYrTVE5czI1
LzAiICsKKyAgICAib3pzd09UQWlCZ2tyQmdFRUFZTEVDZ0lFRlRFdU15NDJMakV1TkM0eExqUXhO
RGd5TGpFdU1qQVRCZ3NyQmdFRSIgKworICAgICJBWUxsSEFJQkFRUUVBd0lFTURBTkJna3Foa2lH
OXcwQkFRc0ZBQU9DQVFFQW41c0ZJa2k4VFBRc3haa2Z5cXVzIiArCisgICAgIm0yVWJ2bHZjM0k3
d3JTd2NIL3MyMFljVjFDNTRza2tpVDVMSDV1ZWdYRW53NStUSWdiOHVsUFJlU2lHRFBYUlciICsK
KyAgICAiaFIwUGJCUmFLVlFNaDA4d2tzazB0RDBpSzRsaXdQUVF6dkhiZFlrcThSYTBTcGIxMDFy
ZW80SXZ4eFJ2WUFRNCIgKworICAgICJXOHRwdGx5WjUrdHBHWGhuQThEWXpVSG85MXpLUktxS3R5
V3Rqbm1mODZocGFtOGJKbGJtTWJIa0FZUEFqOXBUIiArCisgICAgIitrcVBoYUJXazVSSzRYbWhN
NTBBTFJYS3ZZRUFrT3h5THZYZStaWmFOeDFCWFdKTGFLSndmSzJYdk4wWGhhK1giICsKKyAgICAi
NGxqelBmVnFBeHFnTlcyT2pWNjhyY2RPQnhZMnhyRVFyT1hNbTVEZjZzcm1RUDhic1BIK1hiVHY5
NmxmQmdjeiIgKworICAgICI5VEJGQWlBeVIzbkdqek9BS0lvUmw3WUpYM3B1dWJHeHdTZjJhdUVx
bWY2Rk11d2p1UUloQU9PVkZxeE5ZZTVrIiArCisgICAgIkJFMVF0QldtcE5UWVM2YllsY3RhdDZH
cWZRZ2Q0MEg2a0FBPSI7Citjb25zdCB0ZXN0VTJmQ3JlZGVudGlhbElkQmFzZTY0ID0KKyAgICAi
UHIySnYzZnNVSmRWN3B3bU5lLXFySHNybkZ6dkZ6YkRjWDJraFRUSXhyWlUxXy1VWDFDMXpFNTRC
VnZkT1d0ayIgKworICAgICI5NDJpeGZsaUFNelVGYzBJX2tJQU9BIjsKK2NvbnN0IHRlc3RVMmZT
aWduUmVzcG9uc2UgPQorICAgICJBUUFBQURzd1JBSWdlOTRLVXF3ZlRJc240QU9qY00xbXBNY1Jq
ZEl0VkVlRFgwVzVuR2hDUC9jQ0lEeFJlMGVIIiArCisgICAgImY0VjRMZUVBaHFlRDBlZmZUalk1
NTNIMTlxK2pXcTFUYzRXT2tBQT0iOwogCiBjb25zdCBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQv
d2ViYXV0aG4vcmVzb3VyY2VzLyI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAwODM3MGZlMzg4MTE1ZjA5ZWRiZWJiZTJiZjZmODVhN2Q3
OTU4N2M2Li4wMzRmMTIyZjQyMWQwZjMyMzVkOTljNzg1ZWQ3ZTcxZDJlZDhkYTM4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzI1LDYg
KzEzMjUsMTIgQEAgaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1zdWNjZXNzLWhpZC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtaGlkLXNpbGVudC5odHRwcy5odG1sIFsgU2tp
cCBdCiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUt
aGlkLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLXUyZi1zaWxlbnQuaHR0
cHMuaHRtbCBbIFNraXAgXQoraHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLXUyZi5odHRwcy5odG1sIFsgU2tpcCBdCitodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtdTJmLmh0dHBzLmh0bWwgWyBT
a2lwIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KK2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS11MmYuaHR0cHMuaHRtbCBbIFNraXAgXQoraHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLXUyZi5odHRw
cy5odG1sIFsgU2tpcCBdCiAKICMgRklYTUU6IFVuc2tpcCB0aGVzZSB0ZXN0cyBvbmNlIHdlIGhh
dmUgdGhlIGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzQ0OTMwMTE5Pi4KIGZhc3QvZm9ybXMvYXV0
by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1iZS12aXNpYmxlLWFmdGVy
LWhpZGluZy1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRvbi5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>