<?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>313883</bug_id>
          
          <creation_ts>2026-05-01 23:44:47 -0700</creation_ts>
          <short_desc>REGRESSION(312470@main): Broke Safari builds</short_desc>
          <delta_ts>2026-05-01 23:48:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>313799</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2206823</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-05-01 23:44:47 -0700</bug_when>
    <thetext>https://commits.webkit.org/312470@main introduced a regression:
Broke Safari builds

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206825</commentid>
    <comment_count>1</comment_count>
      <attachid>479437</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2026-05-01 23:44:53 -0700</bug_when>
    <thetext>Created attachment 479437
REVERT of 312470@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206826</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-01 23:47:08 -0700</bug_when>
    <thetext>Committed 312473@main (dd0c40e587b1): &lt;https://commits.webkit.org/312473@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206828</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-01 23:48:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/176077171&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479437</attachid>
            <date>2026-05-01 23:44:53 -0700</date>
            <delta_ts>2026-05-01 23:47:09 -0700</delta_ts>
            <desc>REVERT of 312470@main</desc>
            <filename>bug-313883-20260502064453.patch</filename>
            <type>text/plain</type>
            <size>635410</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBjMjU1ZTJmN2RmNTc3MWVkMGUxZGYxZjRmYjhlYzIyMDIzMTFkZDYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDIgTWF5IDIwMjYgMDY6NDQ6NTEgKzAwMDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgMzEyNDcwQG1haW4uCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzEzODgzCgpCcm9rZSBTYWZhcmkgYnVpbGRzCgpSZXZlcnRlZCBj
aGFuZ2VzZXQ6CgoiW0J1aWxkIHNwZWVkXSBSZWR1Y2UgSlNDIGluY2x1ZGVzIGluIFdlYkNvcmUg
SlMgYmluZGluZ3MiCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTM3
OTkKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzEyNDcwQG1haW4KLS0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgfCAgIDQgLQogLi4uL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogIHwgIDE2IC0tCiAuLi4vTWVtb3J5VW5z
YWZlQ2FzdENoZWNrZXJFeHBlY3RhdGlvbnMgICAgICAgfCAgIDEgKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oICAgIHwgIDE3IC0tCiAuLi4vSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCAgfCAgIDQgLQogLi4uL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oICAgICAgIHwgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgICB8ICAgMSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaCAgICAgICAgfCAgIDEgLQogLi4uL2RvbWppdC9ET01KSVRHZXR0ZXJT
ZXR0ZXIuaCAgICAgICAgICAgICAgIHwgIDEyICstCiAuLi4vSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVFNpZ25hdHVyZS5oICAgfCAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwICAgICAgICAgICB8ICAgNiAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmggICAgICAgICAgICAgfCAgIDUgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0
cm9uZy5oICAgICAgICAgICB8ICAgNSArLQogLi4uL2ludGVycHJldGVyL0NhbGxGcmFtZUlubGlu
ZXMuaCAgICAgICAgICAgIHwgIDIwICstCiAuLi4vSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaCAgfCAgIDggKy0KIC4uLi9pbnRlcnByZXRlci9SZWdpc3RlcklubGluZXMu
aCAgICAgICAgICAgICB8ICAgMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAgICAgIHwgICAxIC0KIC4uLi9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
ICAgICAgICAgICB8ICAgMSAtCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJ
bmxpbmVzLmggfCAgMTkgKy0KIC4uLi9ydW50aW1lL0J1dHRlcmZseUlubGluZXNMaWdodC5oICAg
ICAgICAgICB8ICA1MSAtLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCAgfCAgIDEgLQogLi4uL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICAg
ICAgICAgIHwgICAxIC0KIC4uLi9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICAgICAg
ICAgICB8ICAyNyAtLS0KIC4uLi9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCAgICB8ICAyNyArKysKIC4uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGV4aW5nVHlwZS5j
cHAgICB8ICAgMSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUu
aCAgfCAgIDcgKy0KIC4uLi9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oICAgICAg
ICB8ICA5NSArKysrKysrLQogLi4uL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzTGln
aHQuaCAgIHwgMTI4IC0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0NvbmZpZy5oICAgICB8ICAgNCArLQogLi4uL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCAg
ICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9ydW50aW1lL0pTQ0pTVmFsdWVQcm9wZXJ0eUlubGlu
ZXMuaCAgICAgICB8ICAgMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oIHwgICA3ICsKIC4uLi9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmgg
ICAgICAgICB8ICAxNiArLQogLi4uL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggIHwgMTA0ICsrKysrKystCiAuLi4vSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
TGlnaHQuaCAgICAgfCAxMTIgLS0tLS0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oICAgfCAgIDUgLQogLi4uL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxp
bmVzLmggICAgICAgICAgIHwgICA1ICsKIC4uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oICB8ICAgMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmggICAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmggICAgICAgfCAgIDEgKwogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oIHwgIDgxICsrKysrKy0KIC4uLi9ydW50aW1lL1N0cnVjdHVyZUlubGluZXNMaWdo
dC5oICAgICAgICAgICB8IDExNiAtLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcCAgICB8ICAgNiArLQogU291cmNlL1dURi93dGYvUmVmVHJhY2tlck1p
eGluLmggICAgICAgICAgICAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
ICAgICAgICAgICAgICAgICAgfCAgIDEgLQogLi4uL0FwcGxlUGF5QU1TVUlQYXltZW50SGFuZGxl
ci5jcHAgICAgICAgICAgIHwgICAzICstCiAuLi4vTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAgfCAgIDEgLQogLi4uL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1lc3NhZ2VE
YXRhLmNwcCAgICAgIHwgICAxIC0KIC4uLi91cmwtcGF0dGVybi9VUkxQYXR0ZXJuQ29tcG9uZW50
LmNwcCAgICAgICB8ICAgMiAtCiAuLi4vV2ViVHJhbnNwb3J0U2VuZFN0cmVhbVNpbmsuY3BwICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAg
ICAgICAgIHwgICAxIC0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiB8ICAgOCAtCiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3Bw
ICAgfCAgIDEgLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCAgICAgICAgICAg
IHwgICA5ICstCiAuLi4vYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgICAgICAg
fCAgIDIgKy0KIC4uLi9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwICB8
ICAgMSAtCiAuLi4vYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCAgICAgfCAg
MTMgKy0KIC4uLi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXN5bmNJdGVyYXRvci5oICB8ICAy
NSArLQogLi4uL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0ZhY2FkZS5jcHAgICAgICAgIHwgMjI1
IC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
RmFjYWRlLmggIHwgMTAyIC0tLS0tLS0tCiAuLi4vYmluZGluZ3MvanMvSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaCAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3IuaCB8ICAgNCArLQogLi4uL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JO
b3RDYWxsYWJsZS5oIHwgICA0ICstCiAuLi4vanMvSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGUuaCAgICAgfCAgIDQgKy0KIC4uLi9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJT
b3VyY2UuaCAgICB8ICAgMiAtCiAuLi4vYmluZGluZ3MvanMvSlNET01Db252ZXJ0SW50ZXJmYWNl
LmggICAgICAgfCAgIDUgKy0KIC4uLi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydE51
bWJlcnMuaCB8ICAgMyArLQogLi4uL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0UmVj
b3JkLmggIHwgICA3ICstCiAuLi4vYmluZGluZ3MvanMvSlNET01Db252ZXJ0U2VxdWVuY2VzLmgg
ICAgICAgfCAgNDQgKystLQogLi4uL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5p
b24uaCAgIHwgICA2ICstCiAuLi4vV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJH
TC5oICAgfCAgIDUgLQogLi4uL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIHwgICAyICstCiAuLi4vYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RJbmxpbmVzLmgg
ICAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaCAg
ICB8ICAxNCArLQogLi4uL2JpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgg
IHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwICAg
fCAgIDEgLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggIHwg
ICA2ICsKIC4uLi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCB8ICAg
MiArLQogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNwcCAgIHwgICA2
IC0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oICAgICB8ICAgMSAt
CiAuLi4vV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oICAgfCAgIDggKy0K
IC4uLi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgICB8ICAgMiArLQog
Li4uL2JpbmRpbmdzL2pzL0pTRWxlbWVudEludGVybmFsc0N1c3RvbS5jcHAgIHwgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgfCAgIDEgLQogLi4u
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCAgIHwgICAxIC0KIC4uLi9i
aW5kaW5ncy9qcy9KU0lEQlJlcXVlc3RDdXN0b20uY3BwICAgICAgICB8ICAgMSAtCiAuLi4vanMv
SlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmNwcCAgICAgfCAgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwICB8ICAgMiArLQogLi4uL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgICAgIHwgICA0ICstCiAuLi4vYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgICAgICAgfCAgIDEgLQogLi4uL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtICAgICAgIHwgIDgxICsrKy0tLS0KIC4uLi9iaW5k
aW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCAgICAgICB8ICAgMiArLQogLi4uL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAgIHwgIDEwICstCiAuLi4vYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmggICAgfCAgIDEgLQogLi4uL3Rlc3QvSlMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgIHwgIDEwICstCiAuLi4vdGVzdC9KUy9K
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggICAgfCAgIDEgLQogLi4uL3NjcmlwdHMvdGVz
dC9KUy9KU0V4cG9zZWRTdGFyLmNwcCAgICAgICAgIHwgICA4ICstCiAuLi4vdGVzdC9KUy9KU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAgICAgfCAgMTIgKy0KIC4uLi90ZXN0L0pTL0pTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwICAgICB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oICAgICAgIHwgICAxIC0KIC4uLi90ZXN0L0pTL0pTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCAgICB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCAgICAgIHwgICAxIC0KIC4uLi90ZXN0L0pTL0pTU2hhZG93UmVh
bG1HbG9iYWxTY29wZS5jcHAgICAgICB8ICAgNiArLQogLi4uL3Rlc3QvSlMvSlNTaGFkb3dSZWFs
bUdsb2JhbFNjb3BlLmggICAgICAgIHwgICAxIC0KIC4uLi90ZXN0L0pTL0pTU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwICAgICB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZS5oICAgICAgIHwgICAxIC0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5
bmNJdGVyYWJsZS5jcHAgICB8ICAxMiArLQogLi4uL0pTL0pTVGVzdEFzeW5jSXRlcmFibGVXaXRo
b3V0RmxhZ3MuY3BwICAgIHwgIDEyICstCiAuLi4vdGVzdC9KUy9KU1Rlc3RBc3luY0tleVZhbHVl
SXRlcmFibGUuY3BwICAgfCAgMTIgKy0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwICAgICB8ICAxMiArLQogLi4uL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllci5jcHAgIHwgICA4ICstCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFj
ZXIuY3BwICAgICAgfCAgIDggKy0KIC4uLi90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24u
Y3BwICAgICAgICB8ICAgMiArLQogLi4uZXN0Q2FsbGJhY2tGdW5jdGlvbkdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwIHwgICAyICstCiAuLi4vSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0LmNwcCAgfCAgIDIgKy0KIC4uLi9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVk
ZWZzLmNwcCB8ICAgMiArLQogLi4uL0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVmFyaWFk
aWMuY3BwIHwgICAyICstCiAuLi4vdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAg
ICAgICAgfCAgIDcgKy0KIC4uLi9KUy9KU1Rlc3RDYWxsYmFja1dpdGhGdW5jdGlvbk9yRGljdC5j
cHAgICB8ICAgMiArLQogLi4uL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCAgIHwgICA4ICstCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsLmNwcCAg
ICAgfCAgIDggKy0KIC4uLi90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwICAg
ICB8ICAgOCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAg
IHwgICA4ICstCiAuLi4vYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAg
fCAgIDkgKy0KIC4uLi9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmggICB8
ICAgMiArLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcCAgIHwg
IDEwICstCiAuLi4vdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAgICAgICAgfCAg
IDIgKy0KIC4uLi9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwICB8ICAx
MCArLQogLi4uSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwIHwgICA4
ICstCiAuLi4vdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAgICAgfCAgMTAg
Ky0KIC4uLi9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcCAgICB8ICAxMCAr
LQogLi4uVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwIHwgICA4ICst
CiAuLi4vdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAgICAgICAgfCAgMjYgKy0K
IC4uLi90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAgICAgICB8ICAzNiArLS0K
IC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeS5jcHAgICAgICB8ICAgNiArLQog
Li4uL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeU5vVG9OYXRpdmUuY3BwICAgIHwgICA2ICstCiAu
Li5zdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5jcHAgfCAgIDYgKy0KIC4u
Li9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwICB8ICAgOCArLQogLi4u
L3Rlc3QvSlMvSlNUZXN0RW1iZWRkZXJBcnJheUxpa2UuY3BwICAgICAgIHwgICA4ICstCiAuLi4v
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5jcHAgfCAgIDQgKy0KIC4uLi90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwICAgICAgICB8ICAgOCArLQogLi4uL3Rl
c3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwICAgICAgIHwgICA4ICstCiAuLi4vdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCAgICAgICAgfCAgMjAgKy0KIC4uLi9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwICAgICB8ICAxNiArLQogLi4uL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwICAgICAgIHwgIDEwICstCiAuLi4vdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwICAgfCAgIDggKy0KIC4uLi90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwICAgICB8ICAgOCArLQogLi4uL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwICAgIHwgIDEwICstCiAuLi4vc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oICAgICAgfCAgIDEgLQogLi4uL0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwICAgIHwgIDEwICstCiAuLi4vSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCAgfCAgMTAgKy0KIC4uLi9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwICB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0
SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAgICAgIHwgIDI0ICstCiAuLi4vdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAgICAgfCAgMTAgKy0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcCAgICAgICB8ICAxMiArLQogLi4uL0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCAgIHwgICA4ICstCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEl0ZXJhYmxlLmNwcCAgICAgICAgfCAgMTIgKy0KIC4uLi90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcCAgICB8ICAgOCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcCAgIHwgICA4ICstCiAuLi4vdGVzdC9KUy9KU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdC5jcHAgfCAgIDggKy0KIC4uLi90ZXN0L0pTL0pTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuY3BwICB8ICAxNCArLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
YXBMaWtlLmNwcCAgICAgICAgIHwgIDEwICstCiAuLi4vSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5jcHAgfCAgMTAgKy0KIC4uLlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcCB8ICAyNCArLQogLi4uTmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwIHwgIDI0ICstCiAuLi5lc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAgfCAgMjQgKy0KIC4uLi9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuY3BwICAgICB8ICAxMiArLQogLi4uL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcCAgIHwgIDEyICstCiAuLi4vSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuY3BwICAgfCAgMTIgKy0KIC4uLi9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAgICB8ICAxNCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aC5jcHAgICAgIHwgIDE2ICstCiAuLi4vdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAgfCAgMTYgKy0KIC4uLi9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmNwcCAgICB8ICAxNiArLQogLi4uL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwIHwgIDI0ICstCiAuLi4vSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAgfCAgMjQgKy0KIC4uLi9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cCAgICB8ICAyNCArLQogLi4uL0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIu
Y3BwIHwgIDI0ICstCiAuLi50TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5j
cHAgfCAgMjQgKy0KIC4uLnROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cCB8ICAxNCArLQogLi4uZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3Bw
IHwgIDI0ICstCiAuLi5ibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAg
fCAgMTQgKy0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZXNwYWNlQ29uc3QuY3BwICB8
ICAgNiArLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwIHwg
ICA2ICstCiAuLi4vYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwICAgfCAg
MTQgKy0KIC4uLi9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCAgICB8IDE5
NSArKysrKysrLS0tLS0tLS0KIC4uLi90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
LmNwcCAgICB8ICAgOCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgIHwgICA4ICstCiAuLi5UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAgfCAgMTEgKy0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcCB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cCAgIHwgIDIwICstCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5j
cHAgfCAgMTAgKy0KIC4uLi9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNw
cCB8ICAxMCArLQogLi4uL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcCAg
IHwgICA4ICstCiAuLi4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNjaGVkdWxlZEFjdGlvbi5jcHAg
fCAgIDggKy0KIC4uLi9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwICB8
ICAgOCArLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcCAgICAgICAgIHwg
IDEwICstCiAuLi4vSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAgfCAg
MTAgKy0KIC4uLi90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcCAgICB8ICAz
NiArLS0KIC4uLi90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAgICB8ICAg
MiArLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgICAgIHwgICA4
ICstCiAuLi4vSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwICAgfCAgIDgg
Ky0KIC4uLi9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCAgICB8ICAgOCAr
LQogLi4uU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIHwgICA4ICst
CiAuLi5TVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAgfCAgIDggKy0K
IC4uLi9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCB8ICAgOCArLQog
Li4uL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcCAgIHwgICA4ICstCiAu
Li4vc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFRhZ2dlZFdyYXBwZXIuY3BwICAgfCAgIDggKy0KIC4u
Li9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwICAgICAgICB8ICAgOCArLQogLi4u
L3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwICAgIHwgICAyICstCiAuLi4v
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwICAgfCAgIDggKy0KIC4uLi9z
Y3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oICAgICB8ICAgMSAtCiAuLi4vc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcCAgfCAgIDggKy0KIC4uLi9zY3Jp
cHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCAgICB8ICAgMSAtCiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVENoZWNrRE9NLmggICAgICAgIHwgICAxIC0KIFNvdXJjZS9XZWJDb3Jl
L2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcCAgICB8ICAgMSAtCiBTb3VyY2UvV2ViQ29yZS9k
b21qaXQvSlNOb2RlRE9NSklULmNwcCAgICAgICAgfCAgIDEgLQogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcCAgICAgICAgICAgICAgIHwgICAxIC0KIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UERGRG9jdW1lbnQuY3BwICAgICAgICAgICB8ICAgMiArLQogLi4uL2luc3BlY3Rvci9XZWJJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwICAgICAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oICAgICAgICAgICAgfCAgIDEgLQogLi4uL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwICAgICAgIHwgICAxIC0KIC4uLi9TaGFyZWQvSmF2YVNjcmlwdEV2YWx1
YXRpb25SZXN1bHQuY3BwICAgICB8ICAgMSAtCiAuLi4vQmluZGluZ3MvSlNXZWJFeHRlbnNpb25X
cmFwcGVyLmNwcCAgICAgICAgfCAgIDEgLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcCAgICAgIHwgIDIwICstCiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZSAg
ICAgICAgICAgICAgICAgfCAgIDEgKwogMjI3IGZpbGVzIGNoYW5nZWQsIDEzMzggaW5zZXJ0aW9u
cygrKSwgMTczNSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzTGlnaHQuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5l
c0xpZ2h0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNMaWdodC5oCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lc0xpZ2h0LmgK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmdGYWNhZGUuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nRmFjYWRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTUyM2ZlOGFjNWJjLi5jMjU3ZjZhNWE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTEwNDEsNyArMTA0MSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9CdWZmZXJNZW1vcnlIYW5kbGUuaAog
ICAgIHJ1bnRpbWUvQnV0dGVyZmx5LmgKICAgICBydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAot
ICAgIHJ1bnRpbWUvQnV0dGVyZmx5SW5saW5lc0xpZ2h0LmgKICAgICBydW50aW1lL0J5dGVjb2Rl
Q2FjaGVFcnJvci5oCiAgICAgcnVudGltZS9DYWNoZVBheWxvYWQuaAogICAgIHJ1bnRpbWUvQ2Fj
aGVhYmxlSWRlbnRpZmllci5oCkBAIC0xMTU5LDcgKzExNTgsNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5oCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCiAgICAgcnVudGltZS9K
U0FycmF5QnVmZmVyVmlld0lubGluZXMuaAotICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzTGlnaHQuaAogICAgIHJ1bnRpbWUvSlNBcnJheUlubGluZXMuaAogICAgIHJ1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmgKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAtMTIwNyw3
ICsxMjA1LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKICAgICBydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaAogICAgIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKLSAgICBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lc0xpZ2h0LmgKICAgICBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmgKICAgICBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oCiAgICAgcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCkBAIC0xMzg1LDcg
KzEzODIsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJ1bnRpbWUvU3RydWN0dXJlQ3JlYXRlSW5saW5lcy5oCiAgICAgcnVudGltZS9TdHJ1Y3R1
cmVJRC5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKLSAgICBydW50aW1lL1N0cnVj
dHVyZUlubGluZXNMaWdodC5oCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCiAgICAg
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAogICAgIHJ1bnRpbWUvU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmM3OGMw
ZjM5MDEzLi5kZTBmYzQ4Yjg0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
ODYsOSArMTg2LDYgQEAKIAkJMEYyQjY2RjIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAqLzsgfTsKIAkJMEYyQjY2RjQx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzYxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZDNjAxQkFGQjA3RTREODg4
QzVBQTdBRCAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNMaWdodC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzFGRDBGMEQ3Mzc5NEM3MkJG
RjM3RjRDIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc0xpZ2h0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTJBOUQ4NDc0RkI4NEMz
QjkxREE0N0IxIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lc0xpZ2h0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNkI4RDJFMUNEM0E0N0Y4QkIyOUI2
QUUgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzTGlnaHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCNEM3QTU5MzNFNjE0OThEQUYzRDdDMTIg
LyogU3RydWN0dXJlSW5saW5lc0xpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEOEUxRjBBMkIzQzk0RDdFOEYxQTJCM0MgLyogU3RydWN0dXJlSW5s
aW5lc0xpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyQjY2RjUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJCNjZDNzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJCNjZGNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZDODE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyQjY2RjcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50OEFycmF5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDOTE3QjZC
NUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDg4LDcgKzQ4NSw2IEBACiAJCTBGQjdGMzk2MTVFRDhF
NDYwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzhBMTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheVN0b3Jh
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyog
QnV0dGVyZmx5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzhDMTVFRDhF
MzgwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzk2QzA2MDMzNjg3NDNDNzhFN0Y5ODU5IC8qIEJ1
dHRlcmZseUlubGluZXNMaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I5NDIwREI0QUNDNEE3RDgzQjFDOEFFIC8qIEJ1dHRlcmZseUlubGluZXNM
aWdodC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEQxNUVEOEUzODAwRjE2
N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCN0YzOEUxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQjdGMzlC
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRl
eGluZ1R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjk0OSw5ICsyOTQ1LDYgQEAKIAkJMEYyQjY2QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QzYxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzFGRDBGMEQ3Mzc5NEM3MkJGRjM3RjRDIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lc0xpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc0xpZ2h0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE2QjhEMkUxQ0QzQTQ3RjhCQjI5QjZBRSAvKiBKU0FycmF5QnVm
ZmVyVmlld0lubGluZXNMaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0FycmF5QnVmZmVyVmlld0lubGluZXNMaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEOEUxRjBBMkIzQzk0RDdFOEYxQTJCM0MgLyogU3RydWN0dXJlSW5saW5lc0xpZ2h0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlubGluZXNMaWdodC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCNjZDNzE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQjY2QzkxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTSW50OEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50OEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDYxLDcgKzM0NTQsNiBAQAog
CQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1dHRlcmZseS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkI3RjM4QzE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdXR0ZXJmbHlJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCOTQyMERCNEFDQzRBN0Q4M0IxQzhBRSAv
KiBCdXR0ZXJmbHlJbmxpbmVzTGlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnV0dGVyZmx5SW5saW5lc0xpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQjdGMzhEMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGluZ0hlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkI3RjM4RTE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nSGVhZGVy
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI3RjM4RjE1RUQ4RTM4
MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGV4aW5nVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU2Miw3
ICs4NTU0LDYgQEAKIAkJCQk5RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5t
bSAqLywKIAkJCQkwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggKi8sCiAJ
CQkJMEZCN0YzOEMxNUVEOEUzODAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCAqLywKLQkJ
CQk3Qjk0MjBEQjRBQ0M0QTdEODNCMUM4QUUgLyogQnV0dGVyZmx5SW5saW5lc0xpZ2h0LmggKi8s
CiAJCQkJMTQzNTk1MjAyMkE1MjFDQTAwRTgwODZEIC8qIEJ5dGVjb2RlQ2FjaGVFcnJvci5jcHAg
Ki8sCiAJCQkJMTQzNTk1MUYyMkE1MjFDQTAwRTgwODZEIC8qIEJ5dGVjb2RlQ2FjaGVFcnJvci5o
ICovLAogCQkJCUZFOERFNTRFMjNBQzNBOEUwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVy
LmNwcCAqLywKQEAgLTg4OTEsNyArODg4Miw2IEBACiAJCQkJMEYyQjY2QkExN0I2QjVBQjAwQTdB
RTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmNwcCAqLywKIAkJCQkwRjJCNjZCQjE3QjZCNUFCMDBB
N0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQkwRjJCNjZCQzE3QjZCNUFCMDBB
N0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8sCi0JCQkJQTZCOEQyRTFDRDNB
NDdGOEJCMjlCNkFFIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lc0xpZ2h0LmggKi8sCiAJCQkJ
NTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCiAJCQkJNTM5
REQ3RjMyM0MxQkJBOTAwOTA1RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgKi8sCiAJCQkJNTM5
REQ3RjQyM0MxQkJBOTAwOTA1RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLApAQCAtODk4MCw3
ICs4OTcwLDYgQEAKIAkJCQkwRjJCNjZDNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovLAogCQkJCTBGMkI2NkM1MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oICovLAogCQkJ
CTBGMkI2NkM2MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaCAqLywKLQkJCQlDMUZEMEYwRDczNzk0QzcyQkZGMzdGNEMgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzTGlnaHQuaCAqLywKIAkJCQk5MUMzMjY1RDJCRkZCMkJGMDA5QzdFMkIg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwICovLAogCQkJCTBGMkI2NkM3
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICov
LAogCQkJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovLApAQCAtOTQyMCw3ICs5NDA5LDYgQEAKIAkJCQkwRkQy
QzkyNTE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlQ3JlYXRlSW5saW5lcy5oICovLAogCQkJ
CTUzN0ZFRUM4Mjc0MkJEQTMwMEM5RUZFRSAvKiBTdHJ1Y3R1cmVJRC5oICovLAogCQkJCTBGRDJD
OTIzMTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggKi8sCi0JCQkJRDhFMUYw
QTJCM0M5NEQ3RThGMUEyQjNDIC8qIFN0cnVjdHVyZUlubGluZXNMaWdodC5oICovLAogCQkJCUMy
RjBGMkQwMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgKi8sCiAJCQkJ
QzJGRTE4QTMxNkJBRUM0MDAwQUYzMDYxIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggKi8sCiAJCQkJ
QzIwQkE5MkMxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oICov
LApAQCAtMTExOTIsNyArMTExODAsNiBAQAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAv
KiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3
QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5ODE1RUQ4RTQ2MDBG
MTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzk2QzA2MDMz
Njg3NDNDNzhFN0Y5ODU5IC8qIEJ1dHRlcmZseUlubGluZXNMaWdodC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQzNTk1MjEyMkE1MjFDRDAwRTgwODZEIC8qIEJ5dGVjb2RlQ2Fj
aGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5MjIsNyArMTE5MDks
NiBAQAogCQkJCUEzOEQyNTBFMjU4MDBENDQwMDQyQkZERCAvKiBKU0FycmF5QnVmZmVyUHJvdG90
eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTkxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFQTE3QjZC
NUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
LQkJCQlFMkE5RDg0NzRGQjg0QzNCOTFEQTQ3QjEgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVz
TGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUZCOEJBMUM5OURBN0MwMDk0MEZBMSAvKiBK
U0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM5REQ3RjUyM0MxQkJCNTAwOTA1
RjEzIC8qIEpTQXJyYXlJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOENGMjFCOTMyREQ5
RDY4QTAwMzU1QTZDIC8qIEpTQXN5bmNEaXNwb3NhYmxlU3RhY2suaCBpbiBIZWFkZXJzICovLApA
QCAtMTIwMDIsNyArMTE5ODgsNiBAQAogCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZDNjAxQkFGQjA3RTREODg4QzVBQTdBRCAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXNMaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjUxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY2MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTI1NDEsNyArMTI1MjYsNiBAQAogCQkJCTBGRDJDOTI2MTZEMDFFRTkwMEM3ODAz
RiAvKiBTdHJ1Y3R1cmVDcmVhdGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzdGRUVD
OTI3NDJCREEzMDBDOUVGRUUgLyogU3RydWN0dXJlSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCNEM3QTU5MzNFNjE0OThEQUYzRDdDMTIgLyogU3RydWN0dXJlSW5saW5lc0xpZ2h0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZFMThBNDE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0
dXJlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMEJBOTJEMTZCQjFDMTUwMEIzQUVB
MiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMz
MkE1MTRDQTdEREQwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NhZmVyQ1BQRXhwZWN0YXRpb25zL01lbW9y
eVVuc2FmZUNhc3RDaGVja2VyRXhwZWN0YXRpb25zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nh
ZmVyQ1BQRXhwZWN0YXRpb25zL01lbW9yeVVuc2FmZUNhc3RDaGVja2VyRXhwZWN0YXRpb25zCmlu
ZGV4IDMyNzkzYTFiZmIxNy4uODFmMTUzZmQyYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2FmZXJDUFBFeHBlY3RhdGlvbnMvTWVtb3J5VW5zYWZlQ2FzdENoZWNrZXJFeHBl
Y3RhdGlvbnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NhZmVyQ1BQRXhwZWN0YXRpb25z
L01lbW9yeVVuc2FmZUNhc3RDaGVja2VyRXhwZWN0YXRpb25zCkBAIC00NCw2ICs0NCw3IEBAIGlu
c3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCiBpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAoraW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oCiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKIGppdC9KSVRPcGVyYXRpb25zLmNwcAogaml0L0pJVFRodW5r
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCAz
YjU5OTk5ZjViMzAuLjNjNGIzMzVhM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaApAQCAtMjksNyArMjksNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db2RlQmxvY2tIYXNoLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGly
ZWN0RXZhbENvZGVDYWNoZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lDU3RhdHVzTWFw
Lmg+CkBAIC0xMDc5LDIyICsxMDc4LDYgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTU2NvcGUKIAogdm9p
ZCBzZXRQcmludGVyKFByaW50ZXI6OlByaW50UmVjb3JkJiwgQ29kZUJsb2NrKik7CiAKLVdURl9B
TExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0JFR0lOCi1pbmxpbmUgUmVnaXN0ZXImIENhbGxGcmFt
ZTo6cihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQotewotICAgIGlmIChyZWcuaXNDb25zdGFudCgpKQot
ICAgICAgICBTVVBQUkVTU19NRU1PUllfVU5TQUZFX0NBU1QgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PFJlZ2lzdGVyKj4oJnRoaXMtPmNvZGVCbG9jaygpLT5jb25zdGFudFJlZ2lzdGVyKHJlZykp
OwotICAgIHJldHVybiB0aGlzW3JlZy5vZmZzZXQoKV07Ci19Ci1XVEZfQUxMT1dfVU5TQUZFX0JV
RkZFUl9VU0FHRV9FTkQKLQotaW5saW5lIEpTQ2VsbCogQ2FsbEZyYW1lOjpjb2RlT3duZXJDZWxs
KCkgY29uc3QKLXsKLSAgICBpZiAoY2FsbGVlKCkuaXNOYXRpdmVDYWxsZWUoKSkKLSAgICAgICAg
cmV0dXJuIGNvZGVPd25lckNlbGxTbG93KCk7Ci0gICAgcmV0dXJuIGNvZGVCbG9jaygpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCmluZGV4IGJmNWNkYTRmYTQ0NC4u
YmMwYTMyNGQ3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaApAQCAtMzksNyArMzksNiBAQCBjbGFzcyBTdHJ1Y3R1cmU7CiAKIHN0cnVj
dCBDbGFzc0luZm87CiAKLXVzaW5nIEluZGV4aW5nVHlwZSA9IHVpbnQ4X3Q7CiBlbnVtIEpTVHlw
ZSA6IHVpbnQ4X3Q7CiBlbnVtIFR5cGVkQXJyYXlUeXBlIDogdWludDhfdDsKIApAQCAtNTk3LDkg
KzU5Niw2IEBAIFNwZWN1bGF0ZWRUeXBlIE5PREVMRVRFIHR5cGVPZkRvdWJsZVVuYXJ5T3AoU3Bl
Y3VsYXRlZFR5cGUpOwogLy8gVGhpcyBpcyBtb3N0bHkgZm9yIGRlYnVnZ2luZyBzbyB3ZSBjYW4g
ZmlsbCBwcm9maWxlcyBmcm9tIHN0cmluZ3MuCiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21TdHJpbmcoY29uc3QgY2hhciopOwogCi1ib29sIE5PREVMRVRFIGlzUHJvdmVuVmFsaWRUeXBl
Rm9ySW5kZXhpbmdTaGFwZVN0b3JhZ2UoSW5kZXhpbmdUeXBlLCBTcGVjdWxhdGVkVHlwZSk7Ci1J
bmRleGluZ1R5cGUgTk9ERUxFVEUgbGVhc3RVcHBlckJvdW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBl
Rm9yU3BlY3VsYXRpb24oSW5kZXhpbmdUeXBlLCBTcGVjdWxhdGVkVHlwZSk7Ci0KIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA2ZmFm
ZmE5Y2UxNWEuLjQ3ZmRhZGVhZjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZH
QWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJD
bG9iYmVyU3RhdGUuaCIKLSNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIgog
I2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJVFNpZ25hdHVy
ZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAzNWE3MTQzMWIxYTkuLmUzNDNjNDViNTE4
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJbnNlcnRp
b25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgotI2luY2x1ZGUgIkRPTUpJVENhbGxET01H
ZXR0ZXJTbmlwcGV0LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlR5cGVMb2NhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAppbmRleCA0OGQ0MDBjNWZhOWIuLmQ0ODA5Y2JjM2QwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2lu
Y2x1ZGUgIkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgotI2luY2x1
ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oCmluZGV4IDBjMTJhNjJkOGU3Ny4uZDFlYWY2
MGE2ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEdl
dHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUR2V0
dGVyU2V0dGVyLmgKQEAgLTI1LDE1ICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0RPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlTbG90Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUHV0UHJvcGVydHlTbG90Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NwZWN1bGF0ZWRUeXBlLmg+CiAKLW5hbWVzcGFjZSBKU0MgewotCi11c2lu
ZyBTcGVjdWxhdGVkVHlwZSA9IHVpbnQ2NF90OwotCi1uYW1lc3BhY2UgRE9NSklUIHsKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgQ2FsbERPTUdldHRlclNuaXBw
ZXQ7CiAKQEAgLTYxLDUgKzU4LDQgQEAgcHJpdmF0ZToKICAgICBTcGVjdWxhdGVkVHlwZSBtX3Jl
c3VsdFR5cGU7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBET01KSVQKLX0gLy8gbmFtZXNwYWNlIEpT
QworfSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFNp
Z25hdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUu
aAppbmRleCAyYzJmMTk5MjFkMGMuLjU5YmFiN2VlOGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRTaWduYXR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVFNpZ25hdHVyZS5oCkBAIC0yNywxMyArMjcsMTAgQEAKIAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NsYXNzSW5mby5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RPTUpJVEVmZmVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NwZWN1bGF0
ZWRUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0NvZGVQdHIuaD4KIAotbmFtZXNwYWNlIEpTQyB7Ci0K
LXVzaW5nIFNwZWN1bGF0ZWRUeXBlID0gdWludDY0X3Q7Ci0KLW5hbWVzcGFjZSBET01KSVQgewor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogCiAvLyBGSVhNRTogQ3VycmVudGx5
LCB3ZSBvbmx5IHN1cHBvcnQgZnVuY3Rpb25zIHdoaWNoIGFyZ3VtZW50cyBhcmUgdXAgdG8gMi4K
IC8vIEV2ZW50dWFsbHksIHdlIHNob3VsZCBleHRlbmQgdGhpcy4gQnV0IHBvc3NpYmx5LCAyIG9y
IDMgY2FuIGNvdmVyIHR5cGljYWwgdXNlIGNhc2VzLgpAQCAtNjYsNSArNjMsNCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgRWZmZWN0IGVmZmVjdDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIERPTUpJVAot
fSAvLyBuYW1lc3BhY2UgSlNDCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5k
ZXggODk5ZWUwNjZiM2FlLi4xY2RhMGI5YzI3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUGluYmFsbENvbXBsZXRpb24uaCIK
ICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUV4
ZWN1dGFibGUuaCIKLSNpbmNsdWRlICJQcm94eU9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3BhY2VU
aW1lTXV0YXRvclNjaGVkdWxlci5oIgpAQCAtNDM5LDExICs0MzgsNiBAQCBIZWFwOjpIZWFwKFZN
JiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVNwYWNlQW5kU2V0IElTT19TVUJTUEFDRV9JTklUKCp0aGlzLCBkZXN0cnVjdGlibGVDZWxsSGVh
cENlbGxUeXBlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDNiYTBmNGUx
CiAKIHsKLSAgICBpZiAoT3B0aW9uczo6Zm9yY2VGZW5jZWRCYXJyaWVyKCkpIHsKLSAgICAgICAg
bV9tdXRhdG9yU2hvdWxkQmVGZW5jZWQgPSB0cnVlOwotICAgICAgICBtX2JhcnJpZXJUaHJlc2hv
bGQgPSB0YXV0b2xvZ2ljYWxUaHJlc2hvbGQ7Ci0gICAgfQotCiAgICAgbV93b3JsZFN0YXRlLnN0
b3JlKDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVh
ZHMgPSBoZWFwSGVscGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJh
bGxlbFRocmVhZHM7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDIyMjNk
OTUwNmY0ZS4uODZkMmI5ZjY2NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFya2VkQmxvY2suaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYXJrZWRTcGFjZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL011dGF0b3JTdGF0ZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QcmVjaXNlU3Vic3BhY2UuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJRC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N5bmNocm9ub3VzbmVzcy5oPgpAQCAtOTAwLDEyICs5MDEsMTIgQEAgcHJpdmF0ZToKICAgICBM
b2NrIG1fcGFyYWxsZWxTbG90VmlzaXRvckxvY2s7CiAgICAgYm9vbCBtX2lzU2FmZVRvQ29sbGVj
dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fbXV0YXRvclNob3VsZEJlRmVuY2VkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbXV0YXRv
clNob3VsZEJlRmVuY2VkIHsgT3B0aW9uczo6Zm9yY2VGZW5jZWRCYXJyaWVyKCkgfTsKICAgICBi
b29sIG1faXNNYXJraW5nRm9yR0NWZXJpZmllciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2tlZXBW
ZXJpZmllclNsb3RWaXNpdG9yIHsgZmFsc2UgfTsKICAgICBMb2NrIG1fd2FzbUNhbGxlZXNQZW5k
aW5nRGVzdHJ1Y3Rpb25Mb2NrOwogCi0gICAgdW5zaWduZWQgbV9iYXJyaWVyVGhyZXNob2xkIHsg
YmxhY2tUaHJlc2hvbGQgfTsKKyAgICB1bnNpZ25lZCBtX2JhcnJpZXJUaHJlc2hvbGQgeyBPcHRp
b25zOjpmb3JjZUZlbmNlZEJhcnJpZXIoKSA/IHRhdXRvbG9naWNhbFRocmVzaG9sZCA6IGJsYWNr
VGhyZXNob2xkIH07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgU2Vjb25kcyBtX2xhc3RGdWxs
R0NMZW5ndGggeyAyX21zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdHJvbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oCmluZGV4IGFm
MGIxOGVhODkyNC4uNWRiZTc5OWY4NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdHJvbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcu
aApAQCAtMzIsNiArMzIsNyBAQCBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhbmRsZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hhbmRsZVNldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXAuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC00MSw3ICs0Miw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIAotUkVGVFJBQ0tFUl9ERUNMKFN0cm9uZ1Jl
ZlRyYWNrZXIpOworUkVGVFJBQ0tFUl9ERUNMKFN0cm9uZ1JlZlRyYWNrZXIsIHsKKyAgICBKU0M6
OmluaXRpYWxpemUoKTsKK30pOwogCiAvLyBBIHN0cm9uZ2x5IHJlZmVyZW5jZWQgaGFuZGxlIHRo
YXQgcHJldmVudHMgdGhlIG9iamVjdCBpdCBwb2ludHMgdG8gZnJvbSBiZWluZyBnYXJiYWdlIGNv
bGxlY3RlZC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3Jh
YkxvY2sgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPiBjbGFzcyBTdHJvbmcgZmluYWwg
OiBwdWJsaWMgSGFuZGxlPFQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oCmluZGV4IGVjODM2NGY5MjI2Ni4uNmU5NDczODRh
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWVJbmxpbmVzLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcENlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDYWxsZWVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVnaXN0ZXJJbmxpbmVzLmg+CiAKQEAg
LTM0LDE3ICszMywxNyBAQCBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnVuY2hlY2tlZFIo
VmlydHVhbFJlZ2lzdGVyIHJlZykKK2lubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjpyKFZpcnR1
YWxSZWdpc3RlciByZWcpCiB7Ci0gICAgQVNTRVJUKCFyZWcuaXNDb25zdGFudCgpKTsKKyAgICBp
ZiAocmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFJl
Z2lzdGVyKj4oJnRoaXMtPmNvZGVCbG9jaygpLT5jb25zdGFudFJlZ2lzdGVyKHJlZykpOwogICAg
IHJldHVybiB0aGlzW3JlZy5vZmZzZXQoKV07CiB9CiAKLUFMV0FZU19JTkxJTkUgVk0mIENhbGxG
cmFtZTo6ZGVwcmVjYXRlZFZNKCkgY29uc3QKK2lubGluZSBSZWdpc3RlciYgQ2FsbEZyYW1lOjp1
bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpCiB7Ci0gICAgSlNDZWxsKiBjYWxsZWUgPSB0
aGlzLT5jYWxsZWUoKS5hc0NlbGwoKTsKLSAgICBBU1NFUlQoY2FsbGVlKTsKLSAgICByZXR1cm4g
Y2FsbGVlLT52bSgpOworICAgIEFTU0VSVCghcmVnLmlzQ29uc3RhbnQoKSk7CisgICAgcmV0dXJu
IHRoaXNbcmVnLm9mZnNldCgpXTsKIH0KIAogaW5saW5lIEpTVmFsdWUgQ2FsbEZyYW1lOjpndWFy
YW50ZWVkSlNWYWx1ZUNhbGxlZSgpIGNvbnN0CkBAIC03Nyw2ICs3NiwxMyBAQCBpbmxpbmUgSlNH
bG9iYWxPYmplY3QqIENhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVjdChWTSYgdm0pIGNvbnN0
CiAgICAgcmV0dXJuIGpzQ2FsbGVlKCktPnJlYWxtKCk7CiB9CiAKK2lubGluZSBKU0NlbGwqIENh
bGxGcmFtZTo6Y29kZU93bmVyQ2VsbCgpIGNvbnN0Cit7CisgICAgaWYgKGNhbGxlZSgpLmlzTmF0
aXZlQ2FsbGVlKCkpCisgICAgICAgIHJldHVybiBjb2RlT3duZXJDZWxsU2xvdygpOworICAgIHJl
dHVybiBjb2RlQmxvY2soKTsKK30KKwogaW5saW5lIGJvb2wgQ2FsbEZyYW1lOjppc1pvbWJpZUZy
YW1lKCkgY29uc3QKIHsKICAgICBpZiAoY2FsbGVlKCkuaXNOYXRpdmVDYWxsZWUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZjk3
NzcxZDkwMmMyLi4yYzIzMzZjYjM0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQnl0ZWNvZGVJbmRleC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGNvZGUuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9UWm9u
ZU1hbGxvYy5oPgpAQCAtMzksMTMgKzQwLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0g
T3Bjb2RlSUQgOiB1bnNpZ25lZDsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQot
dXNpbmcgT3Bjb2RlID0gdm9pZCo7Ci0jZWxzZQotdXNpbmcgT3Bjb2RlID0gT3Bjb2RlSUQ7Ci0j
ZW5kaWYKLQogY2xhc3MgQ2FsbExpbmtJbmZvOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIG5h
bWVzcGFjZSBXYXNtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9SZWdpc3RlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlcklubGluZXMuaAppbmRleCAzOTBhNmQzMDkwMzUuLjAzOTVlYzU0NWM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlcklubGlu
ZXMuaApAQCAtMjUsMTQgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29kZUJsb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU2NvcGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZWdpc3Rlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ29k
ZUJsb2NrOwotCiBBTFdBWVNfSU5MSU5FIENhbGxGcmFtZSogUmVnaXN0ZXI6OmNhbGxGcmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHUuY2FsbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAppbmRleCAxNzhjMzUxZGJjZjIuLmUxMjRiNzc4NTMzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTIwMSw3ICsyMDEs
NiBAQCB2b2lkIGluaXRpYWxpemUoKQogI2VuZGlmCiAKICAgICBzdGF0aWNfYXNzZXJ0KGxsaW50
X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPCBVSU5UOF9NQVgpOwotICAgIHN0YXRp
Y19hc3NlcnQobWF4Qnl0ZWNvZGVTdHJ1Y3RMZW5ndGggKyAxIDw9IENvbmZpZzo6ZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zU2l6ZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heEJ5dGVj
b2RlU3RydWN0TGVuZ3RoICsgMTsgKytpKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCmluZGV4IDQwYzgyMjI3ODE2My4uZDVlZGEzZWNlZTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAj
aW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCi0jaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAppbmRleCAx
NmJlYmU2MWJhMzQuLjRhZmRiMmRmNGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaApAQCAtMjAsMTQgKzIwLDEzIEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QXJyYXlTdG9yYWdlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1dHRlcmZs
eS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1dHRlcmZseUlubGluZXNMaWdodC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0
dXJlLmg+CkBAIC0zNyw2ICszNiwyMCBAQCBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9C
RUdJTgogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0IHR5
cGVuYW1lIENvbnRpZ3VvdXNEYXRhPFQ+OjpEYXRhIENvbnRpZ3VvdXNEYXRhPFQ+OjphdChjb25z
dCBKU0NlbGwqIG93bmVyLCBzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGluZGV4
IDwgbV9sZW5ndGgpOworICAgIHJldHVybiBEYXRhKG1fZGF0YVtpbmRleF0sIG93bmVyLT5pbmRl
eGluZ01vZGUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBDb250aWd1
b3VzRGF0YTxUPjo6RGF0YSBDb250aWd1b3VzRGF0YTxUPjo6YXQoY29uc3QgSlNDZWxsKiBvd25l
ciwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IG1fbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gRGF0YShtX2RhdGFbaW5kZXhdLCBvd25lci0+aW5kZXhpbmdNb2RlKCkpOworfQorCiBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6YXZhaWxhYmxlQ29udGlndW91c1ZlY3Rv
ckxlbmd0aChzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQog
ewogICAgIHNpemVfdCBjZWxsU2l6ZSA9IHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0
cnVlLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogdmVjdG9yTGVuZ3RoKTsKQEAgLTE3OCw3ICsx
OTEsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6Omdyb3dBcnJheVJpZ2h0KAogewog
ICAgIHJldHVybiBncm93QXJyYXlSaWdodCgKICAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIG9s
ZFN0cnVjdHVyZSwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLAotICAgICAgICBv
bGRTdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKGludGVuZGVkT3duZXIpLAorICAgICAgICBv
bGRTdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKGludGVuZGVkT3duZXIpLCAKICAgICAgICAg
aW5kZXhpbmdIZWFkZXIoKS0+aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMob2xkU3RydWN0dXJl
KSwKICAgICAgICAgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lc0xpZ2h0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHlJbmxpbmVzTGlnaHQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA3Yjk1MDE3Yjc5Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lc0xpZ2h0
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMjYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0J1dHRlcmZseS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2Vs
bC5oPgotCi1XVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0IHR5cGVuYW1lIENvbnRpZ3VvdXNE
YXRhPFQ+OjpEYXRhIENvbnRpZ3VvdXNEYXRhPFQ+OjphdChjb25zdCBKU0NlbGwqIG93bmVyLCBz
aXplX3QgaW5kZXgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGluZGV4IDwgbV9sZW5ndGgpOwotICAg
IHJldHVybiBEYXRhKG1fZGF0YVtpbmRleF0sIG93bmVyLT5pbmRleGluZ01vZGUoKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBDb250aWd1b3VzRGF0YTxUPjo6RGF0YSBD
b250aWd1b3VzRGF0YTxUPjo6YXQoY29uc3QgSlNDZWxsKiBvd25lciwgc2l6ZV90IGluZGV4KQot
ewotICAgIEFTU0VSVChpbmRleCA8IG1fbGVuZ3RoKTsKLSAgICByZXR1cm4gRGF0YShtX2RhdGFb
aW5kZXhdLCBvd25lci0+aW5kZXhpbmdNb2RlKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDFiMzIwODIwZGE1Yi4uZTM2
NDFhNmIzOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTQ2VsbEJ1dHRl
cmZseS5oIgotI2luY2x1ZGUgIkpTR2xvYmFsUHJveHkuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJTbG93UGF0aEZ1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHNJbmxpbmVzLmgKaW5kZXggYjFkZWQ2ZWJkOWEwLi41ZDA3
OGVmMzYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNJbmxpbmVzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDbG9u
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKLSNpbmNsdWRlICJKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIkpTU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCmluZGV4IDA0N2MyZWRlMWUyZC4uN2M4ODVhMmQyOWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcu
aApAQCAtMTIyLDMzICsxMjIsNiBAQCBwcml2YXRlOgogICAgIEdlbmVyaWNUeXBlZEFycmF5Vmll
dyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHNpemVfdCBieXRlT2Zmc2V0LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbGVuZ3RoKTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1HZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0ZU9mZnNldCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IGxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhBZGFwdG9yOjp0eXBlVmFsdWUs
IFdURjo6bW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGggPyBzdGQ6Om9wdGlvbmFsIHsg
bGVuZ3RoLnZhbHVlKCkgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkgfSA6IHN0ZDo6
bnVsbG9wdCkKLXsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGlmIChsZW5ndGgpCi0gICAgICAg
IEFTU0VSVCgobGVuZ3RoLnZhbHVlKCkgLyBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
IDwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Ci0jZW5kaWYKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dHJ5Q3JlYXRlKFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBieXRlT2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbGVuZ3RoKQotewotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIEFTU0VSVChsZW5ndGggfHwgYnVmZmVyLT5pc1Jlc2l6YWJsZU9yR3Jvd2FibGVT
aGFyZWQoKSk7Ci0KLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5n
dGgoYnVmZmVyLT5ieXRlTGVuZ3RoKCksIGJ5dGVPZmZzZXQsIGxlbmd0aC52YWx1ZV9vcigwKSwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBpZiAoIXZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9m
KHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEdlbmVyaWNUeXBlZEFycmF5VmlldyhXVEY6Om1vdmUoYnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBX
VEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApp
bmRleCAxZThhMzUzZGUwYzEuLjVjNGQ5MTkxNjc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aApAQCAtMzYsNiArMzYsMTYgQEAgV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECiAK
IG5hbWVzcGFjZSBKU0MgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgorR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBsZW5ndGgpCisgICAgOiBBcnJheUJ1ZmZlclZpZXcoQWRhcHRvcjo6dHlwZVZhbHVlLCBXVEY6
Om1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoID8gc3RkOjpvcHRpb25hbCB7IGxlbmd0
aC52YWx1ZSgpICogc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpIH0gOiBzdGQ6Om51bGxv
cHQpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBpZiAobGVuZ3RoKQorICAgICAgICBBU1NF
UlQoKGxlbmd0aC52YWx1ZSgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKSA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworI2VuZGlmCit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIEFkYXB0b3I+CiBSZWY8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZShzaXplX3QgbGVuZ3RoKQogewpA
QCAtOTEsNiArMTAxLDIzIEBAIFdURl9BTExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0VORAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OnRyeUNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCBzaXplX3QgYnl0
ZU9mZnNldCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkKK3sKKyAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQobGVuZ3RoIHx8IGJ1ZmZl
ci0+aXNSZXNpemFibGVPckdyb3dhYmxlU2hhcmVkKCkpOworCisgICAgaWYgKCFBcnJheUJ1ZmZl
clZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpLCBieXRlT2Zm
c2V0LCBsZW5ndGgudmFsdWVfb3IoMCksIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCF2ZXJpZnlCeXRlT2Zmc2V0QWxp
Z25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmljVHlw
ZWRBcnJheVZpZXcoV1RGOjptb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkpOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp3cmFwcGVkQXMoUmVm
PEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IGJ5dGVPZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBsZW5ndGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbmRleGluZ1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmNwcAppbmRleCBkNjYzOWM5ZWM4MjIuLjNhOWUxM2NlNDg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpbmNsdWRlICJJbmRleGluZ1R5cGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ1R5cGUu
aAppbmRleCBjNzc2OTM1ODg3MTIuLjg3NGU3NjMxNzU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdUeXBlLmgKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TcGVjdWxhdGVkVHlwZS5oPgogI2luY2x1ZGUgPGNzdGRpbnQ+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IEpTVmFsdWU7Ci0KIC8qCiAgICAgU3RydWN0dXJlIG9mIHRoZSBJbmRleGluZ1R5cGUKICAgICA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjE3LDYgKzIxNiw4IEBAIGlubGluZSBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlRm9yVmFsdWUoSlNWYWx1ZSk7IC8vIERlZmluZWQgaW4g
SW5kZXhpbmdUeXBlSW5sCiAvLyBSZXR1cm4gYW4gaW5kZXhpbmcgdHlwZSB0aGF0IGNhbiBoYW5k
bGUgYWxsIG9mIHRoZSBlbGVtZW50cyBvZiBib3RoIGluZGV4aW5nIHR5cGVzLgogSW5kZXhpbmdU
eXBlIGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdUeXBlcyhJbmRleGluZ1R5cGUsIEluZGV4aW5n
VHlwZSk7CiAKK2Jvb2wgTk9ERUxFVEUgaXNQcm92ZW5WYWxpZFR5cGVGb3JJbmRleGluZ1NoYXBl
U3RvcmFnZShJbmRleGluZ1R5cGUsIFNwZWN1bGF0ZWRUeXBlKTsKK0luZGV4aW5nVHlwZSBOT0RF
TEVURSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZUFuZFR5cGVGb3JTcGVjdWxhdGlvbihJ
bmRleGluZ1R5cGUsIFNwZWN1bGF0ZWRUeXBlKTsKIEluZGV4aW5nVHlwZSBsZWFzdFVwcGVyQm91
bmRPZkluZGV4aW5nVHlwZUFuZFZhbHVlKEluZGV4aW5nVHlwZSwgSlNWYWx1ZSk7CiAKIHZvaWQg
ZHVtcEluZGV4aW5nVHlwZShQcmludFN0cmVhbSYsIEluZGV4aW5nVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5l
cy5oCmluZGV4IGI0NjczNDk4ZTkxYy4uNTBkYzkwYTAyOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApA
QCAtMzEsNyArMzEsNiBAQCBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNBcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXNMaWdodC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGF0YVZpZXcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5VHlw
ZS5oPgogCkBAIC0zOSw2ICszOCwxMDAgQEAgV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0Vf
RU5ECiAKIG5hbWVzcGFjZSBKU0MgewogCitpbmxpbmUgYm9vbCBKU0FycmF5QnVmZmVyVmlldzo6
aXNTaGFyZWQoKQoreworICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgY2FzZSBXYXN0ZWZ1bFR5
cGVkQXJyYXk6CisgICAgY2FzZSBSZXNpemFibGVOb25TaGFyZWRXYXN0ZWZ1bFR5cGVkQXJyYXk6
CisgICAgY2FzZSBSZXNpemFibGVOb25TaGFyZWRBdXRvTGVuZ3RoV2FzdGVmdWxUeXBlZEFycmF5
OgorICAgIGNhc2UgR3Jvd2FibGVTaGFyZWRXYXN0ZWZ1bFR5cGVkQXJyYXk6CisgICAgY2FzZSBH
cm93YWJsZVNoYXJlZEF1dG9MZW5ndGhXYXN0ZWZ1bFR5cGVkQXJyYXk6CisgICAgICAgIHJldHVy
biBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCktPmlzU2hhcmVkKCk7CisgICAgY2FzZSBEYXRh
Vmlld01vZGU6CisgICAgY2FzZSBSZXNpemFibGVOb25TaGFyZWREYXRhVmlld01vZGU6CisgICAg
Y2FzZSBSZXNpemFibGVOb25TaGFyZWRBdXRvTGVuZ3RoRGF0YVZpZXdNb2RlOgorICAgIGNhc2Ug
R3Jvd2FibGVTaGFyZWREYXRhVmlld01vZGU6CisgICAgY2FzZSBHcm93YWJsZVNoYXJlZEF1dG9M
ZW5ndGhEYXRhVmlld01vZGU6CisgICAgICAgIHJldHVybiB1bmNoZWNrZWREb3duY2FzdDxKU0Rh
dGFWaWV3Pih0aGlzKS0+cG9zc2libHlTaGFyZWRCdWZmZXIoKS0+aXNTaGFyZWQoKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit0ZW1wbGF0ZTxKU0Fy
cmF5QnVmZmVyVmlldzo6UmVxdWVzdGVyIHJlcXVlc3Rlcj4KK2lubGluZSBBcnJheUJ1ZmZlciog
SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkQnVmZmVySW1wbCgpCit7CisgICAgaWYg
KHJlcXVlc3RlciA9PSBDb25jdXJyZW50VGhyZWFkKQorICAgICAgICBBU1NFUlQobV9tb2RlICE9
IEZhc3RUeXBlZEFycmF5ICYmIG1fbW9kZSAhPSBPdmVyc2l6ZVR5cGVkQXJyYXkpOworCisgICAg
c3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNlIFdhc3RlZnVsVHlwZWRBcnJheToKKyAgICBjYXNl
IFJlc2l6YWJsZU5vblNoYXJlZFdhc3RlZnVsVHlwZWRBcnJheToKKyAgICBjYXNlIFJlc2l6YWJs
ZU5vblNoYXJlZEF1dG9MZW5ndGhXYXN0ZWZ1bFR5cGVkQXJyYXk6CisgICAgY2FzZSBHcm93YWJs
ZVNoYXJlZFdhc3RlZnVsVHlwZWRBcnJheToKKyAgICBjYXNlIEdyb3dhYmxlU2hhcmVkQXV0b0xl
bmd0aFdhc3RlZnVsVHlwZWRBcnJheToKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnVmZmVySW5C
dXR0ZXJmbHkoKTsKKyAgICBjYXNlIERhdGFWaWV3TW9kZToKKyAgICBjYXNlIFJlc2l6YWJsZU5v
blNoYXJlZERhdGFWaWV3TW9kZToKKyAgICBjYXNlIFJlc2l6YWJsZU5vblNoYXJlZEF1dG9MZW5n
dGhEYXRhVmlld01vZGU6CisgICAgY2FzZSBHcm93YWJsZVNoYXJlZERhdGFWaWV3TW9kZToKKyAg
ICBjYXNlIEdyb3dhYmxlU2hhcmVkQXV0b0xlbmd0aERhdGFWaWV3TW9kZToKKyAgICAgICAgcmV0
dXJuIHVuY2hlY2tlZERvd25jYXN0PEpTRGF0YVZpZXc+KHRoaXMpLT5wb3NzaWJseVNoYXJlZEJ1
ZmZlcigpOworICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6CisgICAgY2FzZSBPdmVyc2l6ZVR5cGVk
QXJyYXk6CisgICAgICAgIHJldHVybiBzbG93RG93bkFuZFdhc3RlTWVtb3J5KCk7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitpbmxp
bmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEJ1ZmZlcigp
Cit7CisgICAgcmV0dXJuIHBvc3NpYmx5U2hhcmVkQnVmZmVySW1wbDxNdXRhdG9yPigpOworfQor
CitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnVuc2hh
cmVkSW1wbCgpCit7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcmVzdWx0ID0gcG9zc2li
bHlTaGFyZWRJbXBsKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCB8fCAhcmVzdWx0LT5p
c1NoYXJlZCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZChWTSYsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gZHluYW1pY0Rvd25jYXN0
PEpTQXJyYXlCdWZmZXJWaWV3Pih2YWx1ZSkpIHsKKyAgICAgICAgaWYgKCF2aWV3LT5pc1NoYXJl
ZCgpICYmICF2aWV3LT5pc1Jlc2l6YWJsZU9yR3Jvd2FibGVTaGFyZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiB2aWV3LT51bnNoYXJlZEltcGwoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6
dG9XcmFwcGVkQWxsb3dSZXNpemFibGUoVk0mLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IGR5bmFtaWNEb3duY2FzdDxKU0FycmF5QnVmZmVyVmll
dz4odmFsdWUpKSB7CisgICAgICAgIGlmICh2aWV3LT5pc1NoYXJlZCgpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiB2aWV3LT51bnNoYXJlZEltcGwoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkQWxsb3dTaGFyZWQoVk0mLCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGR5bmFtaWNEb3du
Y2FzdDxKU0FycmF5QnVmZmVyVmlldz4odmFsdWUpKSB7CisgICAgICAgIGlmICghdmlldy0+aXNS
ZXNpemFibGVPckdyb3dhYmxlU2hhcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gdmlldy0+cG9z
c2libHlTaGFyZWRJbXBsKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitpbmxp
bmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnRvV3JhcHBlZEFs
bG93U2hhcmVkQW5kUmVzaXphYmxlKFZNJiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoSlNB
cnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBkeW5hbWljRG93bmNhc3Q8SlNBcnJheUJ1ZmZlclZpZXc+
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZpZXctPnBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCiBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJ
TgogCiBpbmxpbmUgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6cmVmcmVzaFZlY3Rvcih2b2lkKiBu
ZXdEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXdJbmxpbmVzTGlnaHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lc0xpZ2h0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM1MmMzMTRiZWVjNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lc0xpZ2h0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDI2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
cnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5QnVmZmVy
Vmlldy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXcuaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWlubGluZSBib29sIEpTQXJyYXlCdWZmZXJWaWV3Ojppc1NoYXJlZCgpCi17
Ci0gICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIFdhc3RlZnVsVHlwZWRBcnJheToKLSAg
ICBjYXNlIFJlc2l6YWJsZU5vblNoYXJlZFdhc3RlZnVsVHlwZWRBcnJheToKLSAgICBjYXNlIFJl
c2l6YWJsZU5vblNoYXJlZEF1dG9MZW5ndGhXYXN0ZWZ1bFR5cGVkQXJyYXk6Ci0gICAgY2FzZSBH
cm93YWJsZVNoYXJlZFdhc3RlZnVsVHlwZWRBcnJheToKLSAgICBjYXNlIEdyb3dhYmxlU2hhcmVk
QXV0b0xlbmd0aFdhc3RlZnVsVHlwZWRBcnJheToKLSAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnVm
ZmVySW5CdXR0ZXJmbHkoKS0+aXNTaGFyZWQoKTsKLSAgICBjYXNlIERhdGFWaWV3TW9kZToKLSAg
ICBjYXNlIFJlc2l6YWJsZU5vblNoYXJlZERhdGFWaWV3TW9kZToKLSAgICBjYXNlIFJlc2l6YWJs
ZU5vblNoYXJlZEF1dG9MZW5ndGhEYXRhVmlld01vZGU6Ci0gICAgY2FzZSBHcm93YWJsZVNoYXJl
ZERhdGFWaWV3TW9kZToKLSAgICBjYXNlIEdyb3dhYmxlU2hhcmVkQXV0b0xlbmd0aERhdGFWaWV3
TW9kZToKLSAgICAgICAgcmV0dXJuIHVuY2hlY2tlZERvd25jYXN0PEpTRGF0YVZpZXc+KHRoaXMp
LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLT5pc1NoYXJlZCgpOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPEpTQXJyYXlCdWZmZXJWaWV3
OjpSZXF1ZXN0ZXIgcmVxdWVzdGVyPgotaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVy
Vmlldzo6cG9zc2libHlTaGFyZWRCdWZmZXJJbXBsKCkKLXsKLSAgICBpZiAocmVxdWVzdGVyID09
IENvbmN1cnJlbnRUaHJlYWQpCi0gICAgICAgIEFTU0VSVChtX21vZGUgIT0gRmFzdFR5cGVkQXJy
YXkgJiYgbV9tb2RlICE9IE92ZXJzaXplVHlwZWRBcnJheSk7Ci0KLSAgICBzd2l0Y2ggKG1fbW9k
ZSkgewotICAgIGNhc2UgV2FzdGVmdWxUeXBlZEFycmF5OgotICAgIGNhc2UgUmVzaXphYmxlTm9u
U2hhcmVkV2FzdGVmdWxUeXBlZEFycmF5OgotICAgIGNhc2UgUmVzaXphYmxlTm9uU2hhcmVkQXV0
b0xlbmd0aFdhc3RlZnVsVHlwZWRBcnJheToKLSAgICBjYXNlIEdyb3dhYmxlU2hhcmVkV2FzdGVm
dWxUeXBlZEFycmF5OgotICAgIGNhc2UgR3Jvd2FibGVTaGFyZWRBdXRvTGVuZ3RoV2FzdGVmdWxU
eXBlZEFycmF5OgotICAgICAgICByZXR1cm4gZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpOwot
ICAgIGNhc2UgRGF0YVZpZXdNb2RlOgotICAgIGNhc2UgUmVzaXphYmxlTm9uU2hhcmVkRGF0YVZp
ZXdNb2RlOgotICAgIGNhc2UgUmVzaXphYmxlTm9uU2hhcmVkQXV0b0xlbmd0aERhdGFWaWV3TW9k
ZToKLSAgICBjYXNlIEdyb3dhYmxlU2hhcmVkRGF0YVZpZXdNb2RlOgotICAgIGNhc2UgR3Jvd2Fi
bGVTaGFyZWRBdXRvTGVuZ3RoRGF0YVZpZXdNb2RlOgotICAgICAgICByZXR1cm4gdW5jaGVja2Vk
RG93bmNhc3Q8SlNEYXRhVmlldz4odGhpcyktPnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0gICAg
Y2FzZSBGYXN0VHlwZWRBcnJheToKLSAgICBjYXNlIE92ZXJzaXplVHlwZWRBcnJheToKLSAgICAg
ICAgcmV0dXJuIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKTsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWlubGluZSBBcnJheUJ1ZmZl
ciogSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkKLXsKLSAgICByZXR1
cm4gcG9zc2libHlTaGFyZWRCdWZmZXJJbXBsPE11dGF0b3I+KCk7Ci19Ci0KLWlubGluZSBSZWZQ
dHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dW5zaGFyZWRJbXBsKCkKLXsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZEltcGwo
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0IHx8ICFyZXN1bHQtPmlzU2hhcmVkKCkpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBK
U0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBp
ZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBkeW5hbWljRG93bmNhc3Q8SlNBcnJheUJ1ZmZl
clZpZXc+KHZhbHVlKSkgewotICAgICAgICBpZiAoIXZpZXctPmlzU2hhcmVkKCkgJiYgIXZpZXct
PmlzUmVzaXphYmxlT3JHcm93YWJsZVNoYXJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHZpZXct
PnVuc2hhcmVkSW1wbCgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotaW5saW5l
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxv
d1Jlc2l6YWJsZShWTSYsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKEpTQXJyYXlCdWZmZXJW
aWV3KiB2aWV3ID0gZHluYW1pY0Rvd25jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Pih2YWx1ZSkpIHsK
LSAgICAgICAgaWYgKHZpZXctPmlzU2hhcmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIHZpZXctPnVuc2hhcmVkSW1wbCgpOwotICAgIH0KLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQotaW5saW5lIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlC
dWZmZXJWaWV3Ojp0b1dyYXBwZWRBbGxvd1NoYXJlZChWTSYsIEpTVmFsdWUgdmFsdWUpCi17Ci0g
ICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gZHluYW1pY0Rvd25jYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Pih2YWx1ZSkpIHsKLSAgICAgICAgaWYgKCF2aWV3LT5pc1Jlc2l6YWJsZU9yR3Jv
d2FibGVTaGFyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2aWV3LT5wb3NzaWJseVNoYXJlZElt
cGwoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWlubGluZSBSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6dG9XcmFwcGVkQWxsb3dTaGFyZWRBbmRS
ZXNpemFibGUoVk0mLCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChKU0FycmF5QnVmZmVyVmll
dyogdmlldyA9IGR5bmFtaWNEb3duY2FzdDxKU0FycmF5QnVmZmVyVmlldz4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gdmlldy0+cG9zc2libHlTaGFyZWRJbXBsKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaAppbmRleCA0Nzk1OGMwOGMwYzcuLjA5ZDFmY2Y2ODUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2F0ZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09wY29kZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlv
bnNMaXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2VjdXJlQVJNNjRFSGFzaFBpbnMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdG9wVGhlV29ybGRDYWxsYmFjay5oPgpAQCAt
MTExLDkgKzExMiw4IEBAIHN0cnVjdCBDb25maWcgewogICAgIFBvc3RSZXN1bWVDYWxsYmFjayBK
U0NfQ09ORklHX01FVEhPRCh3YXNtRGVidWdnZXJPblJlc3VtZSk7CiAgICAgU3RvcFRoZVdvcmxk
Q2FsbGJhY2sgSlNDX0NPTkZJR19NRVRIT0QobWVtb3J5RGVidWdnZXJTdG9wVGhlV29ybGQpOwog
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBleGNlcHRpb25JbnN0cnVjdGlvbnNTaXpl
ID0gNjQ7CiAgICAgc3RydWN0IHsKLSAgICAgICAgdWludDhfdCBleGNlcHRpb25JbnN0cnVjdGlv
bnNbZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zU2l6ZV07CisgICAgICAgIHVpbnQ4X3QgZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW21heEJ5dGVjb2RlU3RydWN0TGVuZ3RoICsgMV07CiAgICAgICAgIGNvbnN0
IHZvaWQqIGdhdGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggZDYw
MDE4ZDhiMWFhLi5kYWRiMmEwM2FlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMzUsNyArMzUsNiBAQCBXVEZfQUxMT1df
VU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlQmlnSW50Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZVByb3BlcnR5SW5saW5lcy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJv
d1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZVByb3BlcnR5SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZVByb3BlcnR5SW5saW5lcy5oCmlu
ZGV4IDA1ODliNWFhZWE5My4uYzg3NDNhY2Q1NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlUHJvcGVydHlJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZVByb3BlcnR5SW5saW5lcy5oCkBAIC0z
MSwxMSArMzEsMTAgQEAKIC8vIChKU1N0cmluZ0lubGluZXMuaCwgSlNDZWxsSW5saW5lcy5oLCBK
U0JpZ0ludC5oLCBldGMuKS4KIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbkhl
bHBlcnMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXRWTS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVDZWxsLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N5bWJvbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDE5ODQzMmIyZGJjZC4u
ZmY2MmRjNzE1NGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCkBAIC0xNDYsNiArMTQ2LDEzIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHNJbXBsKEpTQ2VsbCosIFZpc2l0b3ImKQogCiBERUZJTkVf
VklTSVRfT1VUUFVUX0NPTlNUUkFJTlRTX1dJVEhfTU9ESUZJRVIoaW5saW5lLCBKU0NlbGwpOwog
CitBTFdBWVNfSU5MSU5FIFZNJiBDYWxsRnJhbWU6OmRlcHJlY2F0ZWRWTSgpIGNvbnN0Cit7Cisg
ICAgSlNDZWxsKiBjYWxsZWUgPSB0aGlzLT5jYWxsZWUoKS5hc0NlbGwoKTsKKyAgICBBU1NFUlQo
Y2FsbGVlKTsKKyAgICByZXR1cm4gY2FsbGVlLT52bSgpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgogaW5saW5lIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHkoVk0mIHZt
LCBzaXplX3QgYWxsb2NhdGlvblNpemUsIEFsbG9jYXRvckZvck1vZGUgbW9kZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCmluZGV4IGJjODgyMDEwMDI5ZS4uNGZhMDIwMjJlNzMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBA
IC05OCwxMCArOTgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
dHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFk
YXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpOwotCisgICAgCiAgICAgaW5saW5lIHNpemVfdCBieXRl
TGVuZ3RoKCkgY29uc3Q7CiAgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoUmF3KCkgY29uc3Q7
Ci0KKyAgICAKICAgICBpbmxpbmUgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRW
ZWN0b3IoKSBjb25zdDsKICAgICBpbmxpbmUgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRW
ZWN0b3IoKTsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgU29ydFJl
c3VsdCBzb3J0KCk7CiAKICAgICBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NSYW5nZVF1aWNrbHkoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7Ci0KKyAgICAKICAgICAvLyBMaWtlIGNhblNldFF1
aWNrbHksIGV4Y2VwdDogaWYgaXQgcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB0aHJvdyB0aGUKICAg
ICAvLyBhcHByb3ByaWF0ZSBleGNlcHRpb24uCiAgICAgYm9vbCB2YWxpZGF0ZVJhbmdlKEpTR2xv
YmFsT2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCk7CkBAIC0xMzcsMTcgKzEz
NywxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRGcm9tVHlwZWRBcnJheShKU0dsb2JhbE9iamVj
dCosIHNpemVfdCBvZmZzZXQsIEpTQXJyYXlCdWZmZXJWaWV3Kiwgc2l6ZV90IG9iamVjdE9mZnNl
dCwgc2l6ZV90IGxlbmd0aCwgQ29weVR5cGUpOwogICAgIGJvb2wgc2V0RnJvbUFycmF5TGlrZShK
U0dsb2JhbE9iamVjdCosIHNpemVfdCBvZmZzZXQsIEpTT2JqZWN0Kiwgc2l6ZV90IG9iamVjdE9m
ZnNldCwgc2l6ZV90IGxlbmd0aCk7CiAgICAgYm9vbCBzZXRGcm9tQXJyYXlMaWtlKEpTR2xvYmFs
T2JqZWN0Kiwgc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSBzb3VyY2UpOwotCisgICAgCiAgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgp
OwogICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZElt
cGwoKTsKIAogICAgIHN0YXRpYyBpbmxpbmUgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQorICAgIAogICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOyAvLyBUaGlzIGlzIG5ldmVyIGFjY2Vzc2VkIGRpcmVj
dGx5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmthZ2Ugb24gc29tZSBjb21waWxlcnMuCiAg
ICAgc3RhdGljIGlubGluZSBjb25zdCBDbGFzc0luZm8qIGluZm8oKTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgaW5saW5lIEdD
Q2xpZW50OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mKTsKLQorICAgIAogICAgIEFycmF5
QnVmZmVyKiBleGlzdGluZ0J1ZmZlcigpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlZEFy
cmF5VHlwZSBUeXBlZEFycmF5U3RvcmFnZVR5cGUgPSBBZGFwdG9yOjp0eXBlVmFsdWU7CkBAIC0x
NzgsNyArMTc4LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKLQorICAgIAogICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5QnVpbGRlciYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwog
CiAgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDcwYzM0OWQwYTVhZi4uYjQxMDM0NTY5YTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCiAjcHJhZ21hIG9uY2UKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXNMaWdodC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rv
TmF0aXZlRnJvbVZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZUVycm9yLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KQEAgLTE3Miw3ICsxNzEs
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJhbmdl
KAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoY2Fu
QWNjZXNzUmFuZ2VRdWlja2x5KG9mZnNldCwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KKyAgICAKICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIlJhbmdlIGNvbnNpc3Rpbmcgb2Ygb2Zmc2V0IGFuZCBs
ZW5ndGggYXJlIG91dCBvZiBib3VuZHMiX3MpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0y
MDQsNyArMjAzLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNvbnRlbnQgdHlwZXMgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiB0eXBlZCBhcnJh
eXMgYXJlIGRpZmZlcmVudCJfcyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAg
ICAKICAgICAvLyBUaGlzIG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgY29weWluZyBiZXR3ZWVuIHRo
ZSBzYW1lIGFycmF5LiBOb3RlIHRoYXQKICAgICAvLyBzZXQoKSB3aWxsIG9ubHkgY2FsbCB0aGlz
IGlmIHRoZSB0eXBlcyBkaWZmZXIsIHdoaWNoIGltcGxpY2l0bHkgZ3VhcmFudGVlcwogICAgIC8v
IHRoYXQgd2UgY2FuJ3QgYmUgdGhlIHNhbWUgYXJyYXkuIFRoaXMgaXMgcmVsZXZhbnQgYmVjYXVz
ZSB0aGUgd2F5IHdlIGRldGVjdApAQCAtMjEzLDcgKzIxMiw3IEBAIGJvb2wgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldFdpdGhTcGVjaWZpY1R5cGUoCiAgICAgLy8gY2F0Y2gg
dGhlIGNhc2Ugd2hlcmUgaXQncyB0aGUgKnNhbWUqIGFycmF5IC0gZm9ydHVuYXRlbHkgdGhvdWdo
LCB0aGlzIGNvZGUKICAgICAvLyBwYXRoIG5ldmVyIG5lZWRzIHRvIHdvcnJ5IGFib3V0IHRoYXQg
Y2FzZS4KICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8SlNDZWxsKj4odGhpcykgIT0gc3RhdGljX2Nh
c3Q8SlNDZWxsKj4ob3RoZXIpKTsKLQorICAgIAogICAgIC8vIDEpIElmIHRoZSB0d28gYXJyYXlz
IGFyZSBub24tb3ZlcmxhcHBpbmcsIHdlIGNhbiBjb3B5IGluIGFueSBvcmRlciB3ZSBsaWtlCiAg
ICAgLy8gICAgYW5kIHdlIGRvbid0IG5lZWQgYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlci4gQXJyYXlz
IGFyZSBkZWZpbml0ZWx5CiAgICAgLy8gICAgbm9uLW92ZXJsYXBwaW5nIGlmIGVpdGhlciBvbmUg
b2YgdGhlbSBoYXMgbm8gYmFja2luZyBidWZmZXIgKHRoYXQgbWVhbnMKQEAgLTIyOCw3ICsyMjcs
NyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lm
aWNUeXBlKAogICAgIC8vICAgICAgIGNvcHkgaXMgaW4gb3JkZXIuCiAgICAgLy8gMykgSWYgd2Ug
aGF2ZSBkaWZmZXJlbnQgZWxlbWVudCBzaXplcyBhbmQgdGhlcmUgaXMgYSBjaGFuY2Ugb2Ygb3Zl
cmxhcCB0aGVuCiAgICAgLy8gICAgd2UgbmVlZCBhbiBpbnRlcm1lZGlhdGUgdmVjdG9yLgotCisg
ICAgCiAgICAgLy8gTkIuIENvbXBhcmlzb25zIGludm9sdmluZyBlbGVtZW50U2l6ZSB3aWxsIGJl
IGNvbnN0YW50LWZvbGRlZCBieSB0ZW1wbGF0ZQogICAgIC8vIHNwZWNpYWxpemF0aW9uLgogCkBA
IC0yNTYsNyArMjU1LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0KKyAgICAKICAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB0cmFuc2Zl
ciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgogICAgIGF1dG8gdHJhbnNmZXIgPSBbJl0gKGF1dG8m
IGJ1ZmZlcikgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gbGVuZ3RoOyBpLS07KSB7CkBAIC01
MTMsNiArNTEyLDM0IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNl
dEZyb21BcnJheUxpa2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIHN1Y2Nl
c3M7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CitSZWZQdHI8dHlwZW5hbWUgQWRh
cHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJs
eVNoYXJlZFR5cGVkSW1wbCgpCit7CisgICAgcmV0dXJuIEFkYXB0b3I6OlZpZXdUeXBlOjp0cnlD
cmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9mZnNldFJhdygpLCBpc0F1dG9MZW5n
dGgoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWwgeyBsZW5ndGhSYXcoKSB9KTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KK1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpW
aWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJ
bXBsKCkKK3sKKyAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OnRyeUNyZWF0ZSh1bnNoYXJl
ZEJ1ZmZlcigpLCBieXRlT2Zmc2V0UmF3KCksIGlzQXV0b0xlbmd0aCgpID8gc3RkOjpudWxsb3B0
IDogc3RkOjpvcHRpb25hbCB7IGxlbmd0aFJhdygpIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPiBpbmxpbmUgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB0b1Bv
c3NpYmx5U2hhcmVkTmF0aXZlVHlwZWRWaWV3KFZNJiwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBh
dXRvKiB3cmFwcGVyID0gZHluYW1pY0Rvd25jYXN0PHR5cGVuYW1lIEFkYXB0b3I6OkpTVmlld1R5
cGU+KHZhbHVlKTsKKyAgICBpZiAoIXdyYXBwZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiB3cmFwcGVyLT5wb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPiBpbmxpbmUgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiB0b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IHRvUG9zc2libHlTaGFyZWROYXRpdmVUeXBlZFZpZXc8QWRh
cHRvcj4odm0sIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQtPmlzU2hhcmVkKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBBcnJheUJ1ZmZlciogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmV4aXN0aW5nQnVmZmVyKCkKIHsKQEAgLTY3OCw3ICs3MDUsNyBAQCB2b2lk
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKAog
ICAgICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICBhcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSkpOwogICAgIH0KLQorICAgIAogICAg
IHRoaXNPYmplY3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhnbG9iYWxPYmplY3QsIGFy
cmF5LCBtb2RlKTsKIH0KIApAQCAtNzA2LDMzICs3MzMsMzMgQEAgdm9pZCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNp
dG9yJgogICAgIFR5cGVkQXJyYXlNb2RlIG1vZGU7CiAgICAgdm9pZCogdmVjdG9yOwogICAgIHNp
emVfdCBieXRlU2l6ZTsKLQorICAgIAogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRo
aXNPYmplY3QtPmNlbGxMb2NrKCkgfTsKICAgICAgICAgbW9kZSA9IHRoaXNPYmplY3QtPm1fbW9k
ZTsKICAgICAgICAgdmVjdG9yID0gdGhpc09iamVjdC0+dmVjdG9yKCk7CiAgICAgICAgIGJ5dGVT
aXplID0gdGhpc09iamVjdC0+Ynl0ZUxlbmd0aFJhdygpOwogICAgIH0KLQorICAgIAogICAgIHN3
aXRjaCAobW9kZSkgewogICAgIGNhc2UgRmFzdFR5cGVkQXJyYXk6IHsKICAgICAgICAgaWYgKHZl
Y3RvcikKICAgICAgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh2ZWN0b3IpOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0KKyAgICAgICAgCiAgICAgY2FzZSBPdmVyc2l6ZVR5cGVkQXJyYXk6
IHsKICAgICAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoYnl0ZVNpemUpOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0KKyAgICAgICAgCiAgICAgY2FzZSBXYXN0ZWZ1bFR5cGVk
QXJyYXk6CiAgICAgY2FzZSBSZXNpemFibGVOb25TaGFyZWRXYXN0ZWZ1bFR5cGVkQXJyYXk6CiAg
ICAgY2FzZSBSZXNpemFibGVOb25TaGFyZWRBdXRvTGVuZ3RoV2FzdGVmdWxUeXBlZEFycmF5Ogog
ICAgIGNhc2UgR3Jvd2FibGVTaGFyZWRXYXN0ZWZ1bFR5cGVkQXJyYXk6CiAgICAgY2FzZSBHcm93
YWJsZVNoYXJlZEF1dG9MZW5ndGhXYXN0ZWZ1bFR5cGVkQXJyYXk6CiAgICAgICAgIGJyZWFrOwot
CisgICAgICAgIAogICAgIGNhc2UgRGF0YVZpZXdNb2RlOgogICAgIGNhc2UgUmVzaXphYmxlTm9u
U2hhcmVkRGF0YVZpZXdNb2RlOgogICAgIGNhc2UgUmVzaXphYmxlTm9uU2hhcmVkQXV0b0xlbmd0
aERhdGFWaWV3TW9kZToKQEAgLTkwMCw2ICs5MjcsMTggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4gaW5saW5lIFN0cnVjdHVyZSogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmMKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyh0eXBlRm9yVHlwZWRBcnJheVR5cGUoQWRhcHRvcjo6dHlwZVZhbHVlKSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4gaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmluZm8oKQoreworI2RlZmluZSBKU0NfR0VUX0NMQVNTX0lORk8odHlwZSkg
Y2FzZSBUeXBlIyN0eXBlOiByZXR1cm4gZ2V0IyN0eXBlIyNBcnJheUNsYXNzSW5mbygpOworICAg
IHN3aXRjaCAoQWRhcHRvcjo6dHlwZVZhbHVlKSB7CisgICAgICAgIEZPUl9FQUNIX1RZUEVEX0FS
UkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhKU0NfR0VUX0NMQVNTX0lORk8pCisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorI3VuZGVmIEpTQ19HRVRfQ0xBU1NfSU5GTworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBBZGFwdG9yPiB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3Mg
YWNjZXNzPgogaW5saW5lIEdDQ2xpZW50OjpJc29TdWJzcGFjZSogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnN1YnNwYWNlRm9yKFZNJiB2bSkKIHsKQEAgLTk1NSw2ICs5OTQsNDUg
QEAgaW5saW5lIHZvaWQgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNvcnRGbG9h
dChFbGVtZW50VHlwZSogYmVnaW4sIEVsZW0KICAgICB9KTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4gUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IEpTQzo6dG9VbnNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFw
dG9yPih2bSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+aXNSZXNpemFibGVP
ckdyb3dhYmxlU2hhcmVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IFJlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3Jh
cHBlZEFsbG93UmVzaXphYmxlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
SlNDOjp0b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3PEFkYXB0b3I+KHZtLCB2YWx1ZSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZEFsbG93U2hh
cmVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IEpTQzo6dG9Q
b3NzaWJseVNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOworICAgIGlm
ICghcmVzdWx0IHx8IHJlc3VsdC0+aXNSZXNpemFibGVPckdyb3dhYmxlU2hhcmVkKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZEFsbG93U2hhcmVkQW5kUmVzaXph
YmxlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNDOjp0b1Bvc3NpYmx5
U2hhcmVkTmF0aXZlVHlwZWRWaWV3PEFkYXB0b3I+KHZtLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFBhc3NlZEFkYXB0b3I+IGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTR2VuZXJp
Y1Jlc2l6YWJsZU9yR3Jvd2FibGVTaGFyZWRUeXBlZEFycmF5VmlldzxQYXNzZWRBZGFwdG9yPjo6
aW5mbygpCit7CisgICAgc3dpdGNoIChCYXNlOjpBZGFwdG9yOjp0eXBlVmFsdWUpIHsKKyNkZWZp
bmUgSlNDX0dFVF9DTEFTU19JTkZPKHR5cGUpIFwKKyAgICBjYXNlIFR5cGUjI3R5cGU6IHJldHVy
biBnZXRSZXNpemFibGVPckdyb3dhYmxlU2hhcmVkIyN0eXBlIyNBcnJheUNsYXNzSW5mbygpOwor
ICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRBX1ZJRVcoSlND
X0dFVF9DTEFTU19JTkZPKQorI3VuZGVmIEpTQ19HRVRfQ0xBU1NfSU5GTworICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgUGFzc2VkQWRhcHRvcj4gaW5s
aW5lIFN0cnVjdHVyZSogSlNHZW5lcmljUmVzaXphYmxlT3JHcm93YWJsZVNoYXJlZFR5cGVkQXJy
YXlWaWV3PFBhc3NlZEFkYXB0b3I+OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyh0eXBl
Rm9yVHlwZWRBcnJheVR5cGUoQmFzZTo6QWRhcHRvcjo6dHlwZVZhbHVlKSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIE5vbkFycmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc0xpZ2h0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNMaWdo
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWZlZjI5MTM3YTcuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXNMaWdodC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVz
TGlnaHQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCkKLXsKLSAgICByZXR1cm4gQWRhcHRv
cjo6Vmlld1R5cGU6OnRyeUNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0
UmF3KCksIGlzQXV0b0xlbmd0aCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbCB7IGxl
bmd0aFJhdygpIH0pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUmVmUHRyPHR5
cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6dW5zaGFyZWRUeXBlZEltcGwoKQotewotICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6
dHJ5Q3JlYXRlKHVuc2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXRSYXcoKSwgaXNBdXRvTGVuZ3Ro
KCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsIHsgbGVuZ3RoUmF3KCkgfSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IGlubGluZSBSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IHRvUG9zc2libHlTaGFyZWROYXRpdmVUeXBlZFZpZXcoVk0mLCBKU1ZhbHVl
IHZhbHVlKQotewotICAgIGF1dG8qIHdyYXBwZXIgPSBkeW5hbWljRG93bmNhc3Q8dHlwZW5hbWUg
QWRhcHRvcjo6SlNWaWV3VHlwZT4odmFsdWUpOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHdyYXBwZXItPnBvc3NpYmx5U2hhcmVkVHlwZWRJ
bXBsKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IGlubGluZSBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHRvVW5zaGFyZWROYXRpdmVUeXBlZFZpZXcoVk0mIHZt
LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGF1dG8gcmVzdWx0ID0gdG9Qb3NzaWJseVNoYXJlZE5h
dGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwotICAgIGlmICghcmVzdWx0IHx8IHJl
c3VsdC0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4gUmVmUHRyPHR5cGVuYW1lIEFk
YXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dG9XcmFw
cGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6dG9V
bnNoYXJlZE5hdGl2ZVR5cGVkVmlldzxBZGFwdG9yPih2bSwgdmFsdWUpOwotICAgIGlmICghcmVz
dWx0IHx8IHJlc3VsdC0+aXNSZXNpemFibGVPckdyb3dhYmxlU2hhcmVkKCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+IFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnRvV3JhcHBlZEFsbG93UmVzaXphYmxlKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gSlNDOjp0b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3
PEFkYXB0b3I+KHZtLCB2YWx1ZSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IFJl
ZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnRvV3JhcHBlZEFsbG93U2hhcmVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsK
LSAgICBhdXRvIHJlc3VsdCA9IEpTQzo6dG9Qb3NzaWJseVNoYXJlZE5hdGl2ZVR5cGVkVmlldzxB
ZGFwdG9yPih2bSwgdmFsdWUpOwotICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+aXNSZXNpemFi
bGVPckdyb3dhYmxlU2hhcmVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IFJlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRv
V3JhcHBlZEFsbG93U2hhcmVkQW5kUmVzaXphYmxlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKLXsK
LSAgICByZXR1cm4gSlNDOjp0b1Bvc3NpYmx5U2hhcmVkTmF0aXZlVHlwZWRWaWV3PEFkYXB0b3I+
KHZtLCB2YWx1ZSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IGlubGluZSBjb25z
dCBDbGFzc0luZm8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjppbmZvKCkKLXsK
LSNkZWZpbmUgSlNDX0dFVF9DTEFTU19JTkZPKHR5cGUpIGNhc2UgVHlwZSMjdHlwZTogcmV0dXJu
IGdldCMjdHlwZSMjQXJyYXlDbGFzc0luZm8oKTsKLSAgICBzd2l0Y2ggKEFkYXB0b3I6OnR5cGVW
YWx1ZSkgewotICAgICAgICBGT1JfRUFDSF9UWVBFRF9BUlJBWV9UWVBFX0VYQ0xVRElOR19EQVRB
X1ZJRVcoSlNDX0dFVF9DTEFTU19JTkZPKQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSN1
bmRlZiBKU0NfR0VUX0NMQVNTX0lORk8KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGFzc2VkQWRh
cHRvcj4gaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNHZW5lcmljUmVzaXphYmxlT3JHcm93YWJs
ZVNoYXJlZFR5cGVkQXJyYXlWaWV3PFBhc3NlZEFkYXB0b3I+OjppbmZvKCkKLXsKLSAgICBzd2l0
Y2ggKEJhc2U6OkFkYXB0b3I6OnR5cGVWYWx1ZSkgewotI2RlZmluZSBKU0NfR0VUX0NMQVNTX0lO
Rk8odHlwZSkgXAotICAgIGNhc2UgVHlwZSMjdHlwZTogcmV0dXJuIGdldFJlc2l6YWJsZU9yR3Jv
d2FibGVTaGFyZWQjI3R5cGUjI0FycmF5Q2xhc3NJbmZvKCk7Ci0gICAgICAgIEZPUl9FQUNIX1RZ
UEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhKU0NfR0VUX0NMQVNTX0lORk8pCi0j
dW5kZWYgSlNDX0dFVF9DTEFTU19JTkZPCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotfQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IDhmOTc4MjFhNGE1Mi4uZWNhNjY4OGFiNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzMDUs
MTEgKzEzMDUsNiBAQCBpbmxpbmUgSlNPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxUaGlz
KCkgY29uc3QKICAgICByZXR1cm4gbV9nbG9iYWxUaGlzLmdldCgpOwogfQogCi1BTFdBWVNfSU5M
SU5FIFZNJiBnZXRWTShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPnZtKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBXVEZfQUxM
T1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgKaW5kZXggM2U5NmU0MDViZDUzLi5i
OTQ2YWY3N2I0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCkBAIC0yNDUsNiArMjQ1LDExIEBAIGlubGluZSBHZXR0
ZXJTZXR0ZXIqIEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBQcm90b1N0aWNreUdldHRlcigpIGNvbnN0
IHsgcmV0dXJuIHN0CiBpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gc3RkOjpiaXRfY2FzdDxHZXR0ZXJT
ZXR0ZXIqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcikpOyB9CiBpbmxpbmUgR2V0dGVyU2V0dGVyKiBKU0dsb2JhbE9iamVjdDo6cmVn
RXhwUHJvdG9Vbmljb2RlU2V0c0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Yml0X2Nhc3Q8
R2V0dGVyU2V0dGVyKj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBQ
cm90b1VuaWNvZGVTZXRzR2V0dGVyKSk7IH0KIAorQUxXQVlTX0lOTElORSBWTSYgZ2V0Vk0oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT52
bSgpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIHVuc2lnbmVkIEpTR2xvYmFs
T2JqZWN0OjpXZWFrQ3VzdG9tR2V0dGVyT3JTZXR0ZXJIYXNoPFQ+OjpoYXNoKGNvbnN0IFdlYWs8
VD4mIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaAppbmRleCBkZmQ4NTQ0NjIxNDEuLjhiNmE2MjY4NGI1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTI1LDkgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXRWTS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBDZWxsSW5saW5lcy5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9LZXlBdG9tU3RyaW5nQ2FjaGVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFya2VkQmxvY2tJbmxpbmVzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGE1YWNlOTczN2U2OC4uOGRl
MDEzN2ZiNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDg1
LDcgKzQ4NSw3IEBAIGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydHkoVk0mIHZtLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgUHJvcGVyCiAgICAgICAgIGlmICh2YWx1ZS5h
dHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCiAgICAgICAgICAgICBy
ZWlmeVN0YXRpY0FjY2Vzc29yKHZtLCB2YWx1ZSwgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgU1VQUFJFU1NfRk9SV0FSRF9ERUNMX0FSRyB0aGlzT2Jq
LnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai5yZWFsbSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
dmFsdWUuYXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbih2bSwgdGhpc09iai5yZWFsbSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLmJ1aWx0
aW5HZW5lcmF0b3IoKSh2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRl
cygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAppbmRleCA0MmExNmFiYmViZWEuLjk4NTk2MmYzZGFlOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaAppbmRleCBhZjFjMGFiYTRmNzUuLjk0MTMyZjQ0YWY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUFycmF5U3RvcmFnZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVDaGFpbi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUNyZWF0ZUlubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzTGlnaHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TeW1ib2xQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWJBc3NlbWJs
eUdDU3RydWN0dXJlLmg+CkBAIC02OSw2ICs2OCw3NCBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogcHJldmlvdXMsIERlZmVycmVkU3RydWN0
dQogICAgIH0KIH0KIAoraW5saW5lIEpTT2JqZWN0KiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlw
ZU9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc01vbm9Qcm90bygpKTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gbV9wcm90b3R5cGUuZ2V0KCk7CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYXNPYmplY3QodmFsdWUpOworfQor
CitpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc01vbm9Qcm90bygpKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gc3RvcmVkUHJvdG90eXBlT2JqZWN0KCk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvYmplY3QtPnN0cnVjdHVyZSgpOworfQorCitB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgU3RydWN0dXJlOjpzdG9yZWRQcm90b3R5cGUoY29uc3QgSlNP
YmplY3QqIG9iamVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDb21waWxhdGlvblRocmVhZCgp
IHx8IFRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IG9iamVjdC0+c3RydWN0dXJlKCkgPT0gdGhp
cyk7CisgICAgaWYgKGhhc01vbm9Qcm90bygpKQorICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90
eXBlKCk7CisgICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zmc2V0
KTsKK30KKworQUxXQVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZWRQcm90b3R5
cGVPYmplY3QoY29uc3QgSlNPYmplY3QqIG9iamVjdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXND
b21waWxhdGlvblRocmVhZCgpIHx8IFRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IG9iamVjdC0+
c3RydWN0dXJlKCkgPT0gdGhpcyk7CisgICAgaWYgKGhhc01vbm9Qcm90bygpKQorICAgICAgICBy
ZXR1cm4gc3RvcmVkUHJvdG90eXBlT2JqZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90byA9IG9iamVj
dC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zmc2V0KTsKKyAgICBpZiAocHJvdG8uaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhc09iamVjdChwcm90byk7
Cit9CisKK0FMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlw
ZVN0cnVjdHVyZShjb25zdCBKU09iamVjdCogb2JqZWN0KSBjb25zdAoreworICAgIGlmIChKU09i
amVjdCogcHJvdG8gPSBzdG9yZWRQcm90b3R5cGVPYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0
dXJuIHByb3RvLT5zdHJ1Y3R1cmUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQUxXQVlT
X0lOTElORSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICByZXR1cm4g
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworfQorICAgIAorQUxXQVlTX0lOTElO
RSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQoreworICAgIEFTU0VSVCghaXNDb21waWxh
dGlvblRocmVhZCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mb0ZvckNlbGxz
KCkgPT0gaW5mbygpKTsKKworICAgIGlmIChtX3NlZW5Qcm9wZXJ0aWVzLnJ1bGVPdXQoQ29tcGFj
dFB0cjxVbmlxdWVkU3RyaW5nSW1wbD46OmVuY29kZShwcm9wZXJ0eU5hbWUudWlkKCkpKSkKKyAg
ICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CisKKyAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0
eVRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOworICAgIGlmICghcHJv
cGVydHlUYWJsZSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CisKKyAgICBhdXRvIFtv
ZmZzZXQsIGVudHJ5QXR0cmlidXRlc10gPSBwcm9wZXJ0eVRhYmxlLT5nZXQocHJvcGVydHlOYW1l
LnVpZCgpKTsKKyAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCisgICAgICAgIGF0dHJp
YnV0ZXMgPSBlbnRyeUF0dHJpYnV0ZXM7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQgU3RydWN0dXJlOjpmb3JFYWNoUHJvcGVydHlDb25j
dXJyZW50bHkoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKQEAgLTEzNSw2ICsyMDIsMTggQEAg
dm9pZCBTdHJ1Y3R1cmU6OmZvckVhY2hQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVh
ZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBpZiAoaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBp
ZiAoIWlzVHlwZWRWaWV3KG1fYmxvYi50eXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBUeXBlZEFycmF5TW9kZSBtb2RlID0gdW5jaGVja2VkRG93bmNhc3Q8SlNBcnJheUJ1ZmZl
clZpZXc+KGNlbGwpLT5tb2RlKCk7CisgICAgcmV0dXJuIGlzV2FzdGVmdWxUeXBlZEFycmF5KG1v
ZGUpOworfQorCiBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3BlcnR5TmFtZXMo
Vk0mIHZtLCBDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZCBraW5kLCBKU0NlbGxCdXR0ZXJmbHkqIGNh
Y2hlZCkKIHsKICAgICBlbnN1cmVSYXJlRGF0YSh2bSktPnNldENhY2hlZFByb3BlcnR5TmFtZXMo
dm0sIGtpbmQsIGNhY2hlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzTGlnaHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXNMaWdodC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkNmJiMTA5ZmUyYWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzTGlnaHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXlCdWZmZXJW
aWV3Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eVRhYmxlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3RydWN0dXJlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotaW5saW5lIEpTT2JqZWN0KiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZU9iamVjdCgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc01vbm9Qcm90bygpKTsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gbV9wcm90b3R5cGUuZ2V0KCk7Ci0gICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYXNPYmplY3QodmFsdWUpOwotfQotCi1pbmxpbmUg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGhhc01vbm9Qcm90bygpKTsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gc3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCk7Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBvYmplY3QtPnN0cnVjdHVyZSgpOwotfQotCi1BTFdBWVNfSU5M
SU5FIEpTVmFsdWUgU3RydWN0dXJlOjpzdG9yZWRQcm90b3R5cGUoY29uc3QgSlNPYmplY3QqIG9i
amVjdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNDb21waWxhdGlvblRocmVhZCgpIHx8IFRocmVh
ZDo6bWF5QmVHQ1RocmVhZCgpIHx8IG9iamVjdC0+c3RydWN0dXJlKCkgPT0gdGhpcyk7Ci0gICAg
aWYgKGhhc01vbm9Qcm90bygpKQotICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90eXBlKCk7Ci0g
ICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KGtub3duUG9seVByb3RvT2Zmc2V0KTsKLX0KLQot
QUxXQVlTX0lOTElORSBKU09iamVjdCogU3RydWN0dXJlOjpzdG9yZWRQcm90b3R5cGVPYmplY3Qo
Y29uc3QgSlNPYmplY3QqIG9iamVjdCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXNDb21waWxhdGlv
blRocmVhZCgpIHx8IFRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IG9iamVjdC0+c3RydWN0dXJl
KCkgPT0gdGhpcyk7Ci0gICAgaWYgKGhhc01vbm9Qcm90bygpKQotICAgICAgICByZXR1cm4gc3Rv
cmVkUHJvdG90eXBlT2JqZWN0KCk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IG9iamVjdC0+Z2V0RGly
ZWN0KGtub3duUG9seVByb3RvT2Zmc2V0KTsKLSAgICBpZiAocHJvdG8uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhc09iamVjdChwcm90byk7Ci19Ci0KLUFM
V0FZU19JTkxJTkUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZVN0cnVjdHVy
ZShjb25zdCBKU09iamVjdCogb2JqZWN0KSBjb25zdAotewotICAgIGlmIChKU09iamVjdCogcHJv
dG8gPSBzdG9yZWRQcm90b3R5cGVPYmplY3Qob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHByb3Rv
LT5zdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQUxXQVlTX0lOTElORSBQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCi17Ci0gICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICByZXR1cm4gZ2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwotfQotCi1BTFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zm
c2V0IFN0cnVjdHVyZTo6Z2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQmIGF0dHJpYnV0ZXMpCi17Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkp
OwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvRm9yQ2VsbHMoKSA9PSBpbmZvKCkp
OwotCi0gICAgaWYgKG1fc2VlblByb3BlcnRpZXMucnVsZU91dChDb21wYWN0UHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPjo6ZW5jb2RlKHByb3BlcnR5TmFtZS51aWQoKSkpKQotICAgICAgICByZXR1cm4g
aW52YWxpZE9mZnNldDsKLQotICAgIFByb3BlcnR5VGFibGUqIHByb3BlcnR5VGFibGUgPSBlbnN1
cmVQcm9wZXJ0eVRhYmxlSWZOb3RFbXB0eSh2bSk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxlKQot
ICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKLQotICAgIGF1dG8gW29mZnNldCwgZW50cnlB
dHRyaWJ1dGVzXSA9IHByb3BlcnR5VGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKLSAgICAgICAgYXR0cmlidXRlcyA9IGVudHJ5
QXR0cmlidXRlczsKLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1
cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKLXsKLSAgICBp
ZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGlmICghaXNUeXBlZFZpZXcobV9ibG9iLnR5cGUoKSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFR5cGVkQXJyYXlNb2RlIG1vZGUgPSB1bmNoZWNrZWREb3duY2Fz
dDxKU0FycmF5QnVmZmVyVmlldz4oY2VsbCktPm1vZGUoKTsKLSAgICByZXR1cm4gaXNXYXN0ZWZ1
bFR5cGVkQXJyYXkobW9kZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDEwMmJkOWZiYWIyYS4uOTA3ZDQy
NzIzNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvbnRy
b2xGbG93UHJvZmlsZXIuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCIK
LSNpbmNsdWRlICJET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUJhc2VJbmxpbmVzLmgiCkBAIC00Myw3ICs0Miw2IEBACiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSGVhcFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiSGVhcFNuYXBzaG90
QnVpbGRlci5oIgotI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVRTaXplU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTQ2MjgsOSArNDYyNiw3IEBAIFN0cnVjdHVyZSogSlNEb2xs
YXJWTTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWCiB9CiAKIERFRklORV9WSVNJVF9DSElMRFJFTihKU0RvbGxhclZNKTsKLVJFRlRSQUNL
RVJfSU1QTChTdHJvbmdSZWZUcmFja2VyLCB7Ci0gICAgSlNDOjppbml0aWFsaXplKCk7Ci19KTsK
K1JFRlRSQUNLRVJfSU1QTChTdHJvbmdSZWZUcmFja2VyKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlRyYWNrZXJNaXhpbi5oIGIvU291cmNl
L1dURi93dGYvUmVmVHJhY2tlck1peGluLmgKaW5kZXggZTViOGVhMzJlNzUyLi5mZjIyNTYwOGY2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlRyYWNrZXJNaXhpbi5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1JlZlRyYWNrZXJNaXhpbi5oCkBAIC0xMTEsMjEgKzExMSwxOSBAQCBzdHJ1
Y3QgUmVmVHJhY2tlck1peGluIGZpbmFsIHsKICAgICBSZWZUcmFja2VyTWl4aW4qIG9yaWdpbmFs
VGhpcyA9IG51bGxwdHI7CiB9OwogCi0jZGVmaW5lIFJFRlRSQUNLRVJfREVDTChUKSBcCisjZGVm
aW5lIFJFRlRSQUNLRVJfREVDTChULCBpbml0aWFsaXplcikgXAogICAgIHN0cnVjdCBUIGZpbmFs
IHsgXAotICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZW5hYmxlZCgpOyBc
CisgICAgICAgIGlubGluZSBzdGF0aWMgYm9vbCBlbmFibGVkKCkgeyBcCisgICAgICAgICAgICBp
bml0aWFsaXplciBcCisgICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlICMjIFQoKTsg
XAorICAgICAgICB9IFwKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXVEY6OlJl
ZlRyYWNrZXImIHJlZlRyYWNrZXJTaW5nbGV0b24oKTsgXAogICAgIH07CiAKICNkZWZpbmUgUkVG
VFJBQ0tFUl9NRU1CRVJTKFQpIFwKICAgICBXVEY6OlJlZlRyYWNrZXJNaXhpbjxUPiBtX3JlZlRy
YWNrZXJEYXRhOwogCi0jZGVmaW5lIFJFRlRSQUNLRVJfSU1QTChULCBpbml0aWFsaXplcikgXAot
ICAgIGJvb2wgVDo6ZW5hYmxlZCgpIFwKLSAgICB7IFwKLSAgICAgICAgaW5pdGlhbGl6ZXIgXAot
ICAgICAgICByZXR1cm4gT3B0aW9uczo6ZW5hYmxlICMjIFQoKTsgXAotICAgIH0gXAorI2RlZmlu
ZSBSRUZUUkFDS0VSX0lNUEwoVCkgXAogICAgIFdURjo6UmVmVHJhY2tlciYgVDo6cmVmVHJhY2tl
clNpbmdsZXRvbigpIFwKICAgICB7IFwKICAgICAgICAgc3RhdGljIFdURjo6TGF6eU5ldmVyRGVz
dHJveWVkPFdURjo6UmVmVHJhY2tlcj4gc19zaW5nbGV0b247IFwKQEAgLTEzOSw5ICsxMzcsOSBA
QCBzdHJ1Y3QgUmVmVHJhY2tlck1peGluIGZpbmFsIHsKIAogI2Vsc2UgLy8gRU5BQkxFKFJFRlRS
QUNLRVIpCiAKLSNkZWZpbmUgUkVGVFJBQ0tFUl9ERUNMKF8pCisjZGVmaW5lIFJFRlRSQUNLRVJf
REVDTChfLCBpbml0aWFsaXplcikKICNkZWZpbmUgUkVGVFJBQ0tFUl9NRU1CRVJTKF8pCi0jZGVm
aW5lIFJFRlRSQUNLRVJfSU1QTChfLCBpbml0aWFsaXplcikKKyNkZWZpbmUgUkVGVFJBQ0tFUl9J
TVBMKF8pCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkOTg0OTUwYzFkNmYuLjFk
M2RiMTEzYTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05MDksNyArOTA5LDYgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5oCiAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmgK
ICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAotICAgIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZ0ZhY2FkZS5oCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nU2VjdXJpdHkuaAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NQ2FzdFRoaXNWYWx1ZS5oCiAgICAgYmluZGluZ3MvanMvSlNET01D
b252ZXJ0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXktYW1z
LXVpL0FwcGxlUGF5QU1TVUlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXIuY3BwCmluZGV4
IDA4NTg3NzVjZjRhNi4uZTBmN2RlYTFjMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQ
YXltZW50SGFuZGxlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcklubGluZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudFBhZ2UuaCIKICNp
bmNsdWRlICJKU0FwcGxlUGF5QU1TVUlSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
RmFjYWRlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
R2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0
b3IuaD4KQEAgLTk0LDcgKzkzLDcgQEAgdm9pZCBBcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXI6
OmZpbmlzaFNlc3Npb24oc3RkOjpvcHRpb25hbDxib29sPiYmIHJlc3VsdCkKICAgICAgICAgSlND
OjpWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1dG8qIG9iamVjdCA9
IFdlYkNvcmU6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgYXV0byogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3VjY2VzcyJfcyksIEpTQzo6anNCb29sZWFuKHN1Y2Nlc3MpKTsKIAog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDBlNTJhZmNiY2U2YS4uN2FjMjcxMjZjNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtNzAsNyArNzAsNiBAQAogI2luY2x1ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lu
bGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Rab25lTWFsbG9jSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoTWVzc2FnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
dXNoLWFwaS9QdXNoTWVzc2FnZURhdGEuY3BwCmluZGV4IGU4ODRmY2EzZmYwOS4uYjVlNmEwMTU2
MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNz
YWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVz
c2FnZURhdGEuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU09OT2JqZWN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Vy
bC1wYXR0ZXJuL1VSTFBhdHRlcm5Db21wb25lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy91cmwtcGF0dGVybi9VUkxQYXR0ZXJuQ29tcG9uZW50LmNwcAppbmRleCA2NTE3NGQ0YjA1Mjku
LjU2N2E2ZmRlZTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy91cmwtcGF0
dGVybi9VUkxQYXR0ZXJuQ29tcG9uZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3VybC1wYXR0ZXJuL1VSTFBhdHRlcm5Db21wb25lbnQuY3BwCkBAIC0zMywxMSArMzMsOSBAQAog
I2luY2x1ZGUgIlVSTFBhdHRlcm5SZXN1bHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SZWdFeHBPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1
ZGUgPHJhbmdlcz4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ0cmFuc3BvcnQvV2ViVHJhbnNwb3J0U2VuZFN0cmVhbVNpbmsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ0cmFuc3BvcnQvV2ViVHJhbnNwb3J0U2VuZFN0
cmVhbVNpbmsuY3BwCmluZGV4IGRiMjQ0NzYwZWY4OC4uNzA0OTQ5MGYyMTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnRyYW5zcG9ydC9XZWJUcmFuc3BvcnRTZW5kU3Ry
ZWFtU2luay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ0cmFuc3BvcnQvV2Vi
VHJhbnNwb3J0U2VuZFN0cmVhbVNpbmsuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAi
V3JpdGFibGVTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWY0YWE3MDc0NTc2Li4xMTAwYTE0Y2Fm
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02OTMsNyArNjkzLDYgQEAgYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuY3BwCiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3Rv
bS5jcHAKIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRXZlbnRDdXN0b20uY3BwCi1iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmdGYWNhZGUuY3BwIEBuby11bmlmeQogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
U2VjdXJpdHkuY3BwCiBiaW5kaW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3Bw
CiBiaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYzJkYjIxM2NlZGYu
LmYwOTJkMjUxMTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTUwMSw4ICsxNTAxLDYgQEAKIAkJNDE1MDgwMzcxRTNGMDBC
MDAwNTFENzVEIC8qIExpYldlYlJUQ0F1ZGlvTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwODAzNTFFM0YwMEFBMDA1MUQ3NUQgLyogTGli
V2ViUlRDQXVkaW9Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUw
RjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi87IH07CiAJCTQx
NTE0RkRCMkU5MkRDNDAwMDIwNzRFQSAvKiBTdHJlYW1QaXBlVG9VdGlsaXRpZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFNjE2RjkyRTg0MjdE
RDAwNjYyMTgxIC8qIFN0cmVhbVBpcGVUb1V0aWxpdGllcy5jcHAgKi87IH07Ci0JCUVFMDQyOTAz
RjFBMERFMDEwMEExQjJDMyAvKiBKU0RPTUJpbmRpbmdGYWNhZGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUUwNDI5MDFGMUEwREUwMTAwQTFCMkMz
IC8qIEpTRE9NQmluZGluZ0ZhY2FkZS5jcHAgKi87IH07Ci0JCUVFMDQyOTA0RjFBMERFMDEwMEEx
QjJDMyAvKiBKU0RPTUJpbmRpbmdGYWNhZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVFMDQyOTAyRjFBMERFMDEwMEExQjJDMyAvKiBKU0RPTUJpbmRp
bmdGYWNhZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTUxOUNCODFGRDFGMDJFMDA3RjYyM0MgLyogU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTUxQUFFNTJGMjI0MjY3MDBFOTlDOTEgLyogRE9NQXN5bmNJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MUFBRTMyRjIyNDI1QjAwRTk5
QzkxIC8qIERPTUFzeW5jSXRlcmF0b3IuaCAqLzsgfTsKIAkJNDE1MUU1QkIxRkJBNEM3QTAwRTQ3
RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNTFFNUI3MUZCQTRDNzUwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MDA3
LDggKzE1MDA1LDYgQEAKIAkJN0M0NUM5QzgxRTNFOEI1MTAwQUFCNTU4IC8qIEpTRE9NV3JhcHBl
ckNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV3JhcHBlckNh
Y2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDVDOUM5MUUzRThDRDcwMEFB
QjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTUJpbmRpbmdTZWN1cml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzQ1QzlDQTFFM0U4RDJFMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01CaW5kaW5nU2VjdXJp
dHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFRTA0MjkwMUYxQTBERTAxMDBB
MUIyQzMgLyogSlNET01CaW5kaW5nRmFjYWRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NQmluZGluZ0ZhY2FkZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUVFMDQyOTAyRjFBMERFMDEwMEExQjJDMyAvKiBKU0RPTUJpbmRpbmdGYWNhZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CaW5kaW5nRmFjYWRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDVDOUNCMUUzRThFNDkwMEFBQjU1OCAv
KiBKU0RPTVdyYXBwZXJDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RPTVdyYXBwZXJDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNDVDOUNDMUUzRThGMDgwMEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZDRTE5MUM5RDY1MDAw
MjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNzIwMyw4ICszNzE5OSw2IEBACiAJCQkJOTMyRjFEMzkyNzBEMjY5RjAwMEMyODEzIC8q
IEpTRE9NQXN5bmNJdGVyYXRvci5oICovLAogCQkJCTdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAv
KiBKU0RPTUF0dHJpYnV0ZS5oICovLAogCQkJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBK
U0RPTUJpbmRpbmcuaCAqLywKLQkJCQlFRTA0MjkwMUYxQTBERTAxMDBBMUIyQzMgLyogSlNET01C
aW5kaW5nRmFjYWRlLmNwcCAqLywKLQkJCQlFRTA0MjkwMkYxQTBERTAxMDBBMUIyQzMgLyogSlNE
T01CaW5kaW5nRmFjYWRlLmggKi8sCiAJCQkJNDFERUZDQjIxRTU2QzFCOTAwMEQ5RTVGIC8qIEpT
RE9NQmluZGluZ0ludGVybmFscy5qcyAqLywKIAkJCQk3QzQ1QzlDQTFFM0U4RDJFMDBBQUI1NTgg
LyogSlNET01CaW5kaW5nU2VjdXJpdHkuY3BwICovLAogCQkJCTdDNDVDOUM5MUUzRThDRDcwMEFB
QjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5oICovLApAQCAtNDU5NjUsNyArNDU5NTksNiBA
QAogCQkJCTkzMkYxRDNDMjcwRDI2QTAwMDBDMjgxMyAvKiBKU0RPTUFzeW5jSXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDODEzOUE2MUVENjI4NkEwMENFMjZFOCAvKiBKU0RPTUF0dHJp
YnV0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpT
RE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRUUwNDI5MDRGMUEwREUwMTAwQTFCMkMz
IC8qIEpTRE9NQmluZGluZ0ZhY2FkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJE
MTJERjAwMEEzRjY1IC8qIEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJp
dHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQ0EwQkZDMjY3M0Y0N0MwMDlGREQ2NyAvKiBKU0RP
TUJpbmRpbmdTZWN1cml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTA0MzMsNyArNTA0
MjYsNiBAQAogCQkJCTA3MEUyRDBGMjZGMjUwODkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJh
Y2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2Q0E5NDMxMjdCODY5NTgw
MEY0RjVGRiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUVFMDQyOTAzRjFBMERFMDEwMEExQjJDMyAvKiBKU0RPTUJpbmRp
bmdGYWNhZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxNEMyNTQyRUNDMDVDQjAwRjlDNTZE
IC8qIEpTUmVzb2x2ZWRDYXB0aW9uRGlzcGxheVNldHRpbmdzT3B0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dC5jcHAKaW5kZXggZDc1MDlkODQyNDU2Li4wOTM5MmU1MjUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtODYsNyArODYsNiBAQAogI2luY2x1
ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlZpZXdUaW1lbGlu
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHJhbmdlcz4KICNp
bmNsdWRlIDx3dGYvVFpvbmVNYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDRhMWE2MGIzMTIwOS4uYTcwNTllNDdh
ZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTM3LDYgKzM3LDExIEBACiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCisjaWYgRU5B
QkxFKFdFQkdMKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViR0xBbnkuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1dlYkdMRXh0ZW5zaW9uQW55Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKQEAgLTQwMyw4ICs0MDgsOCBA
QCBzdHJ1Y3QgSURMSURCVmFsdWUgOiBJRExJbnRlcmZhY2U8SURCVmFsdWU+IHsgfTsKIHN0cnVj
dCBJRExTY2hlZHVsZWRBY3Rpb24gOiBJRExUeXBlPHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRB
Y3Rpb24+PiB7IH07CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1zdHJ1Y3QgSURMV2ViR0xBbnk7Ci1z
dHJ1Y3QgSURMV2ViR0xFeHRlbnNpb25Bbnk7CitzdHJ1Y3QgSURMV2ViR0xBbnkgOiBJRExUeXBl
PFdlYkdMQW55PiB7IH07CitzdHJ1Y3QgSURMV2ViR0xFeHRlbnNpb25BbnkgOiBJRExUeXBlPFdl
YkdMRXh0ZW5zaW9uQW55PiB7IH07CiAjZW5kaWYKIAogLy8gSGVscGVyIHByZWRpY2F0ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
aW5kZXggYjIyZTZkZjUzNTFmLi40MGNhODAxNTVjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0yOTgsNyArMjk4LDcg
QEAgc3RhdGljIEpTVmFsdWUgZW5zdXJlTnRoVmFsdWVPbktleVBhdGgoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgSlNWYWx1ZSBwYXJlbnRWYWx1ZShj
dXJyZW50VmFsdWUpOwogICAgICAgICBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50ID0ga2V5
UGF0aEVsZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
YXJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnQsIGN1cnJlbnRWYWx1ZSkpIHsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBpZiAoIXNldChsZXhp
Y2FsR2xvYmFsT2JqZWN0LnZtKCksIHBhcmVudFZhbHVlLCBrZXlQYXRoRWxlbWVudCwgSlNWYWx1
ZShvYmplY3QpKSkKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAg
ICAgICAgIGN1cnJlbnRWYWx1ZSA9IEpTVmFsdWUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4
IDI4NjQ0YTVkNWI1Ny4uYjgxMWZiOTc5YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTQ3LDcgKzQ3
LDYgQEAKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkpTSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3Bl
cmF0aW9ucy5oCmluZGV4IGFlOWEyZDdlNjljYy4uNWM1Y2Q4OThmMjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJp
bmRpbmdGYWNhZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw3ICs1OCw3IEBA
IHN0YXRpYyBib29sIGlzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDCiAgICAgCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3du
IHByb3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIEpTQzo6UHJvcGVydHlT
bG90IHNsb3QgeyAmdGhpc09iamVjdCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpIH07Ci0gICAgaWYgKFdl
YkNvcmU6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgaWYgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyAzLiBJZiBPIGlt
cGxlbWVudHMgYW4gaW50ZXJmYWNlIHRoYXQgaGFzIHRoZSBbTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHJldHVybiB0cnVlLgpAQCAtNzEsOCArNzAsOCBA
QCBzdGF0aWMgYm9vbCBpc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQwogICAgIC8vICAgIDEuIElmIHByb3RvdHlwZSBpcyBu
b3QgYSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCwgYW5kIHByb3RvdHlwZSBoYXMgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgY2hlY2tpbmcgZm9yICduYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCcuCiAgICAgLy8gICAgMi4g
U2V0IHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBl
XV0gcHJvcGVydHkgb2YgcHJvdG90eXBlLgotICAgIGF1dG8gcHJvdG90eXBlID0gV2ViQ29yZTo6
c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3Quc3RydWN0dXJlKCksICZ0aGlzT2JqZWN0KTsKLSAg
ICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2ViQ29yZTo6Z2V0UHJvcGVydHlTbG90KEpT
Qzo6YXNPYmplY3QocHJvdG90eXBlKSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCisgICAgYXV0byBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlwZURp
cmVjdCgpOworICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gNi4gUmV0dXJuIHRy
dWUuCkBAIC0xMzIsNyArMTMxLDcgQEAgc3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJv
cGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKIAogICAgIC8v
IDIuIElmIE8gaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4K
ICAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKSB9OwotICAgIGlmIChXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3Qs
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgIGlmIChKU0M6
OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgLy8gMy4gSWYgTyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUg
W0xlZ2FjeU92ZXJyaWRlQnVpbHRJbnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4g
dHJ1ZS4KQEAgLTE0NCw4ICsxNDMsOCBAQCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxlTmFtZWRQ
cm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAgIC8v
ICAgIDEuIElmIHByb3RvdHlwZSBpcyBub3QgYSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCwgYW5k
IHByb3RvdHlwZSBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNl
LgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY2hlY2tpbmcgZm9yICduYW1lZCBwcm9wZXJ0aWVz
IG9iamVjdCcuCiAgICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2Yg
dGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgcHJvdG90eXBlLgotICAgIGF1
dG8gcHJvdG90eXBlID0gV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3Quc3RydWN0
dXJlKCksICZ0aGlzT2JqZWN0KTsKLSAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2Vi
Q29yZTo6Z2V0UHJvcGVydHlTbG90KEpTQzo6YXNPYmplY3QocHJvdG90eXBlKSwgJmxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgYXV0byBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIGlmIChwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBKU0M6OmFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIDYuIFJldHVybiB0cnVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUFzeW5jSXRlcmF0b3IuaAppbmRleCA2ODYzYmYxZDY5OTMuLmE5ODc2
NTg0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3lu
Y0l0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Bc3luY0l0
ZXJhdG9yLmgKQEAgLTMwLDEwICszMCwxMSBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgog
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0l0
ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQm91bmRGdW5j
dGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlTbG90Lmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9KU0RPTUJpbmRpbmdGYWNhZGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1
Y3R1cmVDcmVhdGVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKQEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBuZXh0
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwpAQCAtMjMyLDcgKzIzMyw3
IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUFzeW5jSXRlcmF0b3JCYXNlPEpTV3JhcHBlciwgSXRlcmF0
b3JUcmFpdHM+OjpuZXh0KEpTQzo6SlNHbG9iCiAgICAgYXV0byBhZnRlck9uZ29pbmdQcm9taXNl
Q2FwYWJpbGl0eSA9IEpTQzo6SlNQcm9taXNlOjpjcmVhdGVOZXdQcm9taXNlQ2FwYWJpbGl0eSgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3RydWN0
b3IoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGF1dG8q
IHByb21pc2UgPSBkeW5hbWljRG93bmNhc3Q8SlNDOjpKU1Byb21pc2U+KFdlYkNvcmU6OmdldChK
U0M6OmFzT2JqZWN0KGFmdGVyT25nb2luZ1Byb21pc2VDYXBhYmlsaXR5KSwgJmxleGljYWxHbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb21pc2UpKTsKKyAgICBhdXRvKiBwcm9taXNl
ID0gZHluYW1pY0Rvd25jYXN0PEpTQzo6SlNQcm9taXNlPihhZnRlck9uZ29pbmdQcm9taXNlQ2Fw
YWJpbGl0eS5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb21p
c2UpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgYXV0byBv
blNldHRsZWQgPSBjcmVhdGVPblNldHRsZWRGdW5jdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CkBAIC0yNTQsMTEgKzI1NSwxMSBAQCBKU0M6OkpTUHJvbWlzZSogSlNET01Bc3luY0l0ZXJhdG9y
QmFzZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6cnVuTmV4dFN0ZXBzKAogICAgIGF1dG8g
bmV4dFByb21pc2VDYXBhYmlsaXR5ID0gSlNDOjpKU1Byb21pc2U6OmNyZWF0ZU5ld1Byb21pc2VD
YXBhYmlsaXR5KCZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3RydWN0b3Io
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBhdXRv
KiBwcm9taXNlID0gZHluYW1pY0Rvd25jYXN0PEpTQzo6SlNQcm9taXNlPihXZWJDb3JlOjpnZXQo
SlNDOjphc09iamVjdChuZXh0UHJvbWlzZUNhcGFiaWxpdHkpLCAmZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm9taXNlKSk7CisgICAgYXV0byogcHJvbWlzZSA9IGR5bmFtaWNEb3du
Y2FzdDxKU0M6OkpTUHJvbWlzZT4obmV4dFByb21pc2VDYXBhYmlsaXR5LmdldCgmZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIGlmIChtX2lzRmluaXNoZWQuZ2V0KCkpIHsKLSAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgmZ2xvYmFsT2JqZWN0LCB2bSwgV2ViQ29yZTo6Y3JlYXRlSXRlcmF0
b3JSZXN1bHRPYmplY3QoJmdsb2JhbE9iamVjdCwgSlNDOjpqc1VuZGVmaW5lZCgpLCB0cnVlKSk7
CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoJmdsb2JhbE9iamVjdCwgdm0sIEpTQzo6Y3JlYXRl
SXRlcmF0b3JSZXN1bHRPYmplY3QoJmdsb2JhbE9iamVjdCwgSlNDOjpqc1VuZGVmaW5lZCgpLCB0
cnVlKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAg
ICAgICAgIHJldHVybiBwcm9taXNlOwpAQCAtMzc2LDcgKzM3Nyw3IEBAIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNET01Bc3luY0l0ZXJhdG9yQmFzZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6
ZnVsZmlsbChKCiAgICAgaWYgKG1faXNGaW5pc2hlZC5nZXQoKSkKICAgICAgICAgbV9pdGVyYXRv
ciA9IG51bGxwdHI7CiAKLSAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoV2ViQ29yZTo6
Y3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoZ2xvYmFsT2JqZWN0LCByZXN1bHQsIG1faXNGaW5p
c2hlZC5nZXQoKSkpOworICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmNyZWF0
ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KGdsb2JhbE9iamVjdCwgcmVzdWx0LCBtX2lzRmluaXNoZWQu
Z2V0KCkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyLCB0eXBlbmFtZSBJdGVy
YXRvclRyYWl0cz4KQEAgLTQ1MywxMSArNDU0LDExIEBAIEpTQzo6SlNQcm9taXNlKiBKU0RPTUFz
eW5jSXRlcmF0b3JCYXNlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpydW5SZXR1cm5TdGVw
CiAgICAgYXV0byByZXR1cm5Qcm9taXNlQ2FwYWJpbGl0eSA9IEpTQzo6SlNQcm9taXNlOjpjcmVh
dGVOZXdQcm9taXNlQ2FwYWJpbGl0eSgmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QucHJvbWlz
ZUNvbnN0cnVjdG9yKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogCi0gICAgYXV0byogcmV0dXJuUHJvbWlzZSA9IGR5bmFtaWNEb3duY2FzdDxKU0M6OkpTUHJv
bWlzZT4oV2ViQ29yZTo6Z2V0KEpTQzo6YXNPYmplY3QocmV0dXJuUHJvbWlzZUNhcGFiaWxpdHkp
LCAmZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlKSk7CisgICAgYXV0byog
cmV0dXJuUHJvbWlzZSA9IGR5bmFtaWNEb3duY2FzdDxKU0M6OkpTUHJvbWlzZT4ocmV0dXJuUHJv
bWlzZUNhcGFiaWxpdHkuZ2V0KCZnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb21p
c2UpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIGlm
IChtX2lzRmluaXNoZWQuZ2V0KCkpIHsKLSAgICAgICAgcmV0dXJuUHJvbWlzZS0+cmVzb2x2ZSgm
Z2xvYmFsT2JqZWN0LCB2bSwgV2ViQ29yZTo6Y3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoJmds
b2JhbE9iamVjdCwgdmFsdWUsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuUHJvbWlzZS0+cmVzb2x2
ZSgmZ2xvYmFsT2JqZWN0LCB2bSwgSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgdHJ1ZSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKIAogICAgICAgICByZXR1cm4gcmV0dXJuUHJvbWlzZTsKQEAgLTQ5Niwx
NCArNDk3LDE0IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUFzeW5jSXRlcmF0b3JCYXNlPEpTV3JhcHBl
ciwgSXRlcmF0b3JUcmFpdHM+OjpyZXR1cm5NZXRob2QoSlNDCiAgICAgYXV0byByZXR1cm5Qcm9t
aXNlQ2FwYWJpbGl0eSA9IEpTQzo6SlNQcm9taXNlOjpjcmVhdGVOZXdQcm9taXNlQ2FwYWJpbGl0
eSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3Ry
dWN0b3IoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGF1
dG8qIHJldHVyblByb21pc2UgPSBkeW5hbWljRG93bmNhc3Q8SlNDOjpKU1Byb21pc2U+KFdlYkNv
cmU6OmdldChKU0M6OmFzT2JqZWN0KHJldHVyblByb21pc2VDYXBhYmlsaXR5KSwgJmxleGljYWxH
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb21pc2UpKTsKKyAgICBhdXRvKiByZXR1
cm5Qcm9taXNlID0gZHluYW1pY0Rvd25jYXN0PEpTQzo6SlNQcm9taXNlPihyZXR1cm5Qcm9taXNl
Q2FwYWJpbGl0eS5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnBy
b21pc2UpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYg
KG1fb25nb2luZ1Byb21pc2UpIHsKICAgICAgICAgYXV0byBhZnRlck9uZ29pbmdQcm9taXNlQ2Fw
YWJpbGl0eSA9IEpTQzo6SlNQcm9taXNlOjpjcmVhdGVOZXdQcm9taXNlQ2FwYWJpbGl0eSgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdC5wcm9taXNlQ29uc3RydWN0b3Io
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICAgICAg
YXV0byogcHJvbWlzZSA9IGR5bmFtaWNEb3duY2FzdDxKU0M6OkpTUHJvbWlzZT4oV2ViQ29yZTo6
Z2V0KEpTQzo6YXNPYmplY3QoYWZ0ZXJPbmdvaW5nUHJvbWlzZUNhcGFiaWxpdHkpLCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+cHJvbWlzZSkpOworICAgICAgICBhdXRv
KiBwcm9taXNlID0gZHluYW1pY0Rvd25jYXN0PEpTQzo6SlNQcm9taXNlPihhZnRlck9uZ29pbmdQ
cm9taXNlQ2FwYWJpbGl0eS5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPnByb21pc2UpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAogICAgICAgICBhdXRvIHJldHVyblN0ZXBzVmFsdWUgPSBKU0M6OkpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CkBAIC01NDMsNyArNTQ0LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0RPTUFzeW5j
SXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz46OnJldHUKICAgICAg
ICAgYXV0byByZXR1cm5Qcm9taXNlQ2FwYWJpbGl0eSA9IEpTQzo6SlNQcm9taXNlOjpjcmVhdGVO
ZXdQcm9taXNlQ2FwYWJpbGl0eShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+cHJvbWlzZUNv
bnN0cnVjdG9yKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
Ci0gICAgICAgIGF1dG8qIHByb21pc2UgPSBkeW5hbWljRG93bmNhc3Q8SlNDOjpKU1Byb21pc2U+
KFdlYkNvcmU6OmdldChKU0M6OmFzT2JqZWN0KHJldHVyblByb21pc2VDYXBhYmlsaXR5KSwgZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm9taXNlKSk7CisgICAgICAgIGF1dG8qIHBy
b21pc2UgPSBkeW5hbWljRG93bmNhc3Q8SlNDOjpKU1Byb21pc2U+KHJldHVyblByb21pc2VDYXBh
YmlsaXR5LmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb21pc2UpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBhdXRvIGRl
ZmVycmVkID0gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoKnVuY2hlY2tlZERvd25jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QpLCAqcHJvbWlzZSk7CkBAIC01NjIsNyArNTYzLDcg
QEAgdm9pZCBKU0RPTUFzeW5jSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVyYXRvclRy
YWl0cz46OmZpbmlzaENyZWF0aW9uKEpTQzoKIAogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG5leHQsIDAsIDAsIEpTQzo6
SW1wbGVtZW50YXRpb25WaXNpYmlsaXR5OjpQdWJsaWMpOwogICAgIGFkZFJldHVybk1ldGhvZElm
TmVlZGVkPHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yPih2bSwgZ2xvYmFsT2JqZWN0KTsK
LSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZt
LCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIs
IHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nRmFjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZ0ZhY2FkZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUxYjU1NDFlZDlkZS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZ0ZhY2FkZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRp
bmdGYWNhZGUuaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FyZ0xpc3QuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0FycmF5SW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgcHV0RGlyZWN0KEpTQzo6SlNPYmplY3Qq
IG9iamVjdCwgSlNDOjpWTSYgdm0sIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIHJldHVybiBvYmpl
Y3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7Ci19Ci0K
LXZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNDOjpKU09iamVjdCogb2JqZWN0LCBK
U0M6OlZNJiB2bSwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCi17Ci0gICAgb2JqZWN0LT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSBnZXQoY29uc3QgSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
LXsKLSAgICByZXR1cm4gb2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwot
fQotCi1KU0M6OkpTVmFsdWUgZ2V0RGlyZWN0KGNvbnN0IEpTQzo6SlNPYmplY3QqIG9iamVjdCwg
SlNDOjpWTSYgdm0sIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1
cm4gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSk7Ci19Ci0KLWJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJv
b2wgZ2V0UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBvYmplY3QtPmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgZ2V0UHJvcGVy
dHlTbG90KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAg
cmV0dXJuIG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaW5kZXgsIHNsb3Qp
OwotfQotCi1ib29sIGdldE5vbkluZGV4UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBvYmpl
Y3QtPmdldE5vbkluZGV4UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKLX0KLQotYm9vbCBjcmVhdGVEYXRhUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6UHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQotewotICAg
IHJldHVybiBvYmplY3QtPmNyZWF0ZURhdGFQcm9wZXJ0eShnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKLX0KLQotSlNDOjpKU09iamVjdCogY29uc3RydWN0
RW1wdHlPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJl
dHVybiBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTQzo6
SlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKQotewotICAgIHJldHVybiBKU0M6OmNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKTsKLX0KLQotSlNDOjpK
U09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIHJldHVybiBKU0M6OmNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlKTsKLX0KLQot
SlNDOjpQcm9wZXJ0eU9mZnNldCBzdHJ1Y3R1cmVHZXQoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNDOjpWTSYgdm0sIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBy
ZXR1cm4gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSBzdG9yZWRQcm90b3R5cGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSlNDOjpK
U09iamVjdCogb2JqZWN0KQotewotICAgIHJldHVybiBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZShvYmplY3QpOwotfQotCi1KU0M6OkpTT2JqZWN0KiBzdG9yZWRQcm90b3R5cGVPYmplY3QoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICByZXR1cm4gc3RydWN0dXJlLT5zdG9yZWRQ
cm90b3R5cGVPYmplY3QoKTsKLX0KLQotSlNDOjpKU1ZhbHVlIGFycmF5R2V0RGlyZWN0SW5kZXgo
SlNDOjpKU0FycmF5KiBhcnJheSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gYXJyYXktPmdldERpcmVjdEluZGV4KGdsb2Jh
bE9iamVjdCwgaW5kZXgpOwotfQotCi1KU0M6OkpTVmFsdWUgaXRlcmF0b3JNZXRob2QoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBvYmplY3QpCi17Ci0g
ICAgcmV0dXJuIEpTQzo6aXRlcmF0b3JNZXRob2QoZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQot
Ci1ib29sIGhhc0l0ZXJhdG9yTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIHJldHVybiBKU0M6Omhhc0l0ZXJhdG9yTWV0
aG9kKGdsb2JhbE9iamVjdCwgdmFsdWUpOwotfQotCi1KU0M6OkpTT2JqZWN0KiBjcmVhdGVJdGVy
YXRvclJlc3VsdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBkb25lKQotewotICAgIHJldHVybiBKU0M6OmNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsIGRvbmUpOwotfQotCi1KU0M6OkNh
bGxEYXRhIGdldENhbGxEYXRhKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gSlND
OjpnZXRDYWxsRGF0YSh2YWx1ZSk7Ci19Ci0KLUpTQzo6Q2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0
YShKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIEpTQzo6Z2V0Q29uc3RydWN0RGF0
YSh2YWx1ZSk7Ci19Ci0KLWJvb2wgaXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoSlNDOjpKU0FycmF5KiBhcnJheSkKLXsKLSAgICByZXR1cm4gYXJyYXktPmlzSXRlcmF0b3JQ
cm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7Ci19Ci0KLUpTQzo6SlNBcnJheSogY29uc3Ry
dWN0QXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OkFy
Z0xpc3QmIHZhbHVlcykKLXsKLSAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3RBcnJheShnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PEpTQzo6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCB2YWx1ZXMpOwotfQotCi1KU0M6OkpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNDOjpKU1ZhbHVlKiB2YWx1ZXMsIHVuc2ln
bmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEpTQzo6QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCB2
YWx1ZXMsIGxlbmd0aCk7Ci19Ci0KLUpTQzo6SlNBcnJheSogdHJ5R2V0RmFzdEl0ZXJhYmxlSlNB
cnJheShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKLXsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6YXNPYmplY3QodmFsdWUpOwotICAgIGlmICghSlND
Ojppc0pTQXJyYXkob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byog
YXJyYXkgPSBKU0M6OmFzQXJyYXkob2JqZWN0KTsKLSAgICBpZiAoIWFycmF5LT5pc0l0ZXJhdG9y
UHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0K
LXZvaWQgZm9yRWFjaEluQ29udGlndW91c0pTQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTQXJyYXkqIGFycmF5LCBOT0VTQ0FQRSBjb25zdCBTY29wZWRMYW1i
ZGE8dm9pZChKU0M6OkpTVmFsdWUpPiYgY2FsbGJhY2spCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAgSlND
OjpJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gYXJyYXktPmluZGV4aW5nVHlwZSgpICYgSlND
OjpJbmRleGluZ1NoYXBlTWFzazsKLSAgICBpZiAoaW5kZXhpbmdUeXBlID09IEpTQzo6Q29udGln
dW91c1NoYXBlKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgYXV0byBpbmRleFZhbHVlID0gYXJyYXktPmJ1dHRlcmZseSgpLT5j
b250aWd1b3VzKCkuYXQoYXJyYXksIGkpLmdldCgpOwotICAgICAgICAgICAgY2FsbGJhY2soaW5k
ZXhWYWx1ZSA/IGluZGV4VmFsdWUgOiBKU0M6OmpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBhdXRvIGluZGV4VmFsdWUgPSBhcnJheS0+Z2V0RGlyZWN0SW5kZXgoJmdsb2Jh
bE9iamVjdCwgaSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Ci0gICAgICAgIGNhbGxiYWNrKGluZGV4VmFsdWUgPyBpbmRleFZhbHVlIDogSlNDOjpqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgaXRlcmFibGUsIE5PRVNDQVBFIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKT4m
IGNhbGxiYWNrKQotewotICAgIEpTQzo6Zm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBp
dGVyYWJsZSwgY2FsbGJhY2spOwotfQotCi12b2lkIGZvckVhY2hJbkl0ZXJhYmxlKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogaXRlcmFibGUsIEpTQzo6
SlNWYWx1ZSBtZXRob2QsIE5PRVNDQVBFIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKT4mIGNhbGxiYWNrKQotewotICAg
IEpTQzo6Zm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgbWV0aG9kLCBj
YWxsYmFjayk7Ci19Ci0KLUpTQzo6SlNBcnJheSogY29uc3RydWN0QXJyYXkoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBzaXplX3QgY291bnQsIE5PRVNDQVBFIGNvbnN0IFNjb3Bl
ZExhbWJkYTxKU0M6OkpTVmFsdWUoc2l6ZV90KT4mIGVsZW1lbnRDYWxsYmFjaykKLXsKLSAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlz
dDsKLSAgICBsaXN0LmVuc3VyZUNhcGFjaXR5KGNvdW50KTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgbGlzdC5hcHBlbmQoZWxlbWVudENhbGxiYWNr
KGkpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAg
fQotICAgIGlmIChsaXN0Lmhhc092ZXJmbG93ZWQoKSkgW1t1bmxpa2VseV1dIHsKLSAgICAgICAg
SlNDOjp0aHJvd091dE9mTWVtb3J5RXJyb3IoJmdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U0M6OmNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTQzo6QXJyYXlB
bGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBsaXN0KSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBm
cmVlemVPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2Jq
ZWN0KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUo
Jmdsb2JhbE9iamVjdCwgb2JqZWN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nRmFjYWRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdGYWNhZGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzN2FjYTk0MTI3Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nRmFjYWRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0vLyBB
UEkgZmFjYWRlIGluIGZyb250IG9mIEpTQyB0aGF0IGF2b2lkcyBpbmNsdWRpbmcgZXhwZW5zaXZl
IEpTQyBoZWFkZXJzLgotCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0Vk0uaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lkZW50aWZpZXJJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5kZXhp
bmdUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDZWxsLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5l
cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVHlwZUluZm8uaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0
eU5hbWUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvcklubGluZXMuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3RydWN0dXJlQ3JlYXRlSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cnVjdHVyZUlubGluZXNMaWdodC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1Rocm93U2NvcGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Xcml0ZUJhcnJpZXJJbmxp
bmVzLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvU2NvcGVkTGFt
YmRhLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgSWRlbnRpZmllcjsKLWNsYXNzIEpTQXJy
YXk7Ci1jbGFzcyBKU0NlbGw7Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIEpTT2JqZWN0
OwotY2xhc3MgU2xvdFZpc2l0b3I7Ci1jbGFzcyBTdHJ1Y3R1cmU7Ci1jbGFzcyBWTTsKLXN0cnVj
dCBDbGFzc0luZm87Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwdXREaXJlY3QoSlNDOjpKU09iamVjdCosIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNDOjpKU09iamVjdCosIEpTQzo6Vk0mLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLVdF
QkNPUkVfRVhQT1JUIEpTQzo6SlNWYWx1ZSBnZXQoY29uc3QgSlNDOjpKU09iamVjdCosIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6
OkpTVmFsdWUgZ2V0RGlyZWN0KGNvbnN0IEpTQzo6SlNPYmplY3QqLCBKU0M6OlZNJiwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UHJvcGVydHlTbG90KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdldFByb3BlcnR5U2xvdChK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBjcmVhdGVEYXRhUHJvcGVy
dHkoSlNDOjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLQotV0VCQ09SRV9FWFBPUlQgSlND
OjpKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopOwot
V0VCQ09SRV9FWFBPUlQgSlNDOjpKU09iamVjdCogY29uc3RydWN0RW1wdHlPYmplY3QoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSk7Ci1XRUJDT1JFX0VYUE9S
VCBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpTdHJ1Y3R1cmUqKTsKLQotV0VCQ09SRV9FWFBPUlQgSlNDOjpQcm9wZXJ0eU9mZnNl
dCBzdHJ1Y3R1cmVHZXQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0M6OlZNJiwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZShKU0M6OlN0
cnVjdHVyZSosIGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNP
YmplY3QqIHN0b3JlZFByb3RvdHlwZU9iamVjdChKU0M6OlN0cnVjdHVyZSopOwotCi1XRUJDT1JF
X0VYUE9SVCBKU0M6OkpTVmFsdWUgYXJyYXlHZXREaXJlY3RJbmRleChKU0M6OkpTQXJyYXkqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOwotCi1XRUJDT1JFX0VYUE9SVCBKU0M6OkpT
VmFsdWUgaXRlcmF0b3JNZXRob2QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNPYmplY3Qq
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6SlNWYWx1ZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVJdGVyYXRvclJlc3VsdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
LCBib29sIGRvbmUpOwotCi1XRUJDT1JFX0VYUE9SVCBKU0M6OkNhbGxEYXRhIGdldENhbGxEYXRh
KEpTQzo6SlNWYWx1ZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkNhbGxEYXRhIGdldENvbnN0cnVj
dERhdGEoSlNDOjpKU1ZhbHVlKTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0l0ZXJhdG9yUHJv
dG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZShKU0M6OkpTQXJyYXkqKTsKLVdFQkNPUkVfRVhQT1JU
IEpTQzo6SlNBcnJheSogY29uc3RydWN0QXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IEpTQzo6QXJnTGlzdCYpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0FycmF5KiBjb25zdHJ1Y3RB
cnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpKU1ZhbHVlKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLQotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU0FycmF5KiB0cnlHZXRGYXN0SXRlcmFi
bGVKU0FycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOwotV0VCQ09SRV9F
WFBPUlQgdm9pZCBmb3JFYWNoSW5Db250aWd1b3VzSlNBcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU0FycmF5KiwgTk9FU0NBUEUgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoSlNDOjpK
U1ZhbHVlKT4mKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaEluSXRlcmFibGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBpdGVyYWJsZSwgTk9FU0NBUEUgY29uc3QgU2Nv
cGVkTGFtYmRhPHZvaWQoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFs
dWUpPiYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSBtZXRob2QsIE5PRVNDQVBF
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlKT4mKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNBcnJheSogY29uc3RydWN0
QXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIHNpemVfdCwgTk9FU0NBUEUgY29uc3QgU2NvcGVk
TGFtYmRhPEpTQzo6SlNWYWx1ZShzaXplX3QpPiYpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpKU1Zh
bHVlIGZyZWV6ZU9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCopOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCA3ZjYyNjU3NTkxYzguLjcxYTU4
NDRmODU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CdWls
dGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJ1
aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcmdMaXN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNET01C
aW5kaW5nRmFjYWRlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlQ3JlYXRl
SW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDcgKzY3LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpT
Q2xhc3M+KiBKU0RPTUJ1aWx0aW4KIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5l
IEpTQzo6U3RydWN0dXJlKiBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgYXV0byogc3RydWN0dXJlID0gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok5vbkFycmF5KTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIHN0cnVjdHVy
ZS0+c2V0TWF5QmVQcm90b3R5cGUodHJ1ZSk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KQEAg
LTc2LDcgKzc2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNE
T01CdWlsdGluQ29uc3RydWN0b3I8SlNDbGFzcz46OmZpbmlzaEMKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzU2xvdyhpbmZvKCkpKTsKLSAgICBT
VVBQUkVTU19GT1JXQVJEX0RFQ0xfQVJHIHNldEluaXRpYWxpemVGdW5jdGlvbih2bSwgKkpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBpbml0aWFsaXplRXhlY3V0YWJs
ZSh2bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBzZXRJbml0aWFsaXplRnVuY3Rpb24odm0sICpK
U0M6OkpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgaW5pdGlhbGl6ZUV4ZWN1
dGFibGUodm0pLCAmZ2xvYmFsT2JqZWN0KSk7CiAgICAgaW5pdGlhbGl6ZVByb3BlcnRpZXModm0s
IGdsb2JhbE9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3IuaAppbmRleCAzZDA0YWU2MmYxYTIuLmIxY2I1NGZiODMzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaApAQCAtMjAsNyArMjAs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yQmFzZS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nRmFjYWRlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3RydWN0dXJlQ3JlYXRlSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
RE9NQ29uc3RydWN0b3I8SlNDbGFzcz4qIEpTRE9NQ29uc3RydWN0b3I8SlMKIAogdGVtcGxhdGU8
dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBKU0RPTUNvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBhdXRvKiBz
dHJ1Y3R1cmUgPSBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6OkludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgc3RydWN0dXJlLT5zZXRNYXlCZVByb3RvdHlwZSh0cnVlKTsKICAgICByZXR1cm4g
c3RydWN0dXJlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db25zdHJ1Y3Rvck5vdENhbGxhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnN0cnVjdG9yTm90Q2FsbGFibGUuaAppbmRleCBlOTUwYTFhOTBhMzEuLjcxYWQxYzll
YmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3Rvck5vdENhbGxhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b25zdHJ1Y3Rvck5vdENhbGxhYmxlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cnVjdHVyZUNyZWF0ZUlubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
Myw3ICs3Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNvbnN0
cnVjdG9yTm90Q2FsbGFibGU8SlNDbGFzcz4qIEpTRE9NQ29uCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogSlNET01Db25zdHJ1Y3Rvck5vdENhbGxh
YmxlPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBhdXRv
KiBzdHJ1Y3R1cmUgPSBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIHN0cnVjdHVy
ZS0+c2V0TWF5QmVQcm90b3R5cGUodHJ1ZSk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oCmluZGV4IDAyYTNkOGFiOTNjYy4uOThmNmEwZDI5M2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3RvckJhc2UuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0pTRE9NQmluZGluZ0ZhY2FkZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVy
ZUNyZWF0ZUlubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU0NsYXNzPiogSlNECiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+
IGlubGluZSBKU0M6OlN0cnVjdHVyZSogSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNDbGFzcz46OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIGF1dG8qIHN0
cnVjdHVyZSA9IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgYXV0byogc3RydWN0dXJlID0gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6SW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICBzdHJ1Y3R1cmUtPnNldE1heUJlUHJvdG90eXBlKHRydWUpOwogICAgIHJldHVybiBz
dHJ1Y3R1cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRCdWZmZXJTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydEJ1ZmZlclNvdXJjZS5oCmluZGV4IDM2Y2U2NGY1MzRmZC4uNWM1NDBlN2RmYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZmZXJT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRCdWZm
ZXJTb3VyY2UuaApAQCAtMjUsOSArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc0xpZ2h0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNUeXBlZEFycmF5cy5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CdWZmZXJTb3VyY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0lETFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RP
TUNvbnZlcnRCYXNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydEludGVyZmFjZS5oCmluZGV4IGFiMzI5ZmYxZTE4My4uZWFhMTk1MzY4MjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2Uu
aApAQCAtMjYsOCArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9FcnJvci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldFZNLmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lETFR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUNvbnZlcnRCYXNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9KU0RPTUdsb2JhbE9iamVjdC5oPgpAQCAtMTYwLDcgKzE1OSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IHsKIAog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
YXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IFdlYkNv
cmU6OmNvbnZlcnQ8SURMSW50ZXJmYWNlPFQ+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdW1i
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdW1iZXJzLmgK
aW5kZXggYTYzNjFmY2QyNjY0Li5lOTU5YzBjYzc1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydE51bWJlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnROdW1iZXJzLmgKQEAgLTI1LDggKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXRWTS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UHVyZU5hTi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURMVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0pTRE9NQ29udmVydEJhc2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0UmVjb3JkLmgKaW5kZXggZDBkZmQwNzZjY2MzLi5kMzEzMjdkNWQ0OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFJlY29yZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFJlY29yZC5oCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1
Y3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURMVHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0pTRE9NQmluZGluZ0ZhY2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01Db252ZXJ0U3Ry
aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9iYWxPYmplY3QuaD4KIApAQCAtMTI3
LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFzbG90LmlzVGFpbnRl
ZEJ5T3BhcXVlT2JqZWN0KCkpIFtbbGlrZWx5XV0KICAgICAgICAgICAgICAgICAgICAgc3ViVmFs
dWUgPSBzbG90LmdldFZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBrZXkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ViVmFsdWUgPSBXZWJDb3JlOjpnZXQo
b2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5KTsKKyAgICAgICAgICAgICAgICAgICAg
c3ViVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwga2V5KTsKICAgICAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBSZXN1bHQ6OmV4Y2VwdGlvbigp
KTsKIAogICAgICAgICAgICAgICAgIC8vIDMuIExldCB0eXBlZFZhbHVlIGJlIHZhbHVlIGNvbnZl
cnRlZCB0byBhbiBJREwgdmFsdWUgb2YgdHlwZSBWLgpAQCAtMTY5LDcgKzE2OCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExSZWNvcmQ8
SywgVj4+IHsKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICAKICAgICAgICAgLy8gMS4gTGV0IHJlc3VsdCBiZSAhIE9iamVjdENyZWF0ZSgl
T2JqZWN0UHJvdG90eXBlJSkuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3Ry
dWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQ
cm90b3R5cGUoKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
JmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CiAg
ICAgICAgIAogICAgICAgICAvLyAyLiBSZXBlYXQsIGZvciBlYWNoIG1hcHBpbmcgKGtleSwgdmFs
dWUpIGluIEQ6CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5VmFsdWVQYWlyIDogbWFwKSB7
CkBAIC0xODEsNyArMTgwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3Ry
dWN0IEpTQ29udmVydGVyPElETFJlY29yZDxLLCBWPj4gewogICAgICAgICAgICAgYXV0byBlc1Zh
bHVlID0gdG9KUzxWPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGtleVZhbHVl
UGFpci52YWx1ZSk7CiAKICAgICAgICAgICAgIC8vIDMuIExldCBjcmVhdGVkIGJlICEgQ3JlYXRl
RGF0YVByb3BlcnR5KHJlc3VsdCwgZXNLZXksIGVzVmFsdWUpLgotICAgICAgICAgICAgYm9vbCBj
cmVhdGVkID0gV2ViQ29yZTo6Y3JlYXRlRGF0YVByb3BlcnR5KHJlc3VsdCwgJmxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwga2V5VmFsdWVQYWlyLmtl
eSksIGVzVmFsdWUsIHRydWUpOworICAgICAgICAgICAgYm9vbCBjcmVhdGVkID0gcmVzdWx0LT5j
cmVhdGVEYXRhUHJvcGVydHkoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwga2V5VmFsdWVQYWlyLmtleSksIGVzVmFsdWUsIHRydWUpOwogCiAgICAg
ICAgICAgICAvLyA0LiBBc3NlcnQ6IGNyZWF0ZWQgaXMgdHJ1ZS4KICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY3JlYXRlZCwgY3JlYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFNlcXVlbmNlcy5oCmluZGV4IGZhMzA1ZTNiY2UwMC4uNjI3Mjk0
ZDUyZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRTZXF1ZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRTZXF1ZW5jZXMuaApAQCAtMjUsMTIgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXJnTGlzdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0J1dHRlcmZseUlubGluZXNMaWdodC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJh
dG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURMVHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01Db252ZXJ0QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNE
T01Db252ZXJ0TnVtYmVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9iYWxPYmplY3Qu
aD4KQEAgLTg1LDEzICs4NCwxMyBAQCBzdHJ1Y3QgR2VuZXJpY1NlcXVlbmNlQ29udmVydGVyIHsK
IAogICAgIHN0YXRpYyBSZXN1bHQgY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBvYmplY3QsIFNlcXVlbmNlVHlwZSYmIHNlcXVl
bmNlKQogICAgIHsKLSAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgV2Vi
Q29yZTo6Zm9yRWFjaEluSXRlcmFibGUoJmxleGljYWxHbG9iYWxPYmplY3QsIG9iamVjdCwgc2Nv
cGVkTGFtYmRhPHZvaWQoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFs
dWUpPihbJnNlcXVlbmNlXShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIG5leHRWYWx1ZSkgeworICAgICAgICBmb3JFYWNo
SW5JdGVyYWJsZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBbJnNlcXVlbmNlXShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIG5leHRWYWx1ZSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgICAgICAgICBJbm5lckNvbnZlcnRlcjo6Y29udmVydChzY29w
ZSwgKmxleGljYWxHbG9iYWxPYmplY3QsIG5leHRWYWx1ZSwgc2VxdWVuY2UpOwotICAgICAgICB9
KSk7CisgICAgICAgIH0pOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBSZXN1
bHQ6OmV4Y2VwdGlvbigpKTsKIAogICAgICAgICByZXR1cm4gUmVzdWx0IHsgV1RGOjptb3ZlKHNl
cXVlbmNlKSB9OwpAQCAtMTA0LDEzICsxMDMsMTMgQEAgc3RydWN0IEdlbmVyaWNTZXF1ZW5jZUNv
bnZlcnRlciB7CiAKICAgICBzdGF0aWMgUmVzdWx0IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkpTVmFs
dWUgbWV0aG9kLCBTZXF1ZW5jZVR5cGUmJiBzZXF1ZW5jZSkKICAgICB7Ci0gICAgICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIGF1dG8mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIFdlYkNvcmU6OmZvckVhY2hJbkl0ZXJhYmxlKGxl
eGljYWxHbG9iYWxPYmplY3QsIG9iamVjdCwgbWV0aG9kLCBzY29wZWRMYW1iZGE8dm9pZChKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk+KFsmc2VxdWVuY2VdKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgbmV4dFZhbHVlKSB7CisgICAgICAgIGZvckVhY2hJbkl0ZXJhYmxlKGxleGljYWxH
bG9iYWxPYmplY3QsIG9iamVjdCwgbWV0aG9kLCBbJnNlcXVlbmNlXShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIG5leHRW
YWx1ZSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgICAgICAgICBJbm5lckNvbnZlcnRlcjo6Y29udmVydChzY29wZSwgbGV4aWNhbEds
b2JhbE9iamVjdCwgbmV4dFZhbHVlLCBzZXF1ZW5jZSk7Ci0gICAgICAgIH0pKTsKKyAgICAgICAg
fSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFJlc3VsdDo6ZXhjZXB0aW9u
KCkpOwogCiAgICAgICAgIHJldHVybiBSZXN1bHQgeyBXVEY6Om1vdmUoc2VxdWVuY2UpIH07CkBA
IC0xNzYsNyArMTc1LDcgQEAgc3RydWN0IE51bWVyaWNTZXF1ZW5jZUNvbnZlcnRlckltcGwgewog
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQ29udmVydGVyOjpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIG9iamVjdCkpOwogCiAgICAgICAgIEpTQzo6SlNB
cnJheSogYXJyYXkgPSBKU0M6OmFzQXJyYXkob2JqZWN0KTsKLSAgICAgICAgaWYgKCFXZWJDb3Jl
Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZShhcnJheSkpCisgICAgICAg
IGlmICghYXJyYXktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkpCiAg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEdlbmVyaWNDb252ZXJ0ZXI6OmNv
bnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0KSk7CiAKICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwpAQCAtMTg0LDcgKzE4Myw3IEBAIHN0cnVjdCBOdW1l
cmljU2VxdWVuY2VDb252ZXJ0ZXJJbXBsIHsKICAgICAgICAgLy8gSWYgd2UncmUgbm90IGFuIGlu
dDMyL2RvdWJsZSBhcnJheSwgaXQncyBwb3NzaWJsZSB0aGF0IGNvbnZlcnRpbmcgYQogICAgICAg
ICAvLyBKU1ZhbHVlIHRvIGEgbnVtYmVyIGNvdWxkIGNhdXNlIHRoZSBpdGVyYXRvciBwcm90b2Nv
bCB0byBjaGFuZ2UsIGhlbmNlLAogICAgICAgICAvLyB3ZSBtYXkgbmVlZCBtb3JlIGNhcGFjaXR5
LCBvciBsZXNzLiBJbiBzdWNoIGNhc2VzLCB3ZSB1c2UgdGhlIGxlbmd0aAotICAgICAgICAvLyBh
cyBhIHByb3h5IGZvciB0aGUgY2FwYWNpdHkgd2Ugd2lsbCBtb3N0IGxpa2VseSBuZWVkIChpdCdz
IHVubGlrZWx5IHRoYXQKKyAgICAgICAgLy8gYXMgYSBwcm94eSBmb3IgdGhlIGNhcGFjaXR5IHdl
IHdpbGwgbW9zdCBsaWtlbHkgbmVlZCAoaXQncyB1bmxpa2VseSB0aGF0IAogICAgICAgICAvLyBh
IHByb2dyYW0gaXMgd3JpdHRlbiB3aXRoIGEgdmFsdWVPZiB0aGF0IHdpbGwgYXVnbWVudCB0aGUg
aXRlcmF0b3IgcHJvdG9jb2wpLgogICAgICAgICAvLyBJZiB3ZSBhcmUgYW4gaW50MzIvZG91Ymxl
IGFycmF5LCB0aGVuIGxlbmd0aCBpcyBwcmVjaXNlbHkgdGhlIGNhcGFjaXR5IHdlIG5lZWQuCiAg
ICAgICAgIGlmICghc2VxdWVuY2UudHJ5UmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCkpIHsKQEAgLTE5
Miw3ICsxOTEsNyBAQCBzdHJ1Y3QgTnVtZXJpY1NlcXVlbmNlQ29udmVydGVySW1wbCB7CiAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAg
ICAgICAgICAgcmV0dXJuIFJlc3VsdDo6ZXhjZXB0aW9uKCk7CiAgICAgICAgIH0KLQorICAgICAg
ICAKICAgICAgICAgSlNDOjpJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gYXJyYXktPmluZGV4
aW5nVHlwZSgpICYgSlNDOjpJbmRleGluZ1NoYXBlTWFzazsKICAgICAgICAgaWYgKGluZGV4aW5n
VHlwZSAhPSBKU0M6OkludDMyU2hhcGUgJiYgaW5kZXhpbmdUeXBlICE9IEpTQzo6RG91YmxlU2hh
cGUpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEdlbmVyaWNDb252ZXJ0
ZXI6OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0LCBXVEY6Om1vdmUoc2VxdWVu
Y2UpKSk7CkBAIC0yMDksNyArMjA4LDcgQEAgc3RydWN0IE51bWVyaWNTZXF1ZW5jZUNvbnZlcnRl
ckltcGwgewogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBHZW5lcmljQ29u
dmVydGVyOjpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIG9iamVjdCwgbWV0aG9kKSk7CiAK
ICAgICAgICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IEpTQzo6YXNBcnJheShvYmplY3QpOwotICAg
ICAgICBpZiAoIVdlYkNvcmU6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxl
KGFycmF5KSkKKyAgICAgICAgaWYgKCFhcnJheS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgR2Vu
ZXJpY0NvbnZlcnRlcjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QsIG1ldGhv
ZCkpOwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsKQEAgLTIx
Nyw3ICsyMTYsNyBAQCBzdHJ1Y3QgTnVtZXJpY1NlcXVlbmNlQ29udmVydGVySW1wbCB7CiAgICAg
ICAgIC8vIElmIHdlJ3JlIG5vdCBhbiBpbnQzMi9kb3VibGUgYXJyYXksIGl0J3MgcG9zc2libGUg
dGhhdCBjb252ZXJ0aW5nIGEKICAgICAgICAgLy8gSlNWYWx1ZSB0byBhIG51bWJlciBjb3VsZCBj
YXVzZSB0aGUgaXRlcmF0b3IgcHJvdG9jb2wgdG8gY2hhbmdlLCBoZW5jZSwKICAgICAgICAgLy8g
d2UgbWF5IG5lZWQgbW9yZSBjYXBhY2l0eSwgb3IgbGVzcy4gSW4gc3VjaCBjYXNlcywgd2UgdXNl
IHRoZSBsZW5ndGgKLSAgICAgICAgLy8gYXMgYSBwcm94eSBmb3IgdGhlIGNhcGFjaXR5IHdlIHdp
bGwgbW9zdCBsaWtlbHkgbmVlZCAoaXQncyB1bmxpa2VseSB0aGF0CisgICAgICAgIC8vIGFzIGEg
cHJveHkgZm9yIHRoZSBjYXBhY2l0eSB3ZSB3aWxsIG1vc3QgbGlrZWx5IG5lZWQgKGl0J3MgdW5s
aWtlbHkgdGhhdCAKICAgICAgICAgLy8gYSBwcm9ncmFtIGlzIHdyaXR0ZW4gd2l0aCBhIHZhbHVl
T2YgdGhhdCB3aWxsIGF1Z21lbnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sKS4KICAgICAgICAgLy8g
SWYgd2UgYXJlIGFuIGludDMyL2RvdWJsZSBhcnJheSwgdGhlbiBsZW5ndGggaXMgcHJlY2lzZWx5
IHRoZSBjYXBhY2l0eSB3ZSBuZWVkLgogICAgICAgICBpZiAoIXNlcXVlbmNlLnRyeVJlc2VydmVD
YXBhY2l0eShsZW5ndGgpKSB7CkBAIC0yMjUsNyArMjI0LDcgQEAgc3RydWN0IE51bWVyaWNTZXF1
ZW5jZUNvbnZlcnRlckltcGwgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiBSZXN1bHQ6OmV4Y2VwdGlv
bigpOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIEpTQzo6SW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSA9IGFycmF5LT5pbmRleGluZ1R5cGUoKSAmIEpTQzo6SW5kZXhpbmdTaGFwZU1h
c2s7CiAgICAgICAgIGlmIChpbmRleGluZ1R5cGUgIT0gSlNDOjpJbnQzMlNoYXBlICYmIGluZGV4
aW5nVHlwZSAhPSBKU0M6OkRvdWJsZVNoYXBlKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBHZW5lcmljQ29udmVydGVyOjpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3Qs
IG9iamVjdCwgbWV0aG9kLCBXVEY6Om1vdmUoc2VxdWVuY2UpKSk7CkBAIC0yNDUsNyArMjQ0LDcg
QEAgc3RydWN0IFNlcXVlbmNlQ29udmVydGVySW1wbCB7CiAKICAgICBzdGF0aWMgUmVzdWx0IGNv
bnZlcnRBcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTQXJyYXkqIGFycmF5KQogICAgIHsKLSAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0aCgpOwogCkBAIC0yNzEsNyAr
MjcwLDcgQEAgc3RydWN0IFNlcXVlbmNlQ29udmVydGVySW1wbCB7CiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IGF1dG8gaW5kZXhWYWx1ZSA9IFdlYkNvcmU6OmFycmF5R2V0RGlyZWN0SW5kZXgoYXJyYXksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGF1dG8gaW5kZXhWYWx1ZSA9IGFy
cmF5LT5nZXREaXJlY3RJbmRleCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBSZXN1bHQ6OmV4Y2VwdGlvbigpKTsKIAogICAg
ICAgICAgICAgaWYgKCFpbmRleFZhbHVlKQpAQCAtMzAxLDkgKzMwMCw5IEBAIHN0cnVjdCBTZXF1
ZW5jZUNvbnZlcnRlckltcGwgewogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCAoR2VuZXJpY0NvbnZlcnRlcjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3Qp
KSk7CiAKICAgICAgICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IEpTQzo6YXNBcnJheShvYmplY3Qp
OwotICAgICAgICBpZiAoIVdlYkNvcmU6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNl
cnZhYmxlKGFycmF5KSkKKyAgICAgICAgaWYgKCFhcnJheS0+aXNJdGVyYXRvclByb3RvY29sRmFz
dEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgKEdlbmVyaWNDb252ZXJ0ZXI6OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0
KSkpOwotCisgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIChjb252
ZXJ0QXJyYXkobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJyYXkpKSk7CiAgICAgfQogCkBAIC0zMTYs
NyArMzE1LDcgQEAgc3RydWN0IFNlcXVlbmNlQ29udmVydGVySW1wbCB7CiAgICAgICAgICAgICBy
ZXR1cm4gR2VuZXJpY0NvbnZlcnRlcjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmpl
Y3QsIG1ldGhvZCk7CiAKICAgICAgICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IEpTQzo6YXNBcnJh
eShvYmplY3QpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RB
bmROb25PYnNlcnZhYmxlKGFycmF5KSkKKyAgICAgICAgaWYgKCFhcnJheS0+aXNJdGVyYXRvclBy
b3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBHZW5lcmlj
Q29udmVydGVyOjpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIG9iamVjdCwgbWV0aG9kKTsK
IAogICAgICAgICByZXR1cm4gY29udmVydEFycmF5KGxleGljYWxHbG9iYWxPYmplY3QsIGFycmF5
KTsKQEAgLTM3Niw3ICszNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4gc3Ry
dWN0IEpTQ29udmVydGVyPElETFNlcXVlbmNlPFQsIE4+PiB7CiAgICAgICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBXZWJDb3JlOjpjb25zdHJ1Y3RBcnJheSgmZ2xvYmFsT2JqZWN0LCBsaXN0KSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjpjb25zdHJ1Y3RBcnJheSgmZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxKU0M6OkFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwg
bGlzdCkpOwogICAgIH0KIH07CiAKQEAgLTQwMCwxMCArMzk5LDExIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBOPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMRnJvemVuQXJyYXk8VCwgTj4+
IHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBh
dXRvKiBhcnJheSA9IFdlYkNvcmU6OmNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIGxpc3Qp
OworICAgICAgICBhdXRvKiBhcnJheSA9IEpTQzo6Y29uc3RydWN0QXJyYXkoJmdsb2JhbE9iamVj
dCwgc3RhdGljX2Nhc3Q8SlNDOjpBcnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIGxp
c3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUoJmxl
eGljYWxHbG9iYWxPYmplY3QsIGFycmF5KSk7CiAgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRVbmlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5p
b24uaAppbmRleCBiMmE4ZjM4MGYyOTIuLjUxMmYwN2ZiYzBkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC0yNSwxMCArMjUsMTAgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9wZXJh
dGlvbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5QnVmZmVyVmlld0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lETFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9K
U0RPTUJpbmRpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01Db252ZXJ0QmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01Db252ZXJ0Qm9vbGVhbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01Db252ZXJ0QnVm
ZmVyU291cmNlLmg+CkBAIC0zMDEsNyArMzAxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4g
c3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFUK
ICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAyLiBJZiBtZXRob2QgaXMgbm90IHVuZGVm
aW5lZCwgcmV0dXJuIHRoZSByZXN1bHQgb2YgY3JlYXRpbmcgYSBzZXF1ZW5jZSBvZiB0aGF0IHR5
cGUgZnJvbSBWIGFuZCBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBib29s
IGhhc1NlcXVlbmNlVHlwZSA9IG51bWJlck9mU2VxdWVuY2VUeXBlcyAhPSAwOwogICAgICAgICAg
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKGhhc1NlcXVlbmNlVHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBXZWJDb3JlOjppdGVyYXRvck1ldGhvZCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWV0
aG9kID0gSlNDOjppdGVyYXRvck1ldGhvZCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3RvcihDb252ZXJzaW9uUmVzdWx0RXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZXRob2QuaXNVbmRlZmluZWQo
KSkgewpAQCAtMzE1LDcgKzMxNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBD
b252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExVCiAgICAgICAg
ICAgICAgICAgICAgIC8vICAgICAgICAgMi4gSWYgbWV0aG9kIGlzIG5vdCB1bmRlZmluZWQsIHJl
dHVybiB0aGUgcmVzdWx0IG9mIGNyZWF0aW5nIGEgZnJvemVuIGFycmF5IG9mIHRoYXQgdHlwZSBm
cm9tIFYgYW5kIG1ldGhvZC4KICAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIGJvb2wgaGFz
RnJvemVuQXJyYXlUeXBlID0gbnVtYmVyT2ZGcm96ZW5BcnJheVR5cGVzICE9IDA7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaGFzRnJvemVuQXJyYXlUeXBlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IFdlYkNvcmU6Oml0ZXJhdG9yTWV0aG9kKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBtZXRob2QgPSBKU0M6Oml0ZXJhdG9yTWV0aG9kKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBvYmpl
Y3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdG9yKENvbnZlcnNpb25SZXN1bHRF
eGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldGhvZC5pc1VuZGVm
aW5lZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRXZWJHTC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2Vi
R0wuaAppbmRleCAwYTU1Mzk4MWUyZjAuLjA4ZDYwMDE3OWZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5oCkBAIC0yOSwxNCArMjksOSBAQAog
CiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCi0j
aW5jbHVkZSAiV2ViR0xBbnkuaCIKLSNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbkFueS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBJRExXZWJHTEFueSA6IElETFR5cGU8V2ViR0xB
bnk+IHsgfTsKLXN0cnVjdCBJRExXZWJHTEV4dGVuc2lvbkFueSA6IElETFR5cGU8V2ViR0xFeHRl
bnNpb25Bbnk+IHsgfTsKLQogSlNDOjpKU1ZhbHVlIGNvbnZlcnRUb0pTVmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgV2ViR0xBbnkmKTsKIEpTQzo6
SlNWYWx1ZSBjb252ZXJ0VG9KU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFdlYkdMRXh0ZW5zaW9uQW55KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDI1N2E2MjE3MGJhNS4uNjM0MDg2
N2EwOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCkBAIC03MzAsNyArNzMwLDcgQEAgSlNDOjpKU09iamVjdCogSlNET01HbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTQzo6SlMKICAg
ICBKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IHVuY2hlY2tlZERvd25jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QpOwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBzY3Jp
cHRNb2R1bGVMb2FkZXIodGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBsb2FkZXItPmNyZWF0
ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKGdsb2JhbE9iamVjdCwgbW9kdWxlTG9hZGVyLCBtb2R1bGVL
ZXksIG1vZHVsZVJlY29yZCwgV1RGOjptb3ZlKHNjcmlwdEZldGNoZXIpKTsKLSAgICByZXR1cm4g
SlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVj
dC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0
RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiB9CiAKIEpTQzo6SlNHbG9iYWxPYmplY3QqIEpTRE9NR2xv
YmFsT2JqZWN0OjpkZXJpdmVTaGFkb3dSZWFsbUdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oCmluZGV4IGE3MmU0NjgzNzJiOC4uMGJkZmEwODg0
ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdElubGluZXMuaApAQCAtMjcsMTYgKzI3LDE1IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkRPTUNvbnN0cnVjdG9ycy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5o
IgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxQcm94eS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dyaXRlQmFycmll
cklubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVDcmVhdGVJbmxpbmVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIEpTQzo6U3RydWN0dXJlKiBKU0RPTUdsb2JhbE9i
amVjdDo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBudWxscHRyLCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIDAsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogaW5saW5lIEpTRE9NU3RydWN0dXJl
TWFwJiBKU0RPTUdsb2JhbE9iamVjdDo6c3RydWN0dXJlcyhOb0xvY2tpbmdOZWNlc3NhcnlUYWcp
IExJRkVUSU1FX0JPVU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
LmgKaW5kZXggYjU4YTkwMDQxNGMyLi41NzQzYTk4ZWIzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTSXRlcmF0b3JQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Qcm9wZXJ0eVNsb3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0Zh
Y2FkZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUNyZWF0ZUlubGluZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQ29udmVydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTF9BVFRSSUJVVEVTIG5leHQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZy
YW1lKik7CkBAIC0xMzIsNyArMTMyLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QKICAgICBh
cmd1bWVudHMuYXBwZW5kKHZhbHVlMSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZTIpOwog
ICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OmNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIGFyZ3VtZW50cyk7CisgICAgcmV0dXJu
IGNvbnN0cnVjdEFycmF5KCZnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTQzo6QXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBhcmd1bWVudHMpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFR5cGUsIHR5cGVuYW1lIFNlY29uZFR5cGUsIHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IApAQCAtMjIxLDcgKzIyMSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTSXRlcmF0b3I+IEpT
Qzo6SlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpKU0dsb2JhbE9iamVjdCYKICAgICBKU0M6
OkpTVmFsdWUgY2FsbGJhY2sgPSBjYWxsRnJhbWUuYXJndW1lbnQoMCk7CiAgICAgSlNDOjpKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS5hcmd1bWVudCgxKTsKIAotICAgIGF1dG8gY2FsbERh
dGEgPSBXZWJDb3JlOjpnZXRDYWxsRGF0YShjYWxsYmFjayk7CisgICAgYXV0byBjYWxsRGF0YSA9
IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2spOwogICAgIGlmIChjYWxsRGF0YS50eXBlID09IEpT
Qzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY2FsbCBjYWxsYmFjayJfcyk7CiAK
QEAgLTI1NSwxMCArMjU1LDEwIEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yQmFzZTxKU1dy
YXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6bmV4dChKU0M6OkpTR2xvYmFsT2JqCiAgICAgaWYgKG1f
aXRlcmF0b3IpIHsKICAgICAgICAgYXV0byBpdGVyYXRvclZhbHVlID0gbV9pdGVyYXRvci0+bmV4
dCgpOwogICAgICAgICBpZiAoaXRlcmF0b3JWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgYXNK
UyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVyYXRvclZhbHVlKSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhc0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGl0ZXJhdG9yVmFsdWUpLCBmYWxzZSk7CiAgICAg
ICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIHJldHVybiBXZWJDb3Jl
OjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpq
c1VuZGVmaW5lZCgpLCB0cnVlKTsKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmpl
Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNVbmRlZmluZWQoKSwgdHJ1ZSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+CkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlciwg
SXRlcmF0b3JUcmFpdHM+OjpmaW5pc2hDcmVhdGlvbihKU0M6OlZNJgogICAgIEFTU0VSVChpbmhl
cml0c1Nsb3coaW5mbygpKSk7CiAKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBuZXh0LCAwLCAwLCBKU0M6OkltcGxlbWVu
dGF0aW9uVmlzaWJpbGl0eTo6UHVibGljKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2ws
IEpTQzo6anNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0
b3J5RnVuY3Rpb24uaAppbmRleCBmZGYzYjBlNzNlODguLjFkNDY0OWIyZjNkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5oCkBAIC0yMCw3ICsyMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGlu
Z0ZhY2FkZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUNyZWF0ZUlubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2MSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0Ns
YXNzPiogSlNET01MZWdhCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6
OlN0cnVjdHVyZSogSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz46OmNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkp
OworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxp
bmUgdm9pZCBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExpa2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NYXBMaWtlLmNwcAppbmRleCA2YTVmOGFiMDA0NGIu
LmI3ODI1ZWVkMDljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01NYXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1hcExp
a2UuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJXZWJDb3JlSlNCdWlsdGluSW50
ZXJuYWxzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU01h
cC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1RvcEV4Y2VwdGlvblNjb3BlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVk1UcmFwc0lubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggN2RiYWIwNzk0ZTFkLi4yNDU1MzEx
MDY1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CkBAIC0xOSwxMCArMTksMTYgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9M
b29rdXAuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9ySW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Xcml0ZUJhcnJpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9KU0RPTVdyYXBwZXJDYWNoZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGFhNmNlYjE0ODIzNy4uOWJkMTAxYWI3YWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZUJvZHkoSlMKICAgICBpZiAo
IURlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6d2ViU1FMRW5hYmxlZCgpKSB7CiAgICAgICAgIGlm
IChuYW1lLnJldHVyblZhbHVlKCkgIT0gIm51bGwiX3MgfHwgdmVyc2lvbi5yZXR1cm5WYWx1ZSgp
ICE9ICJudWxsIl9zIHx8IGRpc3BsYXlOYW1lLnJldHVyblZhbHVlKCkgIT0gIm51bGwiX3MgfHwg
ZXN0aW1hdGVkU2l6ZS5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0
aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBFeGNlcHRpb24oRXhjZXB0aW9u
Q29kZTo6VW5rbm93bkVycm9yLCAiV2ViIFNRTCBpcyBkZXByZWNhdGVkIl9zKSk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5yZWFsbSgpLT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPnJlYWxtKCktPm9iamVjdFByb3RvdHlwZSgpKSk7
CiAgICAgfQogCiAgICAgYXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJs
ZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSwgKmNhc3RlZFRoaXMtPnJlYWxtKCksIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3Bw
CmluZGV4IDkzNTQ3YmI1ZDg4NS4uY2MyMTA4OTAwMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXJyb3IuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsMTEgKzQz
LDYgQEAgSlNET01PYmplY3Q6OkpTRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE8KICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIHx8IGdsb2JhbE9iamVjdC5jbGFzc0luZm8oKSA9PSBKU0RPTVdpbmRvdzo6aW5m
bygpKTsKIH0KIAotdm9pZCBKU0RPTU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotfQotCiBKU0M6OkpTVmFsdWUgY2xv
bmVBY3Jvc3NXb3JsZHMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
Y29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaAppbmRleCBhZDhmN2JjNWE0NTAuLmM0OWM1MWFiOGY3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTc4LDcgKzc4LDYgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNET01PYmplY3QoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0M6OlZNJik7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsZW1lbnRhdGlv
bkNsYXNzLCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBSYXdQdHJUcmFpdHM8SW1wbGVtZW50YXRpb25D
bGFzcz4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXJDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUu
aAppbmRleCAxZWQ4NGRjYzRkODguLmU3NGViZDg4ZDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXJDYWNoZS5oCkBAIC0yMywxNiArMjMsMTQgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXRWTS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0ludGVybmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Fy
cmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmUuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vhay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ET01XcmFwcGVyV29ybGQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2Fk
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01HbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0pTRE9NV3JhcHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oPgpAQCAtOTksNyArOTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xh
c3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRE
T01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZU9iamVjdChnZXRET01TdHJ1
Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwgZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGFzT2Jq
ZWN0KGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KHZtLCBnbG9iYWxPYmplY3QpLT5zdG9y
ZWRQcm90b3R5cGUoKSk7CiB9CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYWViM2Jl
ZDYzNzRjLi4zOTgzZGFiYmYyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmNwcApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRF
bGVtZW50c0FycmF5QXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjbwogICAgIGlmIChjYWNoZWRPYmplY3RWYWx1ZSkKICAgICAgICAgY2FjaGVkT2JqZWN0ID0g
YXNPYmplY3QoY2FjaGVkT2JqZWN0VmFsdWUpOwogICAgIGVsc2UgewotICAgICAgICBjYWNoZWRP
YmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCB0aGlzT2JqZWN0LnJlYWxtKCkt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGNhY2hlZE9iamVjdCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCB0aGlzT2JqZWN0LnJlYWxtKCktPm51bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGNvbnN0X2Nhc3Q8SlNFbGVtZW50Jj4odGhp
c09iamVjdCkucHV0RGlyZWN0KHZtLCBidWlsdGluTmFtZXModm0pLmNhY2hlZEF0dHJBc3NvY2lh
dGVkRWxlbWVudHNQcml2YXRlTmFtZSgpLCBjYWNoZWRPYmplY3QpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50SW50ZXJuYWxzQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEludGVybmFsc0N1c3Rv
bS5jcHAKaW5kZXggNDhlYTIwZTcwMmJjLi4yY2U1Y2IyN2FkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEludGVybmFsc0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50SW50ZXJuYWxzQ3VzdG9tLmNwcApA
QCAtODUsNyArODUsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRFbGVtZW50c0FycmF5QXR0cmlidXRl
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjbwogICAgIGlmIChjYWNoZWRP
YmplY3RWYWx1ZSkKICAgICAgICAgY2FjaGVkT2JqZWN0ID0gYXNPYmplY3QoY2FjaGVkT2JqZWN0
VmFsdWUpOwogICAgIGVsc2UgewotICAgICAgICBjYWNoZWRPYmplY3QgPSBKU0M6OmNvbnN0cnVj
dEVtcHR5T2JqZWN0KHZtLCB0aGlzT2JqZWN0LnJlYWxtKCktPm51bGxQcm90b3R5cGVPYmplY3RT
dHJ1Y3R1cmUoKSk7CisgICAgICAgIGNhY2hlZE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KHZtLCB0aGlzT2JqZWN0LnJlYWxtKCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7
CiAgICAgICAgIGNvbnN0X2Nhc3Q8SlNFbGVtZW50SW50ZXJuYWxzJj4odGhpc09iamVjdCkucHV0
RGlyZWN0KHZtLCBidWlsdGluTmFtZXModm0pLmNhY2hlZEF0dHJBc3NvY2lhdGVkRWxlbWVudHNQ
cml2YXRlTmFtZSgpLCBjYWNoZWRPYmplY3QpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4IDUyYzhiMDZlZTM0ZS4uNmVhZDI0
NjgxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIu
Y3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpT
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk1FbnRyeVNjb3BlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDM5NmZlMzFmZDk3NS4uMGVkYWQzNmRiMjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAK
QEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNl
cHRpb25IZWxwZXJzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1Nsb3RWaXNpdG9ySW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNRW50
cnlTY29wZUlubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QlJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGQ5NWRlNWUzZGE2Mi4uNzQ3YzA0YjMwZDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQlJlcXVlc3RDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCUmVxdWVzdEN1c3RvbS5jcHAK
QEAgLTI0LDcgKzI0LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgIkpTSURCUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5j
cHAKaW5kZXggMjAwMWNkNGM3NWI0Li4yMGRmZDMyZTA1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFs
T2JqZWN0OjpKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QoVk0mIHZtLCBTdAogCiBKU0lE
QlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QqIEpTSURCU2VyaWFsaXphdGlvbkdsb2JhbE9iamVj
dDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxET01XcmFwcGVyV29y
bGQ+JiYgaW1wbCkKIHsKLSAgICBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3QqIHB0ciA9
ICBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSURCU2VyaWFsaXphdGlvbkdsb2Jh
bE9iamVjdD4odm0pKSBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICBKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Qq
IHB0ciA9ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0lEQlNlcmlhbGl6YXRpb25HbG9i
YWxPYmplY3Q+KHZtKSkgSlNJREJTZXJpYWxpemF0aW9uR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIFdURjo6bW92ZShpbXBsKSk7CiAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmV0dXJuIHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2luZG93UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94
eS5jcHAKaW5kZXggZjNlMjVhYWE0ZDY2Li42Y2U2OGE5MzcwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQg
SlNXaW5kb3dQcm94eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBET01XaW5kb3cmIHdpbmRvdykK
IEpTV2luZG93UHJveHkmIEpTV2luZG93UHJveHk6OmNyZWF0ZShWTSYgdm0sIERPTVdpbmRvdyYg
d2luZG93LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGF1dG8mIHN0cnVjdHVyZSA9
ICpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKEdsb2JhbFByb3h5
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIGF1dG8mIHByb3h5ID0gKm5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNXaW5kb3dQcm94eT4odm0pKSBKU1dpbmRvd1By
b3h5KHZtLCBzdHJ1Y3R1cmUsIHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9ICpuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1dpbmRvd1Byb3h5Pih2bSkpIEpTV2luZG93UHJveHkodm0sIHN0
cnVjdHVyZSwgd29ybGQpOwogICAgIHByb3h5LmZpbmlzaENyZWF0aW9uKHZtLCB3aW5kb3cpOwog
ICAgIHJldHVybiBwcm94eTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDBjYjhhNDRhZmZmYy4uNDdjNGM5NDQ5
MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTQ4NDMsNyArNDg0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJu
IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QobV9sZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2dsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dEVtcHR5T2JqZWN0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9nbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpKTsKIAogICAgICAgICBhdXRvIHJ0Y0NlcnRpZmljYXRlID0gUlRDQ2VydGlm
aWNhdGU6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4tPnN0
cmluZygpKSwgZXhwaXJlcywgV1RGOjptb3ZlKGZpbmdlcnByaW50cyksIGNlcnRpZmljYXRlLT50
YWtlU3RyaW5nKCksIGtleWVkTWF0ZXJpYWwtPnRha2VTdHJpbmcoKSk7CiAgICAgICAgIHJldHVy
biB0b0pTTmV3bHlDcmVhdGVkKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5jaGVja2VkRG93bmNh
c3Q8SlNET01HbG9iYWxPYmplY3Q+KG1fZ2xvYmFsT2JqZWN0KSwgV1RGOjptb3ZlKHJ0Y0NlcnRp
ZmljYXRlKSk7CkBAIC01OTU5LDcgKzU5NTksNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xv
bmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0
YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11
bUZpbHRlclJlY3Vyc2lvbikKICAgICAgICAgICAgICAgICByZXR1cm4geyBKU1ZhbHVlKCksIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3IgfTsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBvdXRPYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fbGV4aWNh
bEdsb2JhbE9iamVjdCwgbV9nbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICAg
ICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2xleGlj
YWxHbG9iYWxPYmplY3QsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAg
ICAgICAgICBhZGRUb09iamVjdFBvb2w8T2JqZWN0VGFnPihvdXRPYmplY3QpOwogICAgICAgICAg
ICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5k
ZXggZmUzMDY4MjhjZmU3Li43OWY2NjE3NjY4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiSlNXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJKU1dvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NvZGVCbG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElu
bGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jc29IZWFwQ2VsbFR5cGUuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggZTdkYTgwZmE4YTExLi5lZDhhYjg3NTJmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC05NDUsNyArOTQ1LDcg
QEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgICMgTk9URTogU2V0dGlu
ZyBpZ25vcmVOYW1lZFByb3BzIGhhcyB0aGUgZWZmZWN0IG9mIHNraXBwaW5nIHN0ZXAgMiwgc28g
d2UgY2FuIGVhcmx5IHJldHVybiBoZXJlCiAgICAgICAgICMgICAgICAgcmF0aGVyIHRoYW4gZ29p
bmcgdGhyb3VnaCB0aGUgcGFjZXMgb2YgaGF2aW5nIGFuIGFjdHVhbCBpZ25vcmVOYW1lZFByb3Bz
IHVwZGF0ZS4KICAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbiB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICB9XG4iKTsKICAgICB9CkBAIC05OTEsNyArOTkxLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90CiAgICAgfQogCiAgICAgIyAzLiBSZXR1cm4gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0
eShPLCBQKS4KLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxu
XG4iKTsKIApAQCAtMTI1Nyw4ICsxMjU3LDggQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIG15
ICRsZWdhY3lPdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiKTsKICAgICAg
ICAgaWYgKCEkbGVnYWN5T3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpIH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUodGhpc09iamVj
dC0+c3RydWN0dXJlKCksIHRoaXNPYmplY3QpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBX
ZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJvdG90eXBlKSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBz
bG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZm91
bmQpIHtcbiIpOwpAQCAtMTM2Nyw4ICsxMzY3LDggQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAog
ICAgICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRsZWdhY3lP
dmVycmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBl
KHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBXZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJvdG90eXBlKSwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWZvdW5kKSB7XG4iKTsKQEAg
LTE1MTQsNyArMTUxNCw3IEBAIHN1YiBHZW5lcmF0ZURlZmluZU93blByb3BlcnR5CiAgICAgICAg
ICAgICAjICAgICAgICBvbmx5IGxvb2sgYXQgdGhlIGFjdHVhbCBwcm9wZXJ0aWVzLCBhbmQgbm90
IGNhbGwgaW50byBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlCiAgICAgICAgICAgICAjICAgICAg
ICBbW0dldE93blByb3BlcnR5XV0gaG9vaz8KICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGFkZGl0aW9uYWxJbmRlbnQuICIgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRp
dGlvbmFsSW5kZW50LiAiICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5k
ZW50LiAiICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRhZGRpdGlvbmFsSW5kZW50LiAiICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAkYWRkaXRpb25hbEluZGVudC4gIiAgICAgICAgaWYgKCFmb3VuZCkg
e1xuIik7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eQog
ICAgICAgICAgICAgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUNvbW1vbigkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZERlbGV0ZXJPcGVyYXRpb24sICRjb25kaXRpb25h
bCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpIH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYg
KCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JH
ZXQpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuIik7CkBAIC0xNjk3LDcgKzE2OTcsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgKICAgICAgICAgICAgIEdlbmVyYXRlRGVsZXRlUHJvcGVydHlDb21tb24oJG91
dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFtZWREZWxldGVyT3BlcmF0aW9u
LCAkY29uZGl0aW9uYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSB9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90Rm9yR2V0KSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwpAQCAtMjU2Niw3ICsyNTY2LDcgQEAgc3ViIEdlbmVy
YXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKIAogICAgICMgRklYTUU6IEEgbGl0
dGxlIHVnbHkgdG8gaGF2ZSB0aGlzIGJlIGEgc2lkZSBlZmZlY3QgaW5zdGVhZCBvZiBhIHJldHVy
biB2YWx1ZS4KICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
Lmg+Iik7Ci0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQmluZGluZ0ZhY2FkZS5oIik7Cisg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Iik7CiAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQ29udmVydEVudW1lcmF0aW9uLmgiKTsKICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPiIpOwogCkBAIC0yODkzLDcg
KzI4OTMsNyBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25NZW1iZXJDb252
ZXJzaW9uCiAgICAgJG1lbWJlckNvbnZlcnNpb24gLj0gIiR7aW5kZW50fSAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpXG4iOwogICAgICRtZW1iZXJDb252ZXJzaW9uIC49ICIke2luZGVudH0gICAg
ICAgICR7a2V5fVZhbHVlID0ganNVbmRlZmluZWQoKTtcbiI7CiAgICAgJG1lbWJlckNvbnZlcnNp
b24gLj0gIiR7aW5kZW50fSAgICBlbHNlIHtcbiI7Ci0gICAgJG1lbWJlckNvbnZlcnNpb24gLj0g
IiR7aW5kZW50fSAgICAgICAgJHtrZXl9VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2tleX1cIl9z
KSk7XG4iOworICAgICRtZW1iZXJDb252ZXJzaW9uIC49ICIke2luZGVudH0gICAgICAgICR7a2V5
fVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sIFwiJHtrZXl9XCJfcykpO1xuIjsKICAgICAkbWVtYmVyQ29udmVyc2lvbiAu
PSAiJHtpbmRlbnR9ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTtcbiI7CiAgICAgJG1lbWJlckNvbnZlcnNpb24gLj0g
IiR7aW5kZW50fSAgICB9XG4iOwogCkBAIC0zMDQ3LDcgKzMwNDcsNyBAQCBzdWIgR2VuZXJhdGVD
b252ZXJ0RGljdGlvbmFyeVRvSlMKICAgICAkcmVzdWx0IC49ICIgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG5cbiI7CiAKICAgICAjIDEuIExldCBPIGJlICEg
T2JqZWN0Q3JlYXRlKCVPYmplY3RQcm90b3R5cGUlKS4KLSAgICAkcmVzdWx0IC49ICIgICAgYXV0
byByZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTtcblxuIjsKKyAgICAkcmVzdWx0
IC49ICIgICAgYXV0byByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTtcblxuIjsKIAogICAgICMg
Mi4gTGV0IGRpY3Rpb25hcmllcyBiZSBhIGxpc3QgY29uc2lzdGluZyBvZiBEIGFuZCBhbGwgb2Yg
ROKAmXMgaW5oZXJpdGVkIGRpY3Rpb25hcmllcywKICAgICAjICAgIGluIG9yZGVyIGZyb20gbGVh
c3QgdG8gbW9zdCBkZXJpdmVkLgpAQCAtMzEzMSw3ICszMTMxLDcgQEAgc3ViIEdlbmVyYXRlRGlj
dGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAkcmVzdWx0IC49ICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cblxuIjsKICAgICB9CiAKLSAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlNET01CaW5kaW5nRmFjYWRlLmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4iKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01Db252
ZXJ0RGljdGlvbmFyeS5oIik7CiAKICAgICBteSBAZGljdGlvbmFyaWVzOwpAQCAtMzYzNCwyMyAr
MzYzNCwxOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJcbiIpOwogCi0gICAgaWYgKEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVy
ZmFjZSkpIHsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8V2ViQ29yZS9KU0RPTUJpbmRpbmdG
YWNhZGUuaD4ifSA9IDE7Ci0gICAgICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBo
ZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKLSAgICB9CisgICAgR2VuZXJh
dGVQcm90b3R5cGVEZWNsYXJhdGlvbihcQGhlYWRlckNvbnRlbnQsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UpIGlmIEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAK
ICAgICAjIENoZWNrSlNDYXN0IFNuaXBwZXQgZnVuY3Rpb24uCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3si
PEphdmFTY3JpcHRDb3JlL1NuaXBwZXQuaD4ifSA9IDE7Ci0gICAgICAgIHVuc2hpZnQoQGhlYWRl
ckNvbnRlbnQsICJuYW1lc3BhY2UgSlNDIHsgY2xhc3MgU25pcHBldDsgfVxuIik7CisgICAgICAg
ICRoZWFkZXJJbmNsdWRlc3siPEphdmFTY3JpcHRDb3JlL1NuaXBwZXQuaD4ifSA9IDE7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgRU5BQkxFKEpJVClcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiUmVmPEpTQzo6U25pcHBldD4gY2hlY2tTdWJDbGFzc1NuaXBw
ZXRGb3Ike2NsYXNzTmFtZX0oKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
I2VuZGlmXG4iKTsKICAgICB9CiAKICAgICBpZiAoJGhhc0RPTUpJVEF0dHJpYnV0ZXMpIHsKLSAg
ICAgICAgJGltcGxJbmNsdWRlc3siPEphdmFTY3JpcHRDb3JlL0RPTUpJVEdldHRlclNldHRlci5o
PiJ9ID0gMTsKLSAgICAgICAgdW5zaGlmdChAaGVhZGVyQ29udGVudCwgIm5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRE9NSklUIHsgY2xhc3MgQ2FsbERPTUdldHRlclNuaXBwZXQ7IH0gfVxuIik7
CisgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPEphdmFTY3JpcHRDb3JlL0RPTUpJVEdldHRlclNl
dHRlci5oPiJ9ID0gMTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gRE9NIEpJVCBB
dHRyaWJ1dGVzXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CkBAIC00MTI5LDcgKzQxMjQsNyBAQCBzdWIg
R2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIKIAogICAgICAgICAgICAgIyBGSVhNRTogQXZvaWQg
aW52b2tpbmcgR2V0TWV0aG9kKG9iamVjdCwgU3ltYm9sLml0ZXJhdG9yKSBhZ2FpbiBpbiBjb252
ZXJ0PElETFNlcXVlbmNlPFQ+PiguLi4pLgogICAgICAgICAgICAgJG92ZXJsb2FkID0gR2V0T3Zl
cmxvYWRUaGF0TWF0Y2hlcygkUywgJGQsIFwmJGlzU2VxdWVuY2VPckZyb3plbkFycmF5UGFyYW1l
dGVyKTsKLSAgICAgICAgICAgICYkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3Zl
cmxvYWQsICJXZWJDb3JlOjpoYXNJdGVyYXRvck1ldGhvZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBk
aXN0aW5ndWlzaGluZ0FyZykiLCAxLCAiSlNET01CaW5kaW5nRmFjYWRlLmgiKTsKKyAgICAgICAg
ICAgICYkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQsICJoYXNJdGVy
YXRvck1ldGhvZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBkaXN0aW5ndWlzaGluZ0FyZykiLCAxLCAi
PEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPiIpOwogCiAgICAgICAgICAgICAk
b3ZlcmxvYWQgPSBHZXRPdmVybG9hZFRoYXRNYXRjaGVzKCRTLCAkZCwgXCYkaXNEaWN0aW9uYXJ5
T3JSZWNvcmRPck9iamVjdE9yQ2FsbGJhY2tJbnRlcmZhY2VQYXJhbWV0ZXIpOwogICAgICAgICAg
ICAgJiRnZW5lcmF0ZU92ZXJsb2FkQ2FsbElmTmVjZXNzYXJ5KCRvdmVybG9hZCwgImRpc3Rpbmd1
aXNoaW5nQXJnLmlzT2JqZWN0KCkiKTsKQEAgLTQ1NjcsMTEgKzQ1NjIsMTEgQEAgc3ViIGFkZFVu
c2NvcGFibGVQcm9wZXJ0aWVzCiAgICAgcmV0dXJuIGlmIHNjYWxhcihAdW5zY29wYWJsZXMpID09
IDA7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPEphdmFTY3JpcHRDb3JlL09iamVjdENvbnN0
cnVjdG9yLmg+Iik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNPYmplY3QmIHVuc2Nv
cGFibGVzID0gKldlYkNvcmU6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KHJlYWxtKCksIHJlYWxtKCkt
Pm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU09iamVjdCYgdW5zY29wYWJsZXMgPSAqY29uc3RydWN0RW1wdHlPYmplY3Qo
dm0sIHJlYWxtKCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7XG4iKTsKICAgICBm
b3JlYWNoIG15ICR1bnNjb3BhYmxlIChAdW5zY29wYWJsZXMpIHsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgdW5zY29wYWJsZXMucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCBcIiR1bnNjb3BhYmxlXCJfcyksIGpzQm9vbGVhbih0cnVlKSk7XG4iKTsKICAg
ICB9Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuc2NvcGFibGVzU3ltYm9s
LCAmdW5zY29wYWJsZXMsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnVu
c2NvcGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpO1xuIik7CiB9CiAKIHN1
YiBHZXRBcmd1bWVudFR5cGVGb3JGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sKQEAgLTQ2NDksNyAr
NDY0NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyAtIEFkZCBkZWZhdWx0
IGhlYWRlciB0ZW1wbGF0ZQogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uQ29udGVudEhlYWRlcigkaW50ZXJmYWNlKSk7CiAKLSAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlNET01CaW5kaW5nRmFjYWRlLmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygi
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4iKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlNET01CaW5kaW5nLmgiKTsKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIik7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NV3JhcHBlckNhY2hlLmgi
KTsKQEAgLTQ5NjYsNyArNDk2MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OlN0cnVjdHVyZSogJHtjbGFzc05hbWV9UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
SlNDOjpOb25BcnJheSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pXG4iKTsKQEAgLTUwNDIsMTIgKzUwMzcsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgaWYgKEludGVyZmFjZU5lZWRzSXRlcmF0b3IoJGludGVyZmFjZSkp
IHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvQnVpbHRp
bk5hbWVzLmg+Iik7CiAgICAgICAgICAgICBpZiAoSXNLZXlWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNl
KCRpbnRlcmZhY2UpIG9yICRpbnRlcmZhY2UtPm1hcExpa2UpIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCBXZWJDb3JlOjpnZXREaXJlY3QodGhpcywgdm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpO1xuIik7CiAgICAgICAgICAgICB9IGVs
c2lmICgkaW50ZXJmYWNlLT5zZXRMaWtlKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCwgV2ViQ29yZTo6Z2V0RGlyZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9BcnJheVByb3RvdHlw
ZS5oPiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6OmdldERpcmVj
dChyZWFsbSgpLT5hcnJheVByb3RvdHlwZSgpLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCwgcmVhbG0oKS0+YXJyYXlQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQcml2YXRlTmFtZSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSW50ZXJmYWNlTmVlZHNBc3lu
Y0l0ZXJhdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC01MDU4LDkgKzUwNTMsOSBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICh1bmNoZWNrZWREb3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdD4ocmVhbG0oKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRl
bmFibGVkQnlTZXR0aW5ncykgLiAiKVxuICAgICIpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmFzeW5jSXRlcmFibGUtPmlzS2V5VmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmFzeW5jSXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6OmdldERpcmVjdCh0aGlzLCB2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5hc3luY0l0ZXJhdG9yU3ltYm9sLCBnZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTtcbiIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmFzeW5jSXRlcmF0b3JTeW1i
b2wsIFdlYkNvcmU6OmdldERpcmVjdCh0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmFzeW5j
SXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhZGRWYWx1ZUl0ZXJhYmxlTWV0aG9k
cygqcmVhbG0oKSwgKnRoaXMpO1xuIikgaWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlIG9yICRpbnRl
cmZhY2UtPmFzeW5jSXRlcmFibGUpIGFuZCAhSXNLZXlWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNlKCRp
bnRlcmZhY2UpOwpAQCAtNTA3MSw3ICs1MDY2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICBhc3NlcnQoIkpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpIHJl
cXVpcmVzIHN0cmluZ3MgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nIikgaWYgbGVuZ3RoKCR2
aXNpYmxlSW50ZXJmYWNlTmFtZSkgPCAyOwogCiAgICAgaWYgKCFTaG91bGRVc2VPcmRpbmFyeU9i
amVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5m
bygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC01MjQ1LDcg
KzUyNDAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuIik7CiAgICAgfQogCi0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQmlu
ZGluZ0ZhY2FkZS5oIik7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9K
U0NlbGxJbmxpbmVzLmg+Iik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGNsYXNzTmFtZSogJGNsYXNzTmFtZVw6
OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmPCRpbXBs
VHlwZT4mJiBpbXBsLCBKU1dpbmRvd1Byb3h5KiBwcm94eSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwpAQCAtNTI4Nyw3ICs1MjgyLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0K
IAotICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUJpbmRpbmdGYWNhZGUuaCIpOworICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCI8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpTdHJ1Y3R1cmUqICR7Y2xhc3NOYW1lfTo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgIG15ICRpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5ID0gSW5zdGFuY2VP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoJGludGVyZmFjZSkgPyAiSlNDOjpNYXlIYXZlSW5k
ZXhlZEFjY2Vzc29ycyIgOiAiSlNDOjpOb25BcnJheSI7CkBAIC01MzE0LDggKzUzMDksOCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgc3RydWN0dXJlLT5zZXRNYXlCZVByb3RvdHlwZSh0cnVlKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6
Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBteSAkcHJvdG90eXBlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RXhjZXB0aW9ufSA/ICJXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGVPYmplY3QoZ2xv
YmFsT2JqZWN0LmVycm9yU3RydWN0dXJlKCkpIiA6ICJnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90
eXBlKCkiOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogc3RydWN0
dXJlID0gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxP
YmplY3QsICR7cHJvdG90eXBlfSk7XG4iKTsKKyAgICAgICAgICAgIG15ICRwcm90b3R5cGUgPSAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeGNlcHRpb259ID8gImVycm9yUHJvdG90
eXBlIiA6ICJvYmplY3RQcm90b3R5cGUiOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byogc3RydWN0dXJlID0gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC4ke3Byb3RvdHlwZX0oKSk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0cnVjdHVyZS0+c2V0TWF5
QmVQcm90b3R5cGUodHJ1ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTtcbiIpOwogICAgICAgICB9CkBAIC02MDc1LDcgKzYwNzAsNyBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgIH0gZWxzaWYgKCRpc1Jl
cGxhY2VhYmxlKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTtcbiIpIGlmICRuZWVkVGhyb3dTY29wZTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0cnVlO1xuIik7Ci0gICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBXZWJDb3JlOjpjcmVhdGVEYXRhUHJvcGVydHkoJnRoaXNPYmpl
Y3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJv
dyk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHRoaXNPYmplY3QuY3Jl
YXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UHV0Rm9yd2FyZHN9KSB7CiAgICAgICAgIGFzc2VydCgiW1B1dEZvcndhcmRzXSBpcyBu
b3QgY29tcGF0aWJsZSB3aXRoIHN0YXRpYyBhdHRyaWJ1dGVzIikgaWYgJGF0dHJpYnV0ZS0+aXNT
dGF0aWM7CkBAIC02MDgzLDcgKzYwNzgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJC
b2R5RGVmaW5pdGlvbgogICAgICAgICAjIDMuNS45LjEuIExldCBRIGJlID8gR2V0KE8sIGlkKS4K
ICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7aWR9
XCJfcyk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdmFsdWVU
b0ZvcndhcmRUbyA9IFdlYkNvcmU6OmdldCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGlkKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB2YWx1
ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgICMgMy41LjkuMi4g
SWYgVHlwZShRKSBpcyBub3QgT2JqZWN0LCB0aGVuIHRocm93IGEgVHlwZUVycm9yLgpAQCAtNjUz
OSw3ICs2NTM0LDcgQEAgc3ViIEdlbmVyYXRlRGVmYXVsdFRvSlNPTk9wZXJhdGlvbkRlZmluaXRp
b24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTVVBQUkVTU19VTkNPVU5URURfTE9DQUwg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogCiAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPiIpOwotICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHJlc3VsdCA9IFdlYkNvcmU6OmNvbnN0cnVjdEVt
cHR5T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2Jh
bE9iamVjdCk7XG4iKTsKIAogICAgICB3aGlsZSAoQGluaGVyaXRlbmNlU3RhY2spIHsKICAgICAg
ICAgbXkgJGN1cnJlbnRJbnRlcmZhY2UgPSBwb3AoQGluaGVyaXRlbmNlU3RhY2spOwpAQCAtNzM2
Myw3ICs3MzU4LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbnQK
ICAgICAkaW5jbHVkZXNSZWYtPnsiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJJbmxpbmVzLmgi
fSA9IDE7CiAgICAgJGluY2x1ZGVzUmVmLT57IkpTRE9NR2xvYmFsT2JqZWN0LmgifSA9IDE7CiAg
ICAgJGluY2x1ZGVzUmVmLT57IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCJ9ID0gMTsKLSAgICAk
aW5jbHVkZXNSZWYtPnsiSlNET01CaW5kaW5nRmFjYWRlLmgifSA9IDE7CisgICAgJGluY2x1ZGVz
UmVmLT57IjxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+In0gPSAxOwogCiAgICAgIyBX
ZSBhbHJlYWR5IHZhbGlkYXRlZCBHZW5lcmF0ZUlzUmVhY2hhYmxlIHdoZW4gZ2VuZXJhdGluZyB0
aGUgaGVhZGVyIGZpbGUuCiAgICAgbXkgJG93bmVyT2JqZWN0ID0gJGdlbmVyYXRlSXNSZWFjaGFi
bGUgPyAiZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkiIDogInRoaXMiOwpA
QCAtNzYzOSw3ICs3NjM0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyAke2l0ZXJhdG9yTmFtZX0q
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgJHtjbGFzc05h
bWV9JiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kLCBJbnRlcm5hbEl0ZXJhdG9y
JiYgaXRlcmF0b3IpCkBAIC04ODIyLDcgKzg4MTcsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckhlbHBlck1ldGhvZHMKIAogICAgIGFzc2VydCgianNOb250cml2aWFsU3RyaW5nKCkgcmVxdWly
ZXMgc3RyaW5ncyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmciKSBpZiBsZW5ndGgoJHZpc2li
bGVJbnRlcmZhY2VOYW1lKSA8IDI7CiAgICAgaWYgKCRpbnRlcmZhY2UtPmlzTmFtZXNwYWNlT2Jq
ZWN0KSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBXZWJDb3JlOjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdU
YWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAjIEZJWE1FOiBSZW1vdmUgVGV4dFRyYWNrQ3VlIGNvbnN0cnVjdG9yIGFsb25nIHdpdGggW0xl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmddIGV4dGVuZGVkIGF0dHJpYnV0ZS4K
ICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NjE1
CkBAIC04ODQ1LDcgKzg4NDAsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhv
ZHMKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTtcbiIpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJHByb3RvdHlwZSA9IFNob3VsZFVzZUds
b2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSA/ICJXZWJDb3JlOjpzdG9yZWRQcm90b3R5
cGUoZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZSgpLCAmZ2xvYmFsT2JqZWN0KSIgOiAiJHtjbGFzc05h
bWV9Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkiOworICAgICAgICAgICAgbXkgJHByb3Rv
dHlwZSA9IFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSA/ICJnbG9i
YWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCkiIDogIiR7Y2xhc3NOYW1lfTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpIjsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgJHtwcm90b3R5cGV9
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7XG4iKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXggYTg5M2IxN2YyN2FmLi5mY2YyNDUwMzNiYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsCkBAIC0yMDYsNyArMjA2LDcgQEAgbXkgQGNvbnN0cnVjdG9ycyA9ICgpOwogbXkgJGNvbnN0
cnVjdG9yc0hlYWRlckNvZGUgPSA8PEVORDsKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dy
aXRlQmFycmllci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KIAog
I3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCmluZGV4IDRhMTkwNTMxN2I4Zi4uZWQzNmNjMDAx
YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJIVE1MRnJh
bWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1
ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5o
IgpAQCAtNDksOCArNDgsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTE2MSw3ICsxNjMsNyBAQCB0ZW1wbGF0ZTw+IHZv
aWQgSlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsbwogICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiRE9NV2luZG93Il9zKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5h
bWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFt
ZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZShnbG9iYWxPYmplY3Quc3RydWN0
dXJlKCksICZnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwogfQogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KQEAgLTE4MSwxNCArMTgzLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RP
TVdpbmRvd1Byb3RvdHlwZTo6c19pbmZvID0geyAiRE9NV2luZG93Il9zLCAmQmFzZTo6c19pbmZv
LCAmCiAKIEpTQzo6U3RydWN0dXJlKiBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAog
dm9pZCBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTRE9NV2luZG93OjppbmZvKCksIEpTRE9NV2luZG93UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93
OjpzX2luZm8gPSB7ICJET01XaW5kb3ciX3MsICZCYXNlOjpzX2luZm8sICZKU0RPTVdpbmRvd1Rh
YmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93KSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
aAppbmRleCA1NzYyMzEyM2JkNDkuLjNmNmQzNWM5NjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmgKQEAgLTIxLDcg
KzIxLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudFRhcmdldC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nRmFjYWRlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9KU0RPTVdyYXBwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRXZlbnRUYXJnZXQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0pTV2luZG93UHJveHkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4ZmE3OTU2NGIwZTQuLjM1YTRjYmUwNTEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTM4LDggKzM3LDExIEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xv
dFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CkBAIC04Niw3ICs4OCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzCiAgICAgSlNTdHJpbmcq
IG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSJfcyk7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5n
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0LnN0cnVjdHVyZSgpLCAm
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBn
bG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKIH0KIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCkBAIC0xMDYsMTQgKzEwOCwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6c19pbmZvID0geyAiRGVkaWNhdGVkV29yawogCiBK
U0M6OlN0cnVjdHVyZSogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAogdm9pZCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6
aW5mbygpLCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU6OnNfaW5mbyA9IHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlIl9zLCAmQmFzZTo6c19pbmZvLCAmSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBj
ZTdjYTQwZjdiNjguLjFmNDc3ZDFhZDA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oCkBAIC0yMSw3ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGlu
Z0ZhY2FkZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XcmFwcGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcAppbmRleCA3OWQzZDU5ZDZiZGQuLjYzNDIwZWEw
ZWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFN0YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRTdGFyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4
dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkBAIC0z
OSw4ICszOCwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgpAQCAtMTIwLDcgKzEyMiw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0V4
cG9zZWRTdGFyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciJfcywgJkJhc2U6OnNf
aW5mCiAKIEpTQzo6U3RydWN0dXJlKiBKU0V4cG9zZWRTdGFyUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQog
CiB2b2lkIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKQEAg
LTE0NCw3ICsxNDYsNyBAQCB2b2lkIEpTRXhwb3NlZFN0YXJQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKICAgICB9CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
JiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFy
eU9iamVjdCh2bSk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhp
cywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU0V4
cG9zZWRTdGFyOjpzX2luZm8gPSB7ICJFeHBvc2VkU3RhciJfcywgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRTdGFyKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKaW5kZXggZDY0NTUxZjM0YTBh
Li5lMzBhZThhMjhlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0T3B0aW9uYWwuaCIKQEAgLTQwLDkgKzM5LDEyIEBA
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtNzgsNyAr
ODAsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3c6OkRpY3Q+PiBjb252ZQogICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgb2JqVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBvYmpWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib2JqIl9zKSk7CisgICAgICAgIG9ialZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJvYmoiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gb2JqQ29udmVy
c2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqVmFsdWUpOwpAQCAtOTQsNyArOTYsNyBAQCBKU0M6OkpT
T2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSgogICAgIFNVUFBSRVNTX1VOQ09VTlRFRF9MT0NBTCBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjpj
b25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOwog
CiAgICAgaWYgKCFJRExJbnRlcmZhY2U8VGVzdE9iaj46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnku
b2JqKSkgewogICAgICAgICBhdXRvIG9ialZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdE9i
aj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSURMSW50
ZXJmYWNlPFRlc3RPYmo+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5vYmop
KTsKQEAgLTE5MCwxNCArMTkyLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvd1Byb3RvdHlwZTo6c19pbmZvID0geyAiRXhwb3NlZFRvV29ya2VyCiAKIEpTQzo6
U3RydWN0dXJlKiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAogdm9pZCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjppbmZvKCksIEpT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAg
ICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygp
LT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFRvV29ya2VyQW5k
V2luZG93OjpzX2luZm8gPSB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciX3MsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3cpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAKaW5kZXggOGUyMGY2OGI1MWNiLi5mMjc2NWEzYmQ2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFeHRl
bmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RJbmxp
bmVzLmgiCkBAIC0zOCw4ICszNywxMSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtODcsNyArODksNyBAQCB0ZW1wbGF0ZTw+
IHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTQogICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiX3MpOwogICAgIG1fb3JpZ2luYWxOYW1l
LnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBlKGds
b2JhbE9iamVjdC5zdHJ1Y3R1cmUoKSwgJmdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCgp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CiB9CiAK
IC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwpAQCAtMTA3LDE0ICsxMDksMTQgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlBhaW50V29ya2xldEdsb2IKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlw
ZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRH
bG9iYWxTY29wZSJfcywgJkJhc2U6OnNfaW5mbywgJkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggYzMyMmRh
YzNiOGRhLi5jYWU3MWMxZDljMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaApAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nRmFjYWRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdyYXBwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNzYyNWVm
NDBlMTc5Li5jN2Q2Njk4NGY3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTM4
LDggKzM3LDExIEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTg2LDcgKzg4LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFYKICAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSJfcyk7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0
aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0
LnN0cnVjdHVyZSgpLCAmZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKIH0KIAogLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCkBAIC0xMDYsMTQgKzEwOCwxNCBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNlcnZp
Y2VXb3JrZXJHbAogCiBKU0M6OlN0cnVjdHVyZSogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6aW5mbygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxl
VmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c19pbmZvID0geyAiU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIl9zLCAmQmFzZTo6c19pbmZvLCAmSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMDhhM2Vm
M2E2YjUxLi5jZTBlZGM0ZDYwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oCkBAIC0yMSw3ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTV29y
a2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XcmFwcGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTU2hhZG93UmVhbG1HbG9iYWxTY29wZS5jcHAKaW5kZXggOTViMWFjNzI0
NzVlLi4xMzhlMzFhMTFiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtMzksOSArMzgs
MTIgQEAKICNpbmNsdWRlICJTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXpl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9PYmplY3RQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90Vmlz
aXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAg
LTg2LDcgKzg4LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTU2hhZG93UmVhbG1HbG9iYWxTY29wZURP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYKICAgICBKU1N0cmluZyogbmFt
ZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNoYWRvd1JlYWxtR2xvYmFsU2NvcGUi
X3MpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgV2Vi
Q29yZTo6c3RvcmVkUHJvdG90eXBlKGdsb2JhbE9iamVjdC5zdHJ1Y3R1cmUoKSwgJmdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2Jq
ZWN0LmdldFByb3RvdHlwZURpcmVjdCgpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1NoYWRvd1JlYWxtR2xv
YmFsU2NvcGU6OnNfaW5mbyA9IHsgIlNoYWRvd1JlYWxtR2xvYmFsU2NvcGUiX3MsICZCYXNlOjpz
X2luZm8sICZKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFkb3dSZWFsbUdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFkb3dS
ZWFsbUdsb2JhbFNjb3BlLmgKaW5kZXggMjQzMTg4N2M1MjUyLi40NDFlZjkwOTk1ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYWRvd1Jl
YWxtR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmgKQEAgLTIwLDcgKzIwLDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01XcmFwcGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBh
YTc1MWQwMmE0YTMuLjkxNWUyMmE1NTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKQEAg
LTM4LDggKzM3LDExIEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgpAQCAtODcsNyArODksNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTQogICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUiX3MpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwg
dGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBlKGdsb2JhbE9iamVj
dC5zdHJ1Y3R1cmUoKSwgJmdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCgpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CiB9CiAKIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwpAQCAtMTA3LDE0ICsxMDksMTQgQEAgY29uc3QgQ2xhc3NJ
bmZvIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNoYXJl
ZFdvcmtlckdsb2IKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGU6OmluZm8oKSwgSlNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhp
cywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NU
UklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlOjpzX2luZm8gPSB7ICJTaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZSJfcywgJkJhc2U6OnNfaW5mbywgJkpTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggYjY5MjFkOTNhZGUzLi5h
YmE3MmViMWM4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAt
MjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNj
b3BlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmdGYWNhZGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0pTRE9NV3JhcHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5bmNJ
dGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QXN5bmNJdGVyYWJsZS5jcHAKaW5kZXggYTU1MzNmNDhiMTVkLi5kZmYzMDE1ZTkxNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
c3luY0l0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QXN5bmNJdGVyYWJsZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRl
ICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXN5bmNJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0Zh
Y2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
T3B0aW9uYWwuaCIKQEAgLTQxLDggKzQwLDExIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0
b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0x
MTksMTUgKzEyMSwxNSBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0QXN5bmNJdGVyYWJsZVByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdEFzeW5jSXRlcmFibGUiX3MsCiAKIEpTQzo6U3RydWN0dXJl
KiBKU1Rlc3RBc3luY0l0ZXJhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdEFz
eW5jSXRlcmFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RBc3luY0l0ZXJhYmxlOjppbmZvKCksIEpTVGVzdEFzeW5jSXRlcmFibGVQcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YXN5
bmNJdGVyYXRvclN5bWJvbCwgV2ViQ29yZTo6Z2V0RGlyZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBXZWJDb3Jl
OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05h
bWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmFz
eW5jSXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RBc3luY0l0ZXJh
YmxlOjpzX2luZm8gPSB7ICJUZXN0QXN5bmNJdGVyYWJsZSJfcywgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RBc3luY0l0ZXJhYmxlKSB9
OwpAQCAtMjExLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpO
b25BcnJheSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVzdEFzeW5jSXRlcmFi
bGVJdGVyYXRvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Rlc3RBc3luY0l0ZXJhYmxlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5k
LCBJbnRlcm5hbEl0ZXJhdG9yJiYgaXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5bmNJdGVyYWJsZVdpdGhvdXRGbGFn
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5
bmNJdGVyYWJsZVdpdGhvdXRGbGFncy5jcHAKaW5kZXggNTk3YTg0MjYyZjYwLi5jMTMwMDY2NGE5
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5bmNJdGVyYWJsZVdpdGhvdXRGbGFncy5j
cHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQXN5bmNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtNDAsOCArMzks
MTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExOCwxNSArMTIwLDE1IEBAIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdzUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0QXN5bmNJCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RBc3luY0l0ZXJhYmxlV2l0
aG91dEZsYWdzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdEFzeW5jSXRlcmFibGVX
aXRob3V0RmxhZ3NQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdzOjppbmZvKCksIEpTVGVzdEFzeW5jSXRlcmFibGVX
aXRob3V0RmxhZ3NQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgV2ViQ29yZTo6Z2V0RGly
ZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJs
aWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmFzeW5jSXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cisg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdzOjpzX2luZm8gPSB7ICJUZXN0
QXN5bmNJdGVyYWJsZVdpdGhvdXRGbGFncyJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdz
KSB9OwpAQCAtMjEwLDcgKzIxMiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlND
OjpOb25BcnJheSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVzdEFzeW5jSXRl
cmFibGVXaXRob3V0RmxhZ3NJdGVyYXRvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1Rlc3RBc3luY0l0ZXJhYmxlV2l0aG91dEZsYWdzJiBpdGVyYXRl
ZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kLCBJbnRlcm5hbEl0ZXJhdG9yJiYgaXRlcmF0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QXN5bmNLZXlWYWx1ZUl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBc3luY0tleVZhbHVlSXRlcmFibGUuY3BwCmluZGV4IDMwMjkx
YjExYjQ2ZS4uMDBhMjc5YzE4OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5bmNLZXlWYWx1ZUl0ZXJhYmxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QXN5bmNLZXlWYWx1
ZUl0ZXJhYmxlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNv
U3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01Bc3luY0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC00
MSw4ICs0MCwxMSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTIzLDE1ICsxMjUsMTUgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEFzeW5jS2V5VmFsdWVJdGVyYWJsZVByb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdEFzeW5jS2V5VmEKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEFzeW5jS2V5
VmFsdWVJdGVyYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7
Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RBc3luY0tleVZh
bHVlSXRlcmFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RBc3luY0tleVZhbHVlSXRlcmFibGU6OmluZm8oKSwgSlNUZXN0QXN5bmNLZXlWYWx1ZUl0ZXJh
YmxlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmFzeW5jSXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6OmdldERpcmVjdCh0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZt
LCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YXN5bmNJdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RBc3luY0tleVZhbHVlSXRlcmFibGU6OnNfaW5mbyA9IHsgIlRlc3RBc3luY0tleVZh
bHVlSXRlcmFibGUiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0QXN5bmNLZXlWYWx1ZUl0ZXJhYmxlKSB9OwpAQCAtMjE1LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVzdEFzeW5jS2V5VmFsdWVJdGVyYWJsZUl0ZXJh
dG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVGVz
dEFzeW5jS2V5VmFsdWVJdGVyYWJsZSYgaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2lu
ZCwgSW50ZXJuYWxJdGVyYXRvciYmIGl0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAK
aW5kZXggM2RlOTY3MTEyMDlhLi43MjhhOWEyYjJhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAi
SlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAgLTQ2LDggKzQ1LDExIEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNp
dG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAt
MTQ0LDE0ICsxNDYsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvbnMiX3MsICZCYXMKIAogSlNDOjpTdHJ1Y3R1
cmUqIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdENF
UmVhY3Rpb25zUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
Q0VSZWFjdGlvbnM6OmluZm8oKSwgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMs
IHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
Q0VSZWFjdGlvbnM6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9ucyJfcywgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9u
cykgfTsKQEAgLTI5Niw3ICsyOTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q0VS
ZWFjdGlvbnNfc3RyaW5naWZpZXJBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplYwogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdp
ZmllckF0dHJpYnV0ZSJfcyk7Ci0gICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gV2ViQ29yZTo6
Z2V0KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gdmFs
dWVUb0ZvcndhcmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKCF2
YWx1ZVRvRm9yd2FyZFRvLmlzT2JqZWN0KCkpIFtbdW5saWtlbHldXSB7CiAgICAgICAgIHRocm93
VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKQEAgLTQwMSw3ICs0
MDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNfc3RyaW5naWZp
ZXJBdHRyaWJ1dGVOb3ROZWVkZWRTZXR0ZXIoSlNHbAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBp
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdpZmllckF0dHJpYnV0ZU5vdE5l
ZWRlZCJfcyk7Ci0gICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gV2ViQ29yZTo6Z2V0KCZ0aGlz
T2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gdmFsdWVUb0Zvcndh
cmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKCF2YWx1ZVRvRm9y
d2FyZFRvLmlzT2JqZWN0KCkpIFtbdW5saWtlbHldXSB7CiAgICAgICAgIHRocm93VHlwZUVycm9y
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCA0YWI0MTg3MjBjYjguLjFjMDYyYjU5Y2Fk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkBAIC0zOSw4ICszOCwxMSBAQAogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVy
ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KQEAgLTEyMywxNCArMTI1LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvCiAKIEpT
Qzo6U3RydWN0dXJlKiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpp
bmZvKCksIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5n
KHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcjo6c19pbmZvID0geyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcikgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cAppbmRleCBjZWI5NTA1MGVkYzcuLjE4YjE5MGRjMDRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2Vy
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAi
SlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRCb29sZWFuLmgiCkBAIC01MSw4ICs1MCwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRv
ck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTE2
NSwxNCArMTY3LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0Q2FsbFRyYWNlciJfcywgJkJhc2U6CiAKIEpTQzo6U3RydWN0dXJl
KiBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdENhbGxU
cmFjZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDYWxs
VHJhY2VyOjppbmZvKCksIEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZt
LCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbFRy
YWNlcjo6c19pbmZvID0geyAiVGVzdENhbGxUcmFjZXIiX3MsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2FsbFRyYWNlcikgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCAyOGE3NTY1YzJjNTUuLmY3ODEy
YTRkODQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtMjIsMTIg
KzIyLDEyIEBACiAjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oIgogCiAjaW5jbHVk
ZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgogI2luY2x1
ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtlZFZlY3Rvci5oPgogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uR2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbkdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwCmluZGV4IDFmNGM5NGE0YWU3NS4uYWRjOWE4MmZmOGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbkdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uR2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKQEAgLTIyLDEyICsyMiwxMiBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrRnVuY3Rp
b25HZW5lcmF0ZUlzUmVhY2hhYmxlLmgiCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcklubGluZXMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWFya2VkVmVjdG9yLmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcAppbmRleCAzZWY3M2ZiYzAyNGYuLmE2
ZDk4NTYxYjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25XaXRoVGhpc09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaCIKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVySW5saW5lcy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKQEAgLTMxLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvTWFya2VkVmVjdG9yLmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCmluZGV4IGY1MmY2ZDBkMzEwNi4uZDk5Nzg2ZGY0
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlw
ZWRlZnMuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUeXBlZGVmcy5oIgogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bGxhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgpAQCAtMzEsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFy
a2VkVmVjdG9yLmg+CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVmFyaWFkaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25XaXRoVmFyaWFkaWMuY3BwCmluZGV4IGYxMmExNGQxNWY3My4uNDQ4Y2MyYjMyZGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhWYXJpYWRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVmFyaWFkaWMuY3Bw
CkBAIC0yMiwxMSArMjIsMTEgQEAKICNpbmNsdWRlICJKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFZhcmlhZGljLmgiCiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcklubGlu
ZXMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9NYXJrZWRWZWN0b3IuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCAxMzBlMzhmYzI4OGQuLmVlY2FjMzAzYjE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcklubGluZXMuaCIKICNpbmNsdWRl
ICJET01Qcm9taXNlUHJveHkuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCkBAIC00
Nyw2ICs0Niw4IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1
bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtl
ZFZlY3Rvci5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpAQCAtMTIxLDcgKzEyMiw3IEBAIHRl
bXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RDYWxsYmFja0ludGVy
ZmFjZTo6RGljdGlvbmFyeT4+IGNvCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBvcHRpb25hbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgb3B0aW9uYWxNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3B0aW9uYWxNZW1iZXIiX3Mp
KTsKKyAgICAgICAgb3B0aW9uYWxNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3B0aW9uYWxNZW1iZXIiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVz
dWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gb3B0aW9uYWxNZW1iZXJDb252ZXJz
aW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExMb25nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgb3B0aW9uYWxNZW1iZXJWYWx1ZSk7CkBAIC0xMzEsNyArMTMyLDcgQEAgdGVtcGxhdGU8
PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpE
aWN0aW9uYXJ5Pj4gY28KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlcXVp
cmVkTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZXF1
aXJlZE1lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZE1lbWJlciJfcykpOworICAg
ICAgICByZXF1aXJlZE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZE1lbWJlciJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNl
cHRpb24geyB9KTsKICAgICB9CiAgICAgaWYgKHJlcXVpcmVkTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrV2l0aEZ1bmN0aW9uT3JEaWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja1dpdGhGdW5jdGlvbk9yRGlj
dC5jcHAKaW5kZXggZTY0ZTcyZTRiZTFhLi40Y2IyODFhMzQwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja1dpdGhGdW5j
dGlvbk9yRGljdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrV2l0aEZ1bmN0aW9uT3JEaWN0LmNwcApAQCAtMjIsNyArMjIsNiBA
QAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrV2l0aEZ1bmN0aW9uT3JEaWN0LmgiCiAKICNpbmNs
dWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcklubGluZXMuaCIKLSNpbmNsdWRlICJKU0RP
TUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0RGljdGlv
bmFyeS5oIgpAQCAtMzIsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Rlc3REaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYXJrZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCA4MTU4ZjNhYWFiNmYuLmUxMGNmNjI1MDlhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01DbGllbnRJc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1
ZGUgIkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtMzYs
OCArMzUsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTQsMTQgKzExNiwxNCBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RDbAogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewot
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpLCBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0g
ICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8o
KS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlv
bmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
b25kaXRpb25hbC5jcHAKaW5kZXggNzFlYTljZmVlODk3Li5mYzc5M2YyNWY2ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRp
b25hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVk
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMu
aCIKQEAgLTM2LDggKzM1LDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMjE3LDE0ICsyMTksMTQgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0Q29uZGl0aW9uYWwiX3MsICZCYXMKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdENvbmRpdGlv
bmFsUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlND
OjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q29uZGl0aW9uYWw6OmluZm8o
KSwgSlNUZXN0Q29uZGl0aW9uYWxQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdl
YkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNs
YXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWw6OnNfaW5m
byA9IHsgIlRlc3RDb25kaXRpb25hbCJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAppbmRleCA1M2U4Mjk3NDQxZjUuLjg3ODRlZWYz
NGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcApAQCAtMjgs
NyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkBAIC00MCw4ICszOSwxMSBAQAogI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
bG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlu
bGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KQEAgLTMwNSw3ICszMDcsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENvbmRpdGlvbmFsSQogCiBKU0M6OlN0
cnVjdHVyZSogSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAog
dm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCkBAIC00NTAsNyArNDUyLDcgQEAgdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAjZW5kaWYKICAgICBpZiAoaGFzRGlz
YWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAg
ICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKLSAgICBXZWJDb3JlOjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdU
YWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0K
IAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OnNfaW5mbyA9IHsg
IlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKaW5kZXggNzk1MzY4
OTQ1NDkxLi42ZjA3MDA1Y2EwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlz
b1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCkBAIC00Myw4
ICs0MiwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTE2NSw3ICsxNjcsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dENvbmRpdGlvbgogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6
Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCkBAIC0xOTUsNyArMTk3LDcgQEAgdm9p
ZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBidWlsdGluTmFtZXMo
dm0pLmVuYWJsZWRDb25kaXRpb25hbGx5UmVhZFdyaXRlQnlTZXR0aW5nQXR0cmlidXRlUHJvbWlz
ZVB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVfZW5hYmxlZENvbmRpdGlvbmFsbHlSZWFkV3JpdGVCeVNldHRpbmdB
dHRyaWJ1dGVQcm9taXNlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7
CiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7Ci0gICAg
V2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5
TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+
Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSJfcywgJkJhc2U6
OnNfaW5mbywgJkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZSwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJ
VC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAppbmRleCA5NDQ3YWYzYTYxYTUuLjZjOTAyODkzZDcxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRBbnkuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCkBAIC00OCwxMSArNDcsMTMgQEAKICNpbmNs
dWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9ET01KSVRHZXR0ZXJTZXR0ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRy
YWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZp
c2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBA
IC01NjYsMTQgKzU2NywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0RE9NSklUIl9zLCAmQmFzZTo6c19pbmZvLAogCiBKU0M6OlN0cnVj
dHVyZSogSlNUZXN0RE9NSklUUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdERPTUpJ
VFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU1Rlc3RET01KSVRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdl
YkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNs
YXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUOjpzX2luZm8gPSB7
ICJUZXN0RE9NSklUIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAppbmRleCA2N2Q0ZTkwNDY2
ODYuLmZlMmYyZTllMjIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaApAQCAtMjIsOCArMjIsOCBAQAogCiAjaW5j
bHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiVGVzdERPTUpJVC5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0RPTUpJVEdldHRlclNldHRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01X
cmFwcGVyLmg+Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7IGNsYXNzIENhbGxE
T01HZXR0ZXJTbmlwcGV0OyB9IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTi5jcHAKaW5kZXggYzc1Y2E0Njg3ZmRjLi4yZTZmMTQ1NTZlZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZh
dWx0VG9KU09OLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJF
eHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNl
LmgiCkBAIC01NSw5ICs1NCwxMiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTk0LDcgKzE5Niw3IEBAIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RGVm
YXVsdFRvSlNPTiJfcywKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdERlZmF1bHRUb0pTT05Qcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQpAQCAtMjE4LDcgKzIyMCw3IEBAIHZvaWQgSlNUZXN0RGVmYXVs
dFRvSlNPTlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIH0KICAgICBpZiAo
aGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKLSAgICBXZWJDb3JlOjpw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT046OnNfaW5mbyA9IHsg
IlRlc3REZWZhdWx0VG9KU09OIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT04pIH07CkBAIC03ODAsNyArNzgy
LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09OUHJv
dG90eXBlRnVuY3Rpb25fdG9KU09OQm9keShKU0cKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
U1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7Ci0gICAgYXV0byogcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0RW1wdHlPYmplY3QobGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6dGVzdERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8g
bG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVt
LmNwcAppbmRleCA1NWUxZmMzOWNlMzQuLjhmNWVmOTQ1YjZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkVudW0uY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uaCIKIAotI2luY2x1ZGUgIkpT
RE9NQmluZGluZ0ZhY2FkZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcApp
bmRleCBlNTI0MmRiZjRlNzAuLmExYzdkZjMyN2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKQEAgLTI3LDcgKzI3LDYg
QEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0U3RyaW5ncy5oIgpAQCAtNDEsOSArNDAsMTIgQEAKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
ZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEyNiw3ICsxMjgsNyBA
QCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RAogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQpAQCAtMTUwLDcgKzE1Miw3IEBAIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogICAg
IGlmIChoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rp
b25hcnkoKSkKICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwotICAgIFdlYkNv
cmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNz
TmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
Il9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCkgfTsKQEAgLTI1Myw3ICsyNTUs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBT
VVBQUkVTU19VTkNPVU5URURfTE9DQUwgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvKiByZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIG5vcm1hbEF0dHJpYnV0ZVZhbHVlID0g
dG9KUzxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3Jt
YWxBdHRyaWJ1dGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
bm9ybWFsQXR0cmlidXRlIl9zKSwgbm9ybWFsQXR0cmlidXRlVmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKaW5k
ZXggMWVkOGM3YWNjN2I5Li5iMTYwZGM4ZmY5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTM0LDggKzMzLDEx
IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CkBAIC0xMDYsMTQgKzEwOCwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlcwogCiBK
U0M6OlN0cnVjdHVyZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3REZWZh
dWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2Vi
Q29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xh
c3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKaW5kZXggM2EzMDhiMzljODAwLi41
NjAwNTFmZDY2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKQEAgLTUwLDkgKzQ5LDEyIEBACiAj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2Jq
ZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1h
Y3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEzNywx
NCArMTM5LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTCiAKIEpTQzo6U3RydWN0dXJlKiBK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjppbmZvKCksIEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04o
KTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OjpzX2lu
Zm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiX3MsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQpIH07CkBAIC0yMzUsNyArMjM3LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uX3RvSlNPTkIKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byogcmVzdWx0ID0gV2ViQ29yZTo6Y29u
c3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6dGVzdERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGF1dG8gbG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKaW5kZXggZGQ0Mjg0YmUw
YjE4Li4wNWJkYmM3NDUzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC01
MCw5ICs0OSwxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0FycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CkBAIC0xNDAsMTQgKzE0MiwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERlZmF1bAogCiBK
U0M6OlN0cnVjdHVyZSogSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwor
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAogdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbDo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6OnNfaW5mbyA9IHsgIlRlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwpIH07
CkBAIC0yNzEsNyArMjczLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25fdG8KICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byogcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0
RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byogcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKERlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6dGVzdERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nRW5hYmxlZCgpKSB7
CiAgICAgICAgIGF1dG8gbG9uZ0F0dHJpYnV0ZVZhbHVlID0gdG9KUzxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sb25nQXR0cmlidXRlKCkpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKaW5k
ZXggZTRjNzUwNjZiNzk4Li43YTUyN2I0MmRlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAi
SlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xv
dFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CkBAIC0xMjAsMTQgKzEyMiwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVAogCiBKU0M6OlN0
cnVjdHVyZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkp
OworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6aW5mbygpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBX
ZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5j
bGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGU6OnNfaW5mbyA9IHsgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAppbmRleCA5OGFjMmEyOTIxZTcu
LjJjNzlhZGQ1NmQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCkBA
IC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVy
aXZlZERpY3Rpb25hcnkuaCIKIAotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCkBAIC0zMSw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3Ry
dWN0b3IuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvSXNJbmNyZWFz
aW5nLmg+CkBAIC02NCw3ICs2NCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExE
aWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQo
b2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImJvb2xNZW1iZXIiX3MpKTsKKyAgICAgICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVt
YmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVy
c2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGJvb2xNZW1iZXJDb252
ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgYm9vbE1lbWJlclZhbHVlKTsKQEAgLTc0LDcgKzc0LDcgQEAgdGVtcGxhdGU8
PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Pj4g
Y29udmVydERpY3Rpb24KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBjYWxs
YmFja01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcykpOworICAg
ICAgICBjYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNl
cHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBjYWxsYmFja01lbWJlckNvbnZlcnNpb25SZXN1
bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJh
Y2s+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgdW5jaGVja2Vk
RG93bmNhc3Q8SlNET01HbG9iYWxPYmplY3Q+KGxleGljYWxHbG9iYWxPYmplY3QpKTsKQEAgLTg0
LDcgKzg0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVz
dERlcml2ZWREaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb24KICAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCiAgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gV2ViQ29y
ZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykpOworICAgICAgICBwYXJ0aWFsQm9vbGVh
bk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24g
eyB9KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlckNvbnZlcnNpb25SZXN1
bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlKTsKQEAgLTk1LDcgKzk1LDcgQEAgdGVtcGxhdGU8
PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Pj4g
Y29udmVydERpY3Rpb24KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRp
YWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVl
ID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCJfcykp
OworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9
KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbENv
bnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlKTsK
QEAgLTEwNiw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbgogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIl9zKSk7CisgICAgICAgIHBh
cnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVz
dWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFydGlhbENhbGxiYWNrTWVtYmVy
Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tN
ZW1iZXJWYWx1ZSwgdW5jaGVja2VkRG93bmNhc3Q8SlNET01HbG9iYWxPYmplY3Q+KGxleGljYWxH
bG9iYWxPYmplY3QpKTsKQEAgLTExNiw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25S
ZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlv
bgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9u
Z01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlh
bFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRM
b25nTWVtYmVyIl9zKSk7CisgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAg
ICB9CiAgICAgaWYgKHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CkBAIC0xMzAsNyArMTMwLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERp
Y3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb24KICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciJfcykpOworICAgICAgICBwYXJ0
aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhj
ZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlckNvbnZlcnNp
b25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETERPTVN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
dGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0
aW9uYXJ5Pj4gY29udmVydERpY3Rpb24KICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmdWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IFdlYkNv
cmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSk7Cisg
ICAgICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcykpOwog
ICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lv
blJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOwpAQCAtMTU2LDcg
KzE1Niw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RE
ZXJpdmVkRGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwg
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFs
VW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiX3MpKTsKKyAgICAgICAgcGFydGlh
bFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxV
bnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsK
ICAgICB9CiAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyQ29udmVyc2lvblJlc3Vs
dCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMVW5zaWduZWRMb25nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUpOwpA
QCAtMTY2LDcgKzE2Niw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9u
YXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9i
amVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dHJpbmdNZW1iZXIiX3MpKTsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmlu
Z01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENv
bnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBzdHJpbmdNZW1i
ZXJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExET01TdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7CkBAIC0xNzYsNyArMTc2LDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWRE
aWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb24KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwg
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXJpdmVk
Qm9vbE1lbWJlciJfcykpOworICAgICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
ZXJpdmVkQm9vbE1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBk
ZXJpdmVkQm9vbE1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElE
TEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBkZXJpdmVkQm9vbE1lbWJlclZhbHVlKTsK
QEAgLTIwNiw3ICsyMDYsNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIFNVUFBSRVNT
X1VOQ09VTlRFRF9MT0NBTCBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOwogCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJlclZh
bHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJ
RExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCmluZGV4IGIzZTU4MDA3
NTVjYy4uMzU1ZGI3YWQzM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnky
LmNwcApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
VGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oIgogCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRl
LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
dmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKQEAgLTMx
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9J
c0luY3JlYXNpbmcuaD4KQEAgLTY0LDcgKzY0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVz
dWx0PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mj4+IGNvbnZlcnREaWN0aW8K
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IFdlYkNv
cmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiYm9vbE1lbWJlciJfcykpOworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gYm9vbE1l
bWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUpOwpAQCAtNzQsNyArNzQsNyBAQCB0
ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rp
b25hcnkyPj4gY29udmVydERpY3RpbwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9z
KSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9z
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJl
c3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNhbGxiYWNrTWVtYmVyQ29udmVy
c2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCB1
bmNoZWNrZWREb3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdD4obGV4aWNhbEdsb2JhbE9iamVjdCkp
OwpAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyPj4gY29udmVydERpY3RpbwogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChv
YmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nTWVtYmVyIl9zKSk7CisgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJp
bmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gc3RyaW5nTWVt
YmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRE9NU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgc3RyaW5nTWVtYmVyVmFsdWUpOwpAQCAtOTQsNyArOTQsNyBA
QCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGVyaXZlZERp
Y3Rpb25hcnkyPj4gY29udmVydERpY3RpbwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAg
ICAgICAgZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3Qs
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZl
ZEJvb2xNZW1iZXIyIl9zKSk7CisgICAgICAgIGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkZXJpdmVkQm9vbE1lbWJlcjIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1
dG8gZGVyaXZlZEJvb2xNZW1iZXIyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9u
YWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGRlcml2ZWRCb29sTWVtYmVyMlZh
bHVlKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFy
eVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIFNV
UFBSRVNTX1VOQ09VTlRFRF9MT0NBTCBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgYXV0byByZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOwogCiAgICAgaWYgKCFJRExCb29sZWFuOjpp
c051bGxWYWx1ZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1l
bWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29s
TWVtYmVyKSk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0
PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4+IGMKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6
OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYm9vbE1lbWJlciJfcykpOworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gYm9vbE1lbWJl
ckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHRl
bXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlv
bmFyeTI6OkRpY3Rpb25hcnk+PiBjCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiX3Mp
KTsKKyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVz
dWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gY2FsbGJhY2tNZW1iZXJDb252ZXJz
aW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsIHVu
Y2hlY2tlZERvd25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0PihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rp
b25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4+IGMKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVl
ID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykpOworICAgICAgICBwYXJ0
aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRF
eGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlckNvbnZl
cnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlKTsKQEAgLTE5NSw3ICsxOTUsNyBA
QCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGVyaXZlZERp
Y3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pj4gYwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAg
ICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsIl9zKSk7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFs
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4
Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENv
bmRpdGlvbmFsQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQm9vbGVh
bj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlv
bmFsVmFsdWUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3Vs
dDxJRExEaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnk+PiBjCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpKTsK
KyAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFj
a01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENv
bnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRp
YWxDYWxsYmFja01lbWJlclZhbHVlLCB1bmNoZWNrZWREb3duY2FzdDxKU0RPTUdsb2JhbE9iamVj
dD4obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHRlbXBsYXRlPD4g
Q29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRp
Y3Rpb25hcnk+PiBjCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAg
ICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXIiX3MpKTsKKyAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlv
biB7IH0pOwogICAgIH0KICAgICBpZiAocGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKQEAgLTIzMCw3ICsyMzAsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25S
ZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pj4g
YwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJl
clZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbFN0cmlu
Z01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSk7Cisg
ICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJl
ciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNp
b25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVt
YmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRE9NU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlKTsKQEAgLTI0Miw3
ICsyNDIsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0
RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pj4gYwogICAgICAgICAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5h
YmxlZEJ5U2V0dGluZ1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1Zh
bHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmciX3MpKTsKKyAgICAgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nIl9zKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gY29udmVydDxJRExPcHRpb25hbDxJRExET01TdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7
CkBAIC0yNTYsNyArMjU2LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rp
b25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4+IGMKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1w
bGVtZW50ZWRBc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFy
dGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOworICAg
ICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IG9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2Vw
dGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJDb252
ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExVbnNpZ25lZExvbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXNWYWx1ZSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0
PElETERpY3Rpb25hcnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4+IGMKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBXZWJD
b3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInN0cmluZ01lbWJlciJfcykpOworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRv
IHN0cmluZ01lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ01lbWJlclZhbHVlKTsKQEAgLTI3
Niw3ICsyNzYsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxU
ZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pj4gYwogICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKICAgICAgICAgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImRlcml2ZWRCb29sTWVtYmVyIl9zKSk7CisgICAgICAgIGRlcml2ZWRCb29sTWVtYmVyVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0K
ICAgICBhdXRvIGRlcml2ZWRCb29sTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURM
T3B0aW9uYWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGRlcml2ZWRCb29sTWVt
YmVyVmFsdWUpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0
aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAg
ICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OmNvbnN0cnVjdEVtcHR5T2JqZWN0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CiAKICAgICBpZiAoIUlETEJvb2xl
YW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKICAgICAgICAgYXV0byBi
b29sTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5
LmJvb2xNZW1iZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5LmNwcAppbmRleCAyMDRkMDg4MTM0MWQu
LjAyMjFmMDkxYTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5LmNwcApAQCAtMjIsMTAgKzIyLDEw
IEBACiAjaW5jbHVkZSAiSlNUZXN0RGljdGlvbmFyeS5oIgogCiAjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnRPcHRpb25hbC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvSXNJ
bmNyZWFzaW5nLmg+CiAKQEAgLTYxLDcgKzYxLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVz
dWx0PElETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyeTxUZXMK
ICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICBndWFy
ZGVkTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZ3VhcmRlZE1lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJndWFyZGVkTWVt
YmVyIl9zKSk7CisgICAgICAgICAgICAgICAgZ3VhcmRlZE1lbWJlclZhbHVlID0gb2JqZWN0LT5n
ZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJndWFy
ZGVkTWVtYmVyIl9zKSk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gY29udmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgZ3VhcmRlZE1lbWJlclZhbHVlKTsKQEAgLTc1LDcgKzc1LDcgQEAgdGVt
cGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdERpY3Rpb25hcnk+PiBj
b252ZXJ0RGljdGlvbmFyeTxUZXMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IG1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbWVtYmVy
VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm1lbWJlciJfcykpOworICAgICAgICBtZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIG1lbWJl
ckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETERvdWJsZT4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIG1lbWJlclZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5Tm9Ub05hdGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFy
eU5vVG9OYXRpdmUuY3BwCmluZGV4IDAyZTMxOWVhZmNjYi4uN2Y2NDA4YTA5OGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGljdGlv
bmFyeU5vVG9OYXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REaWN0aW9uYXJ5Tm9Ub05hdGl2ZS5jcHAKQEAgLTIxLDEwICsyMSwxMCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdERpY3Rpb25hcnlOb1RvTmF0
aXZlLmgiCiAKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnROdW1iZXJzLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0T3B0aW9uYWwuaCIKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5o
PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Jc0luY3JlYXNpbmcuaD4K
QEAgLTQ5LDcgKzQ5LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBTVVBQUkVTU19V
TkNPVU5URURfTE9DQUwgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgYXV0byByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKIAogICAgIGlmICghSURMRG91YmxlOjppc051bGxWYWx1
ZShkaWN0aW9uYXJ5Lm1lbWJlcikpIHsKICAgICAgICAgYXV0byBtZW1iZXJWYWx1ZSA9IHRvSlM8
SURMRG91YmxlPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExEb3VibGU6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5Lm1lbWJlcikpOwpAQCAtODMsNyArODMs
NyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGljdGlv
bmFyeU5vVG9OYXRpdmU6OkdlbmVyYXRlS2V5dwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
ICAgICAgICAgbWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBtZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWVtYmVyIl9zKSk7CisgICAgICAgIG1lbWJl
clZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1
dG8gbWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRG91Ymxl
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbWVtYmVyVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25s
eUNvbmRpdGlvbmFsTWVtYmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1iZXJzLmNwcApp
bmRleCAwOGUwMGQ4NDRjOTAuLjljMmE4NWE3OWE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRp
dGlvbmFsTWVtYmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERpY3Rpb25hcnlXaXRoT25seUNvbmRpdGlvbmFsTWVtYmVycy5jcHAKQEAg
LTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Rlc3REaWN0
aW9uYXJ5V2l0aE9ubHlDb25kaXRpb25hbE1lbWJlcnMuaCIKIAotI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09i
amVjdENvbnN0cnVjdG9yLmg+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8d3Rm
L0lzSW5jcmVhc2luZy5oPgpAQCAtNjQsNyArNjQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25S
ZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeVdpdGhPbmx5Q29uZGl0aW9uYWxNZW1i
ZQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY29uZGl0aW9uYWxNZW1iZXJW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbmRpdGlvbmFsTWVt
YmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsTWVtYmVyIl9zKSk7CisgICAgICAg
IGNvbmRpdGlvbmFsTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbmRpdGlvbmFsTWVtYmVyIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4
Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNvbmRpdGlvbmFsTWVtYmVyQ29udmVyc2lv
blJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRGljdGlvbmFyeTxUZXN0RGljdGlvbmFy
eT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25kaXRpb25hbE1lbWJlclZhbHVlKTsKQEAgLTgz
LDcgKzgzLDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBTVVBQUkVTU19VTkNPVU5U
RURfTE9DQUwgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgYXV0byByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKTsKIAogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQogICAgIGlm
ICghSURMRGljdGlvbmFyeTxUZXN0RGljdGlvbmFyeT46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnku
Y29uZGl0aW9uYWxNZW1iZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAppbmRl
eCA2MGMyMmY3MDRiODIuLjAzODIzMWE5YmI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJp
dHkuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
IkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZ1NlY3VyaXR5Lmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCYXNlLmgiCkBAIC00NSw4ICs0NCwxMSBAQAogI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90Vmlz
aXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAg
LTE0MSwxNCArMTQzLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eVBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERvbWFpblNlY3VyaXR5Il9zCiAKIEpTQzo6U3RydWN0
dXJlKiBKU1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rl
c3REb21haW5TZWN1cml0eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTVGVzdERvbWFpblNlY3VyaXR5OjppbmZvKCksIEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90
eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdERvbWFpblNlY3VyaXR5OjpzX2luZm8gPSB7ICJUZXN0RG9tYWluU2VjdXJp
dHkiX3MsICZCYXNlOjpzX2luZm8sICZKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5KSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtYmVkZGVy
QXJyYXlMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbWJlZGRlckFycmF5TGlrZS5jcHAKaW5kZXggMzVkNmQzMzQyMWU0Li42ZDJhOTA0OGRm
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFbWJlZGRlckFycmF5TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtYmVkZGVyQXJyYXlMaWtlLmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTM1LDggKzM0LDEx
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgpAQCAtMTA4LDE0ICsxMTAsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEVtYmVkZGVyQXJyYXlMaWtlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RW1iZWRkZXJB
cnJheUwKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEVtYmVkZGVyQXJyYXlMaWtlUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7
CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdEVtYmVkZGVyQXJyYXlMaWtlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RW1iZWRkZXJBcnJheUxpa2U6OmluZm8o
KSwgSlNUZXN0RW1iZWRkZXJBcnJheUxpa2VQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwot
ICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZv
KCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhP
VVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW1iZWRkZXJBcnJh
eUxpa2U6OnNfaW5mbyA9IHsgIlRlc3RFbWJlZGRlckFycmF5TGlrZSJfcywgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbWJlZGRlckFy
cmF5TGlrZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVtcHR5RGljdGlvbmFyeS5jcHAKaW5kZXggMTJjYzhm
Nzk5MTYwLi5mOWIxOTQ4MWZiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbXB0eURpY3Rpb25hcnkuY3Bw
CkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0
RW1wdHlEaWN0aW9uYXJ5LmgiCiAKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNp
bmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5o
PgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Jc0luY3JlYXNpbmcuaD4K
QEAgLTYwLDcgKzYwLDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBTVVBQUkVTU19V
TkNPVU5URURfTE9DQUwgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgYXV0byByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKIAogICAgIFVOVVNFRF9QQVJBTShkaWN0aW9uYXJ5KTsK
ICAgICBVTlVTRURfVkFSSUFCTEUodGhyb3dTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZy5jcHAKaW5kZXggZTMyYTdhMTg5MGViLi5iYjRlYWVkOWFjMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJF
eHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgpAQCAtNDIsOCArNDEsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xODQsNyArMTg2LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RFbmFibGVkQnlTZXR0aW4KIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpAQCAtMjM1LDcgKzIzNyw3IEBAIHZv
aWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
aW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmc6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nIl9zLCAmQmFzZTo6c19p
bmZvLCAmSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1RhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRG
b3JDb250ZXh0LmNwcAppbmRleCBhNDkwZjBjYjhjMjMuLmZkZDZkY2QwM2ZhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRG
b3JDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVk
ZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2Fk
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0SW5saW5lcy5oIgpAQCAtMzksOCArMzgsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxs
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNy
b3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTMsMTQg
KzExNSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9yQ29udAogCiBKU0M6OlN0cnVjdHVyZSogSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0RW5h
YmxlZEZvckNvbnRleHRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6aW5mbygpLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFBy
b3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9s
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6c19pbmZvID0geyAiVGVzdEVuYWJs
ZWRGb3JDb250ZXh0Il9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0KSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDJlMmNlOTk3MGQwMS4uMGEyYzBmZDY2Mjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5j
bHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0Zh
Y2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCkBAIC00
MCw4ICszOSwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KQEAgLTgwLDcgKzgyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rp
b25hcnk8VGVzdEV2ZW50Q29uc3RydWN0b3I6OkluaXQ+PiBjb252ZXJ0RGkKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJ1YmJsZXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGJ1YmJsZXNWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYnViYmxlcyJf
cykpOworICAgICAgICBidWJibGVzVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJ1YmJsZXMiX3MpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9u
IHsgfSk7CiAgICAgfQogICAgIGF1dG8gYnViYmxlc0NvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0
PElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIGJ1YmJsZXNWYWx1ZSk7CkBAIC05MCw3
ICs5Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RF
dmVudENvbnN0cnVjdG9yOjpJbml0Pj4gY29udmVydERpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBjYW5jZWxhYmxlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBjYW5jZWxhYmxlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbmNlbGFibGUiX3Mp
KTsKKyAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYW5jZWxhYmxlIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2Vw
dGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNhbmNlbGFibGVDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYW5jZWxhYmxlVmFsdWUp
OwpAQCAtMTAwLDcgKzEwMiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0
aW9uYXJ5PFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0Pj4gY29udmVydERpCiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjb21wb3NlZFZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgY29tcG9zZWRWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3Qs
ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcG9z
ZWQiX3MpKTsKKyAgICAgICAgY29tcG9zZWRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY29tcG9zZWQiX3MpKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhj
ZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gY29tcG9zZWRDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb21wb3NlZFZhbHVlKTsK
QEAgLTExMiw3ICsxMTQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4+IGNvbnZlcnREaQogICAgICAgICAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIHRydXN0ZWRWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cnVzdGVk
VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInRydXN0ZWQiX3MpKTsKKyAgICAgICAgICAgICAgICB0cnVz
dGVkVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInRydXN0ZWQiX3MpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0PElETEJvb2xlYW4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRydXN0ZWRWYWx1ZSk7CkBAIC0xMjYsNyArMTI4LDcgQEAgdGVtcGxh
dGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdEV2ZW50Q29uc3RydWN0b3I6
OkluaXQ+PiBjb252ZXJ0RGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGF0
dHIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBhdHRyMlZhbHVl
ID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJhdHRyMiJfcykpOworICAgICAgICBhdHRyMlZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
dHRyMiJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBhdHRyMkNvbnZlcnNp
b25SZXN1bHQgPSBjb252ZXJ0T3B0aW9uYWxXaXRoRGVmYXVsdDxJRExET01TdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGF0dHIyVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETERP
TVN0cmluZz4geyByZXR1cm4gQ29udmVydGVyPElETERPTVN0cmluZz46OlJldHVyblR5cGUgeyBl
bXB0eVN0cmluZygpIH07IH0pOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHRlbXBsYXRlPD4gQ29udmVy
c2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0Pj4gY29u
dmVydERpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhdHRyM1ZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXR0cjNWYWx1ZSA9IFdlYkNvcmU6
OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYXR0cjMiX3MpKTsKKyAgICAgICAgYXR0cjNWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYXR0cjMiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0
RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gYXR0cjNDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydE9wdGlvbmFsV2l0aERlZmF1bHQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhdHRyM1ZhbHVlLCBbJl0gLT4gQ29udmVyc2lvblJlc3VsdDxJRExET01TdHJpbmc+IHsg
cmV0dXJuIENvbnZlcnRlcjxJRExET01TdHJpbmc+OjpSZXR1cm5UeXBlIHsgZW1wdHlTdHJpbmco
KSB9OyB9KTsKQEAgLTI2MCwxNCArMjYyLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvCiAK
IEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
fQogCiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjppbmZvKCksIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFt
ZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDAyNzI3ZmI3N2Q3YS4uZTcwMzVhOTViYzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJF
eHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
RmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnROdW1iZXJzLmgiCkBAIC00MSw5ICs0MCwxMiBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTksMTQgKzEyMSwxNCBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRh
cmdldCJfcywgJkJhcwogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5
KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVp
ZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpLCBKU1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3Ry
aW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7
CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRhcmdldDo6c19pbmZvID0geyAiVGVz
dEV2ZW50VGFyZ2V0Il9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0KSB9OwpAQCAtMTgxLDcgKzE4Myw3IEBAIGJv
b2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHCiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghaWdub3JlTmFtZWRQcm9wZXJ0aWVzKSB7CiAgICAg
ICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExJbnRlcmZhY2U8Tm9kZT47CkBAIC0xOTUsNyAr
MTk3LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6bGVnYWN5UGxhdGZvcm1PYmplY3RHZXRP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0cKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3RFdmVudFRhcmdl
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCkBAIC0zMDcsNyArMzA5LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGkKIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBib29sIGZvdW5k
ID0gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAg
ICBpZiAoIWZvdW5kKSB7CkBAIC0zMzYsNyArMzM4LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdl
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2IKICAgICAgICAgcmV0dXJuICFpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlJbmRleChpbmRleC52
YWx1ZSgpKTsKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNTdXBw
b3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsK
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisg
ICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXhjZXB0aW9uLmNwcAppbmRleCAzMzQwZTU4ZDc2MWQuLjA0ZGM3ZDM1MzZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlz
b1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzcs
OCArMzYsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTIsMTQgKzExNCwxNCBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9u
Il9zLCAmQmFzZTo6cwogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7
CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEV4Y2VwdGlvbjo6aW5mbygpLCBKU1Rlc3RFeGNlcHRp
b25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9u
Il9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdEV4Y2VwdGlvbikgfTsKQEAgLTE0Niw3ICsxNDgsNyBAQCBKU0M6OlN0cnVjdHVyZSog
SlNUZXN0RXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplYwogCiBKU09iamVjdCogSlNUZXN0RXhjZXB0aW9uOjpjcmVhdGVQcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIGF1dG8qIHN0cnVj
dHVyZSA9IEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGVPYmplY3QoZ2xvYmFsT2JqZWN0LmVy
cm9yU3RydWN0dXJlKCkpKTsKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgPSBKU1Rlc3RFeGNlcHRpb25Q
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LmVycm9yUHJvdG90eXBlKCkpOwogICAgIHN0cnVjdHVyZS0+c2V0TWF5QmVQcm90b3R5cGUodHJ1
ZSk7CiAgICAgcmV0dXJuIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290LmNwcAppbmRleCBmZmU2MTBmOTI4ZDIuLjk5MTc4MjI5ZWIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlT3Bh
cXVlUm9vdElubGluZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90Vmlz
aXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAg
LTExMywxNCArMTE1LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUFkCiAKIEpTQzo6U3RydWN0
dXJlKiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZv
aWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjppbmZvKCksIEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAg
V2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5
TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+
Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3Q6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiX3MsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwCmluZGV4IGU3ODI2OTQxNzI1YS4uZTUwYmY2YjU5YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRXh0
ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCIKQEAgLTM4LDggKzM3LDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZU9wYXF1ZVJvb3RJbmxpbmVz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTMsNyArMTE1LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUlzUmUKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpAQCAtMTMwLDcgKzEz
Miw3IEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIH0KICAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGll
cyAmJiBzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9u
YXJ5T2JqZWN0KHZtKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0
aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDEwYTA3MTQ3YTRiMC4uZTM4ZWQ2ODUwZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCkBAIC0xMTQsOCArMTEzLDExIEBACiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9u
UHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Ns
b3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgpAQCAtNjQ1LDcgKzY0Nyw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RE
T01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKCiAgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2xvYmFsT2JqZWN0
Il9zKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIFdl
YkNvcmU6OnN0b3JlZFByb3RvdHlwZShnbG9iYWxPYmplY3Quc3RydWN0dXJlKCksICZnbG9iYWxP
YmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9i
amVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUpOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0
R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVW
YWx1ZXMsICp0aGlzKTsKIH0KIApAQCAtNjY2LDEzICs2NjgsMTMgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEdsb2JhbE9iamVj
dCJfcywgJkIKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwor
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAogdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgV2ViQ29y
ZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NO
YW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHbG9iYWxPYmplY3Q6OnNfaW5mbyA9
IHsgIlRlc3RHbG9iYWxPYmplY3QiX3MsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHbG9iYWxPYmplY3Qp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKaW5kZXggOWNmZjYwNTY5YjgyLi5iNzZkY2Q2ZjNm
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmgKQEAgLTIxLDcgKzIxLDYgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiVGVzdEdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01CaW5kaW5nRmFjYWRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdyYXBwZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IDc1ODAxMmIzODIwOC4uOWZlZTdj
MmUzNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01DbGllbnRJc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNE
T01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
QEAgLTM3LDkgKzM2LDEyIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTEsMTQgKzExMywxNCBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdEluZGV4ZQogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpT
Qzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdU
YWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0K
IAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnNfaW5m
byA9IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIl9zLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIpIH07CkBAIC0xODAsNyArMTgyLDcgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5KEpTT2Jq
ZWMKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVy
biBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
IH0KIAogYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAK
aW5kZXggMGQ1NzJhY2JhOGYzLi45M2U3MzkxNDU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01DbGllbnRJc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgot
I2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKQEAgLTM3LDkgKzM2LDEyIEBACiAj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5
emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xv
dFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CkBAIC0xMTEsMTQgKzExMywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SQogCiBKU0M6OlN0
cnVjdHVyZSogSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7Cisg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogfQogCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6aW5mbygpLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1Rh
Z1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQog
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpz
X2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbikgfTsKQEAgLTE4MCw3ICsxODIsNyBAQCBib29sIEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bGVnYWN5UGxhdGZvcm1PYmplY3RH
ZXRPd25Qcm9wZXJ0eShKUwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCmluZGV4IDVkMmJmODI0MDUwMS4uNjg0NmNjZjI3NjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjgs
NyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNv
bnZlcnROdW1iZXJzLmgiCkBAIC00MSw5ICs0MCwxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Nl
bGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTIwLDE0ICsxMjIsMTQg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdEluZGUKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmluZm8oKSwgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
aW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19X
SVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIpIH07CkBAIC0xODksNyAr
MTkxLDcgQEAgYm9vbCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmxlZ2FjeVBs
YXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPYmoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkuY3BwCmluZGV4IDhmN2I5ZjRkY2NjNy4uY2U0ZDY2ZmY4ZTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5oIgogCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9v
bGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydE51bWJlcnMuaCIKQEAgLTMxLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU1ZvaWRD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Jc0luY3JlYXNpbmcuaD4KQEAgLTc1LDcgKzc1LDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdEluaGVyaXRl
ZERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGJvb2xNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciJfcykpOworICAg
ICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsg
fSk7CiAgICAgfQogICAgIGF1dG8gYm9vbE1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0
PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVy
VmFsdWUpOwpAQCAtODUsNyArODUsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURM
RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aQogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBXZWJD
b3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAg
ICBhdXRvIGNhbGxiYWNrTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9u
YWw8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCB1bmNoZWNrZWREb3duY2FzdDxKU0RPTUdsb2JhbE9i
amVjdD4obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtOTUsNyArOTUsNyBAQCB0ZW1wbGF0ZTw+
IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4+
IGNvbnZlcnREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFu
TWVtYmVyIl9zKSk7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxCb29sZWFuTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRv
IHBhcnRpYWxCb29sZWFuTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9u
YWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxCb29sZWFuTWVtYmVy
VmFsdWUpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJ
RExEaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Pj4gY29udmVydERpY3RpCiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhD
b25kaXRpb25hbFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFy
dGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmpl
Y3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiX3MpKTsKKyAgICAgICAgcGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1i
ZXJXaXRoQ29uZGl0aW9uYWwiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8g
cGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxDb252ZXJzaW9uUmVzdWx0ID0gY29u
dmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CkBAIC0xMTcsNyArMTE3LDcgQEAg
dGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERp
Y3Rpb25hcnk+PiBjb252ZXJ0RGljdGkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxDYWxsYmFja01lbWJlciJfcykpOworICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwog
ICAgIH0KICAgICBhdXRvIHBhcnRpYWxDYWxsYmFja01lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBj
b252ZXJ0PElETE9wdGlvbmFsPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsIHVuY2hlY2tl
ZERvd25jYXN0PEpTRE9NR2xvYmFsT2JqZWN0PihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkBAIC0x
MjcsNyArMTI3LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8
VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGkKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJW
YWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcykpOworICAg
ICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJl
ZExvbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGlmIChwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTQxLDcgKzE0MSw3
IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RJbmhlcml0
ZWREaWN0aW9uYXJ5Pj4gY29udmVydERpY3RpCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0K
ICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExPcHRpb25hbDxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsU3Ry
aW5nTWVtYmVyVmFsdWUpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lv
blJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Pj4gY29udmVydERp
Y3RpCiAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgICAgICAgICAg
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcykpOworICAgICAgICAgICAgICAgIHBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3Ry
aW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciX3MpKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0PElETE9wdGlvbmFs
PElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxTdHJpbmdNZW1iZXJX
aXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB0ZW1wbGF0ZTw+
IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeT4+
IGNvbnZlcnREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlh
bFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxl
bWVudGVkQXNWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldp
dGhJbXBsZW1lbnRlZEFzIl9zKSk7CisgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJX
aXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0
aEltcGxlbWVudGVkQXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFy
dGlhbFVuc2lnbmVkTG9uZ01lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlv
bmFsPElETFVuc2lnbmVkTG9uZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB0
ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeT4+IGNvbnZlcnREaWN0aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBzdHJpbmdNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7Cisg
ICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0
aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gc3RyaW5nTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9
IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
c3RyaW5nTWVtYmVyVmFsdWUpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIEpTQzo6SlNPYmplY3QqIGNv
bnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKCiAgICAgU1VQUFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OmNvbnN0cnVjdEVt
cHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90
eXBlKCkpOworICAgIGF1dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CiAKICAgICBpZiAo
IUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKICAgICAg
ICAgYXV0byBib29sTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShk
aWN0aW9uYXJ5LmJvb2xNZW1iZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlv
bmFyeTIuY3BwCmluZGV4IGY5NDRiZTAzNTM0Ni4uZTliOGNjOWU2ZWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGlj
dGlvbmFyeTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAKQEAgLTIxLDEzICsyMSwxMyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmgi
CiAKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCb29sZWFuLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0T3B0aW9uYWwuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZvaWRDYWxs
YmFjay5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgogI2luY2x1ZGUgPHd0Zi9Jc0luY3JlYXNpbmcuaD4KQEAgLTYzLDcgKzYzLDcgQEAgdGVt
cGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rp
b25hcnkyPj4gY29udmVydERpY3QKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJv
b2xNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciJfcykpOworICAgICAgICBi
b29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAg
ICAgfQogICAgIGF1dG8gYm9vbE1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9w
dGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUp
OwpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTI+PiBjb252ZXJ0RGljdAogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBv
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRv
IGNhbGxiYWNrTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsYmFja01lbWJlclZhbHVlLCB1bmNoZWNrZWREb3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdD4o
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtODMsNyArODMsNyBAQCB0ZW1wbGF0ZTw+IENvbnZl
cnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTI+PiBjb252
ZXJ0RGljdAogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5nTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdNZW1iZXJW
YWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CisgICAgICAgIHN0cmluZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAg
fQogICAgIGF1dG8gc3RyaW5nTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0
aW9uYWw8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgc3RyaW5nTWVtYmVyVmFs
dWUpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEpTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5
VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAgU1VQ
UFJFU1NfVU5DT1VOVEVEX0xPQ0FMIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworICAgIGF1
dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CiAKICAgICBpZiAoIUlETEJvb2xlYW46Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKICAgICAgICAgYXV0byBib29sTWVt
YmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmJvb2xN
ZW1iZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZTMxOTM1ZjU4MTExLi40MGM0OTg1
ZjZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0T3B0aW9uYWwuaCIKQEAgLTUyLDggKzUxLDExIEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CkBAIC00NjIsNyArNDY0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZSJfcywgJkJh
c2U6OnMKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
IH0KIAogdm9pZCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKQEAgLTQ4MSw4ICs0ODMsOCBAQCB2b2lkIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogI2VuZGlmCiAgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICBmbGF0dGVu
RGljdGlvbmFyeU9iamVjdCh2bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgV2ViQ29yZTo6Z2V0RGlyZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgV2ViQ29y
ZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NO
YW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNf
aW5mbyA9IHsgIlRlc3RJbnRlcmZhY2UiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlKSB9OwpAQCAtMTE0Myw3ICsx
MTQ1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBUZXN0SW50ZXJmYWNlSXRlcmF0b3IqIGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNUZXN0SW50ZXJmYWNl
JiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kLCBJbnRlcm5hbEl0ZXJhdG9yJiYg
aXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmNwcAppbmRleCA5MDliYjMwODg1MTEuLjVhOWI4NWIxZGE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RP
TUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9N
QmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKQEAgLTM3LDggKzM2LDExIEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNp
dG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAt
MTEyLDE0ICsxMTQsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXIKIAogSlNDOjpTdHJ1Y3R1
cmUqIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQog
CiB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJl
aWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6
OmluZm8oKSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGVUYWJsZVZh
bHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRo
aXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFs
U3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZSJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSkgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SXRlcmFibGUuY3BwCmluZGV4IGZiNjM1OTczZjE5YS4uNDU4Yjc2YTgwYjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFi
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUNs
aWVudElzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRl
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCkBAIC00MCw4ICszOSwxMSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1
aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9y
TWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTI0
LDE1ICsxMjYsMTUgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0SXRlcmFibGUiX3MsICZCYXNlOjpzX2kKIAogSlNDOjpTdHJ1Y3R1cmUq
IEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
IHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdEl0ZXJhYmxl
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SXRlcmFibGU6
OmluZm8oKSwgSlNUZXN0SXRlcmFibGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6
OmdldERpcmVjdCh0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250
cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0SXRlcmFibGU6OnNfaW5mbyA9IHsgIlRlc3RJdGVyYWJsZSJfcywg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RJdGVyYWJsZSkgfTsKQEAgLTIxNiw3ICsyMTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFRl
c3RJdGVyYWJsZUl0ZXJhdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTVGVzdEl0ZXJhYmxlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBr
aW5kLCBJbnRlcm5hbEl0ZXJhdG9yJiYgaXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCBjNjA1NTJhYzliMmMuLmZiMmI1N2I2NjVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0yNSw3ICsyNSw2
IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RP
TUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9N
QmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFs
T2JqZWN0SW5saW5lcy5oIgpAQCAtMzQsOCArMzMsMTEgQEAKICNpbmNsdWRlICJUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90Vmlz
aXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAg
LTEyMiwxNCArMTI0LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRpbkNvCiAKIEpTQzo6U3RydWN0
dXJlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9p
ZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1By
b3BlcnRpZXModm0sIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjppbmZvKCksIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJD
b3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFz
c05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiX3MsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3Bw
CmluZGV4IGZhZDZiYjUyOThkNS4uMmFjNzBiNGYxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4
dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29T
dWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJp
bmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydE9wdGlvbmFsLmgiCkBAIC00MCw4ICszOSwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRv
ck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTE2
OCwxNCArMTcwLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0CiAKIEpTQzo6U3RydWN0dXJl
KiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjppbmZvKCksIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2Vi
Q29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xh
c3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b246OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iX3MsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9i
amVjdC5jcHAKaW5kZXggZWY4MmM0MGU2MTMyLi40ZTAxZTNjMDAzZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lOb0ludGVy
ZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtNDMsOCArNDIsMTEg
QEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVy
ZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlv
bnMuaD4KQEAgLTExOCwxNCArMTIwLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lO
b0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdExlZ2FjeU5vCiAKIEpT
Qzo6U3RydWN0dXJlKiBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAogdm9pZCBKU1Rlc3RMZWdhY3lOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0
OjppbmZvKCksIEpTVGVzdExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlVGFibGVWYWx1
ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QpIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggNGRlZmI1ZDI1YjFmLi5hNmYy
ZWZjZDJiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5o
IgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC00Miw4ICs0
MSwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJz
cGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bv
aW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEyMCwxNCArMTIyLDE0IEBAIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TGVnYWN5T3ZlCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpO
b25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjppbmZvKCksIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNO
b250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c19pbmZvID0geyAiVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKQEAgLTE5
Miw3ICsxOTQsNyBAQCBib29sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmxlZ2FjeVBs
YXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPYmplY3QqCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0T3duUHJvcGVy
dHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0zMTEsNyArMzEzLDcgQEAgYm9vbCBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBpbXBsLmlz
U3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkp
KSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQp
KQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAg
LTMzMyw3ICszMzUsNyBAQCBib29sIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsTwogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIGlmIChpbXBsLmlzU3Vw
cG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7
CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQor
ICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtl
LmNwcAppbmRleCBiODk4MTVhNWYxYjQuLjI4MDk3NGVlODI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgi
CiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
LSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEFueS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAgLTQxLDggKzQwLDExIEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5h
bHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CkBAIC0xMzcsMTUgKzEzOSwxNSBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TWFwTGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE1hcExpa2UiX3MsICZCYXNlOjpzX2lu
ZgogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0TWFwTGlrZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAog
dm9pZCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNUZXN0TWFwTGlrZTo6aW5mbygpLCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlVGFibGVWYWx1
ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCBXZWJDb3JlOjpnZXREaXJlY3QodGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBXZWJDb3JlOjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdU
YWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJp
ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2U6OnNfaW5mbyA9IHsgIlRl
c3RNYXBMaWtlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE1hcExpa2UpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKaW5kZXggZDQwZTFkYTY4OGU5Li42
ZjkwNmI3NTZjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJJRExU
eXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRBbnku
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCkBAIC00NCw4ICs0MywxMSBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVh
cEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgpAQCAtMTQxLDE1ICsxNDMsMTUgQEAgY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3QKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmluZm8oKSwgSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgV2ViQ29y
ZTo6Z2V0RGlyZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5l
bnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgp
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpzX2lu
Zm8gPSB7ICJUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyJfcywgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNYXBMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBkMTZiZDYzZDg2
OGUuLjYwZGQ3ZTkyYjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNs
dWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzgsOSArMzcsMTIgQEAKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExMiwxNCArMTE0
LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZv
aWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyOjppbmZvKCksIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
clByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiX3MsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyKSB9OwpAQCAtMTc5LDcgKzE4MSw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpsZWdhY3lQbGF0Zm9y
bU9iamVjdEdldE93blByb3BlcnR5CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmpl
Y3QsIDAsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghaWdub3JlTmFtZWRQcm9wZXJ0aWVzKSB7CiAg
ICAgICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CkBAIC0xOTMsNyArMTk1
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmxlZ2Fj
eVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
b2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJl
dHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjYyLDggKzI2NCw4IEBAIGJvb2wgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCoKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9Owot
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBXZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3Qo
cHJvdG90eXBlKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0
KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYg
KCFmb3VuZCkgewpAQCAtMzA2LDggKzMwOCw4IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPCiAK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2Vi
Q29yZTo6c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0
KTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2ViQ29yZTo6Z2V0
UHJvcGVydHlTbG90KGFzT2JqZWN0KHByb3RvdHlwZSksIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAoIWZvdW5kKSB7CkBAIC0zNDIsNyArMzQ0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QK
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBib29sIGZv
dW5kID0gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0
KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
ICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zNzYsNyArMzc4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
SlNHbG8KICAgICAgICAgcmV0dXJuICFpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlJbmRleChpbmRl
eC52YWx1ZSgpKTsKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNT
dXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkp
IHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRo
aXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkp
CisgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggMDk4YzRhOTE3MzgzLi5lMzBkMmNmMWRmNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVk
RE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1
ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRs
aW5nLmgiCkBAIC0zOCw5ICszNywxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTEyLDE0ICsxMTQsMTQgQEAgY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlOjpzX2luZm8gPQogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVp
ZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6aW5mbygpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
VGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9
CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6c19pbmZvID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKSB9OwpA
QCAtMTc5LDcgKzE4MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvCiAgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIDAsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
ICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghaWdub3Jl
TmFtZWRQcm9wZXJ0aWVzKSB7CiAgICAgICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01T
dHJpbmc7CkBAIC0xOTMsNyArMTk1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6bGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm8KICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3Jl
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9i
amVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBA
IC0yNjIsOCArMjY0LDggQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmoKIAogICAgIGlmICghcHJv
cGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IFdl
YkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgdGhpc09iamVj
dCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBXZWJDb3Jl
OjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJvdG90eXBlKSwgbGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90LmRp
c2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzA2LDggKzMwOCw4IEBA
IGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9Owot
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBlKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgV2ViQ29yZTo6Z2V0UHJvcGVydHlTbG90KGFzT2JqZWN0KHByb3RvdHlw
ZSksIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBib29s
IGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zNDIsNyArMzQ0LDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG8KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3lt
Ym9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVj
dC0+dm0oKSB9OwotICAgICAgICBib29sIGZvdW5kID0gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAg
IHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zNzYsNyAr
Mzc4LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLAogICAgICAgICByZXR1cm4gIWltcGwuaXNT
dXBwb3J0ZWRQcm9wZXJ0eUluZGV4KGluZGV4LnZhbHVlKCkpOwogICAgIGlmICghcHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkgJiYgaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdEZv
ckdldCB7ICZ0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBpZiAoIVdlYkNv
cmU6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKKyAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3RGb3JHZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBy
ZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA1YzUyMjRlZjIxNDcu
Ljg3YzRkMDkxNmFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5o
IgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIK
QEAgLTQyLDkgKzQxLDEyIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vi
c3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Q
b2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMjMsMTQgKzEyNSwxNCBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIgogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6aW5m
bygpLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRh
YmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6c19pbmZvID0geyAi
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIl9zLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyKSB9OwpAQCAtMTkwLDcgKzE5Miw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmxlZ2FjeVBsYXRmb3JtT2Jq
ZWN0R2V0T3duUHJvcGVyCiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIDAs
IHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAgICAgfQogICAgIGlmICghaWdub3JlTmFtZWRQcm9wZXJ0aWVzKSB7CiAgICAgICAg
IHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CkBAIC0yMDQsNyArMjA2LDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6bGVnYWN5UGxh
dGZvcm1PYmplY3RHZXRPd25Qcm9wZXIKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yNzMsOCArMjc1LDggQEAgYm9vbCBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBwcm90
b3R5cGUuaXNPYmplY3QoKSAmJiBXZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJv
dG90eXBlKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsK
KyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFm
b3VuZCkgewpAQCAtMzE3LDggKzMxOSw4IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhCiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29y
ZTo6c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTsK
LSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2ViQ29yZTo6Z2V0UHJv
cGVydHlTbG90KGFzT2JqZWN0KHByb3RvdHlwZSksIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
IWZvdW5kKSB7CkBAIC0zNTMsNyArMzU1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamUKIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBib29sIGZvdW5k
ID0gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAg
ICBpZiAoIWZvdW5kKSB7CkBAIC0zODcsNyArMzg5LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0cKICAgICAgICAgcmV0dXJuICFpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlJbmRleChpbmRleC52
YWx1ZSgpKTsKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNTdXBw
b3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsK
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisg
ICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAwNjhmZDBk
MmZjY2UuLjg4Mzg1YzBhMDJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERP
TUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTEsMTQgKzExMywxNCBA
QCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZQogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0TmFtZWRE
ZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6aW5mbygpLCBKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNv
cmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNz
TmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyIl9zLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllcikgfTsKQEAgLTE4Myw3ICsxODUsNyBAQCBib29sIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6bGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0
eShKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CkBAIC0yODEsNyArMjgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmEKIAogICAgIGlmICgh
cHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBib29sIGZvdW5kID0gV2ViQ29y
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWZv
dW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uLmNwcAppbmRleCBhYjA2MmM2NzQ4YTQuLjc0MzU0MTgyYjBkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNs
dWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKQEAgLTM4LDggKzM3LDExIEBA
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclBy
ZXBhcmF0aW9ucy5oPgpAQCAtMTExLDE0ICsxMTMsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TmEKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpO
b25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmluZm8oKSwgSlNUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFt
ZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb246OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcywg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbikgfTsKQEAgLTE4Myw3ICsxODUsNyBAQCBi
b29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpsZWdhY3lQbGF0Zm9ybU9i
amVjdEdldE93blByb3BlcnR5KEpTTwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI4MSw3ICsyODMsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBKUwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGJv
b2wgZm91bmQgPSBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnku
cmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICAgICAgIGlmICghZm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDEyNTIxNzE4OGMwNS4uYTRhYTMwZGI2NGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtNDEsOCArNDAsMTEgQEAKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZp
c2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBA
IC0xMTksMTQgKzEyMSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZAogCiBKU0M6OlN0cnVj
dHVyZSogSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9
CiAKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cjo6aW5mbygpLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZVRhYmxl
VmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyKSB9OwpA
QCAtMTkxLDcgKzE5Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6
OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPYmplCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0T3du
UHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjg5LDcgKzI5MSw3IEBAIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCkgfTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAg
ICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90
LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFmb3VuZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggZDdhNWI0
MzEyOWEyLi41N2Y1YmU5OTMwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUg
IkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRp
bmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgiCkBAIC0zOCw5ICszNywxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Nl
bGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTEyLDE0ICsxMTQsMTQg
QEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmEKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGlj
UHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmluZm8o
KSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMs
IHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlciJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcikg
fTsKQEAgLTE3OSw3ICsxODEsNyBAQCBib29sIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5KEpTTwogICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAoIWlnbm9y
ZU5hbWVkUHJvcGVydGllcykgewogICAgICAgICB1c2luZyBHZXR0ZXJJRExUeXBlID0gSURMRE9N
U3RyaW5nOwpAQCAtMTkzLDcgKzE5NSw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXI6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChv
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMzA1LDcg
KzMwNyw3IEBAIGJvb2wgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEpTCiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFmb3VuZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGguY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCmluZGV4IDA4OGZkNmIwN2EzYS4u
NWRjMjY1YWFiZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3Ry
aW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKQEAgLTM4LDggKzM3
LDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTExLDE0ICsxMTMsMTQgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZEdldHRlckMKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGg6OmluZm8oKSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywg
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCJf
cywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoKSB9OwpAQCAtMTgzLDcgKzE4NSw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6bGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CkBAIC0yODEsNyArMjgzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamUKIAogICAgIGlmICgh
cHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0
aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAm
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBib29sIGZvdW5kID0gV2ViQ29y
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWZv
dW5kKSB7CkBAIC0zMDgsNyArMzEwLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXgKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5
TmFtZShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAg
ICAgICBpZiAoIVdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKKyAgICAgICAgaWYgKCFK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CkBAIC0zMzAsNyArMzMyLDcgQEAg
Ym9vbCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBpZiAoaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5TmFt
ZShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAg
ICBpZiAoIVdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKKyAgICAgICAgaWYgKCFKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChjZWxsLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA1ZjBlZjY4NTgzMjEuLmFmNTE3OGQ1MDZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgot
I2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgog
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKQEAgLTM4LDggKzM3LDExIEBACiAj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5
emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ry
dWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBh
cmF0aW9ucy5oPgpAQCAtMTExLDE0ICsxMTMsMTQgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXQK
IAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7
CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXI6OmluZm8oKSwgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2
aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllciJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcikgfTsKQEAgLTE4Myw3
ICsxODUsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpsZWdhY3lQbGF0
Zm9ybU9iamVjdEdldE93blByb3BlcnR5KEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI4MSw3ICsyODMsNyBAQCBib29sIEpTVGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbAogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAg
ICAgIGJvb2wgZm91bmQgPSBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgICAgIGlmICghZm91bmQpIHsKQEAgLTMwOCw3ICszMTAsNyBAQCBib29sIEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEpTR2xvYmFsT2JqZWN0KgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBp
bXBsLmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlT
bG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RG
b3JHZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKQEAgLTMzMCw3ICszMzIsNyBAQCBib29sIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVy
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIGlmIChpbXBs
LmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JH
ZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBlMTA0
Y2NlYmExOGMuLjI2YTFiMTA2NzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVu
ZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNh
ZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCkBAIC0zOSw4ICszOCwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExNywxNCArMTE5
LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjppbmZvKCksIEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwot
ICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZv
KCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhP
VVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIi
X3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcikgfTsKQEAgLTE4OSw3ICsxOTEsNyBAQCBi
b29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0
R2V0T3duUHJvcGVydHkoSlNPYmplYwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQpAQCAtMjg3LDcgKzI4OSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgYm9vbCBm
b3VuZCA9IFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBib29sIGZvdW5kID0gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
ICAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzE0LDcgKzMxNiw3IEBAIGJvb2wgSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNTdXBw
b3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsK
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qt
PnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisg
ICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzM2
LDcgKzMzOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgaWYgKGltcGwuaXNTdXBwb3J0
ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZt
KCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmpl
Y3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAg
ICAgIGlmICghSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmM0MTJjYWUxNjI0Li42OTli
MjM0MTlhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2Vz
LmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkBAIC0zOCw4
ICszNywxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExMSwxNCArMTEzLDE0IEBAIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE5hbWVkU2V0CiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpT
Qzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE5hbWVk
U2V0dGVyTm9JZGVudGlmaWVyOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1i
b2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpzX2luZm8gPSB7ICJU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIp
IH07CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
cjo6bGVnYWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wZXJ0eShKU09iamVjdCoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVj
dCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yMzMsOCArMjM1LDggQEAg
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG8KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3Rv
dHlwZSh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgICAgIGJvb2wg
Zm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBXZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3Qo
YXNPYmplY3QocHJvdG90eXBlKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5
cGVEaXJlY3QoKTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNl
dCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
ICAgICAgaWYgKCFmb3VuZCkgewpAQCAtMjY5LDggKzI3MSw4IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXI6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGlu
ZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSB9OwotICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gV2ViQ29yZTo6c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0
aGlzT2JqZWN0KTsKLSAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2Vi
Q29yZTo6Z2V0UHJvcGVydHlTbG90KGFzT2JqZWN0KHByb3RvdHlwZSksIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBib29sIGZvdW5kID0gcHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgICBpZiAoIWZvdW5kKSB7CkBAIC0yOTUsNyArMjk3LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
SlNHbG9iYWwKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAg
ICBib29sIGZvdW5kID0gV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIGJvb2wgZm91
bmQgPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVu
dHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zMjcsNyArMzI5LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCoKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgaW1w
bC5pc1N1cHBvcnRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5h
bWUpKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSB9OwotICAgICAgICBpZiAoIVdlYkNvcmU6OmdldE93blByb3BlcnR5U2xv
dCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9y
R2V0KSkKKyAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CkBAIC0zNDksNyArMzUxLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWwKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KTsKICAgICBpZiAoaW1wbC5p
c1N1cHBvcnRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNhbEdsb2JhbE9i
amVjdC0+dm0oKSB9OwotICAgICAgICBpZiAoIVdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCgm
dGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90Rm9yR2V0
KSkKKyAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXgg
MWVmZDBmMjQ4MTU5Li43NGY0YTRiZmZjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNs
dWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0
b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0x
MTEsMTQgKzExMywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbQogCiBKU0M6OlN0cnVjdHVy
ZSogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0K
IAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbjo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24pIH07CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5KEpTT2IKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTIzMyw4
ICsyMzUsOCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpYwogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29yZTo6
c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTsKLSAg
ICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIFdlYkNvcmU6OmdldFBy
b3BlcnR5U2xvdChhc09iamVjdChwcm90b3R5cGUpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dW
TUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICBpZiAoIWZvdW5kKSB7CkBAIC0yNjksOCArMjcxLDggQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07Ci0gICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCksIHRoaXNPYmplY3QpOwotICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBXZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJvdG90eXBlKSwgbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIGJvb2wgZm91bmQg
PSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBzbG90
LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgIGlmICghZm91bmQpIHsKQEAgLTI5NSw3ICsyOTcsNyBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTRwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
IH07Ci0gICAgICAgIGJvb2wgZm91bmQgPSBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xvdC5k
aXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghZm91bmQpIHsKQEAgLTMyNyw3ICszMjksNyBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSAmJiBpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3du
UHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3RGb3JHZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZv
ckdldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKQEAgLTM0OSw3ICszNTEsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTRwog
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAg
IGlmIChpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJv
cGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3RGb3JHZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
JnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdl
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVj
dDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApp
bmRleCAzYWJiOWQ3NWFkZjUuLjhlZTQ4ODQ5Y2JlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBA
IC00MSw4ICs0MCwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExOSwxNCArMTIxLDE0IEBAIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRTCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsK
LSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6
OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFt
ZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiX3MsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcikgfTsKQEAgLTE5MSw3ICsxOTMsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVy
dHkoSlNPYmplYwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQpAQCAtMjQxLDggKzI0Myw4IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHCiAKICAgICBpZiAo
IXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUodGhpc09iamVjdC0+c3RydWN0dXJlKCksIHRoaXNP
YmplY3QpOwotICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2Vi
Q29yZTo6Z2V0UHJvcGVydHlTbG90KGFzT2JqZWN0KHByb3RvdHlwZSksIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xv
dC5kaXNhbGxvd1ZNRW50cnkucmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghZm91bmQpIHsKQEAgLTI3Nyw4ICsyNzks
OCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dEJ5SW5kZXgoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbAogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlz
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0g
fTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgYm9vbCBmb3VuZCA9IHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIFdlYkNvcmU6OmdldFByb3BlcnR5U2xvdChhc09iamVjdChwcm90
b3R5cGUpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
Ym9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmdldFByb3BlcnR5U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzAzLDcgKzMw
NSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkgfTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBzbG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzM1
LDcgKzMzNyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjCiAKICAgICBpZiAoIXByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RG
b3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJD
b3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzU3LDcgKzM1OSw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
bmRleCk7CiAgICAgaWYgKGltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1l
VG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RGb3JH
ZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJDb3Jl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0
dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDhiNDZmY2ZiNjI3ZC4uYTdiNjM1Nzk3NmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUFi
c3RyYWN0T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
IkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydE51bWJlcnMuaCIKQEAgLTQyLDkgKzQxLDEyIEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3Mu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMjMsMTQgKzEy
NSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
clByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbQogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6aW5m
bygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlVGFibGVWYWx1
ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIpIH07
CkBAIC0xOTAsNyArMTkyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3BlcnR5KEpTT2IKICAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9CiAgICAgaWYgKCFpZ25vcmVO
YW1lZFByb3BlcnRpZXMpIHsKICAgICAgICAgdXNpbmcgR2V0dGVySURMVHlwZSA9IElETERPTVN0
cmluZzsKQEAgLTIwNCw3ICsyMDYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXI6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPYgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjY1LDggKzI2
Nyw4IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBXZWJDb3JlOjpzdG9y
ZWRQcm90b3R5cGUodGhpc09iamVjdC0+c3RydWN0dXJlKCksIHRoaXNPYmplY3QpOwotICAgICAg
ICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgV2ViQ29yZTo6Z2V0UHJvcGVy
dHlTbG90KGFzT2JqZWN0KHByb3RvdHlwZSksIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50
cnkucmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICAgICAgIGlmICghZm91bmQpIHsKQEAgLTMwMSw4ICszMDMsOCBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdAogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsKLSAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgp
ICYmIFdlYkNvcmU6OmdldFByb3BlcnR5U2xvdChhc09iamVjdChwcm90b3R5cGUpLCBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgYm9vbCBmb3VuZCA9IHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIHNsb3QuZGlz
YWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzMwLDcgKzMzMiw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsK
LSAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBi
b29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBzbG90LmRpc2Fs
bG93Vk1FbnRyeS5yZXNldCgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzY0LDcgKzM2Niw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iCiAgICAgICAgIHJldHVybiAhaW1wbC5pc1N1cHBvcnRlZFBy
b3BlcnR5SW5kZXgoaW5kZXgudmFsdWUoKSk7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSAmJiBpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5n
KHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3du
UHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3RGb3JHZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZv
ckdldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAppbmRleCAzNDUyZmI5YmRiMjEuLmE5YzYy
MWYyNTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAiSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCkBA
IC00Miw5ICs0MSwxMiBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNw
YWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9p
bnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTIzLDE0ICsxMjUsMTQgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1By
b3BlcnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6
OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciJfcywgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKSB9OwpAQCAtMTkwLDcgKzE5Miw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6bGVn
YWN5UGxhdGZvcm1PYmplY3RHZXRPd25Qcm9wCiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIDAsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfQogICAgIGlmICghaWdub3JlTmFtZWRQcm9wZXJ0aWVz
KSB7CiAgICAgICAgIHVzaW5nIEdldHRlcklETFR5cGUgPSBJRExET01TdHJpbmc7CkBAIC0yMDQs
NyArMjA2LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3AKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI3Myw4ICsyNzUsOCBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpIH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29yZTo6c3RvcmVkUHJv
dG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTsKLSAgICAgICAgYm9v
bCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIFdlYkNvcmU6OmdldFByb3BlcnR5U2xv
dChhc09iamVjdChwcm90b3R5cGUpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCgpOworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJl
c2V0KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zMTcsOCArMzE5LDggQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXRCeUluZGV4KEpTQ2VsbCogY2Vs
bCwgSlNHbG8KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwg
aW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtIH07Ci0gICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBXZWJDb3JlOjpzdG9yZWRQcm90b3R5cGUodGhpc09iamVjdC0+c3RydWN0dXJlKCks
IHRoaXNPYmplY3QpOwotICAgIGJvb2wgZm91bmQgPSBwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBX
ZWJDb3JlOjpnZXRQcm9wZXJ0eVNsb3QoYXNPYmplY3QocHJvdG90eXBlKSwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIGJvb2wgZm91bmQgPSBwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBzbG90LmRpc2FsbG93
Vk1FbnRyeS5yZXNldCgpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgIGlmICghZm91bmQpIHsKQEAgLTM1Myw3ICszNTUsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAg
ICAgIGJvb2wgZm91bmQgPSBXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgc2xvdC5kaXNhbGxvd1ZN
RW50cnkucmVzZXQoKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICAgICAgIGlmICghZm91bmQpIHsKQEAgLTM4Nyw3ICszODksNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgSgogICAgICAgICByZXR1cm4gIWltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0
eUluZGV4KGluZGV4LnZhbHVlKCkpOwogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkg
JiYgaW1wbC5pc1N1cHBvcnRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdEZvckdldCB7ICZ0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICBpZiAoIVdlYkNvcmU6OmdldE93blByb3Bl
cnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90Rm9yR2V0KSkKKyAgICAgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0
aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggMmRlZjcwNDZkZWVhLi5iYTFmZGNkYTQ5
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJF
eHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
RmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxs
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNy
b3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTEsMTQg
KzExMywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6c19pbmZvID0gewogCiBKU0M6OlN0cnVjdHVyZSogSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
IH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBX
ZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5j
bGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnM6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMpIH07CkBAIC0xODMsNyArMTg1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93blByb3AKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAog
Ym9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
QEAgLTMwMyw3ICszMDUsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSgogCiAgICAgaWYgKCFw
cm9wZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBpbXBsLmlzU3VwcG9ydGVkUHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIGlm
ICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQorICAgICAgICBpZiAoIUpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTMyNSw3ICszMjcsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlbGV0ZVByb3BlcnR5
QnlJbmRleChKU0NlbGwqCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
KHZtLCBpbmRleCk7CiAgICAgaWYgKGltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFX
ZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAgICAgIGlmICghSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoY2VsbCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAppbmRleCA1
YTYwMmRiMDdmNjYuLmRjZTg3NjRiZDIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJKU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtNDIsOCArNDEsMTEgQEAKICNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
RGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CkBAIC0xMzcsMTQgKzEzOSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJvdG90eXBlOjpzX2luZgogCiBK
U0M6OlN0cnVjdHVyZSogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
SlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0YXRpY1Byb3Bl
cnRpZXModm0sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
czo6aW5mbygpLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzIl9zLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKSB9OwpAQCAt
MjA5LDcgKzIxMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzOjpsZWdhY3lQbGF0Zm9ybU9iamVjdEdldE93CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0T3duUHJv
cGVydHlTbG90KG9iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI1OSw4
ICsyNjEsOCBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllczo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYQogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpIH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gV2ViQ29yZTo6
c3RvcmVkUHJvdG90eXBlKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0KTsKLSAg
ICAgICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVjdCgpICYmIFdlYkNvcmU6OmdldFBy
b3BlcnR5U2xvdChhc09iamVjdChwcm90b3R5cGUpLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBib29sIGZvdW5kID0gcHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dW
TUVudHJ5LnJlc2V0KCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgICAgICBpZiAoIWZvdW5kKSB7CkBAIC0yOTUsOCArMjk3LDggQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnB1dEJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLAogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0gfTsKLSAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IFdlYkNvcmU6OnN0b3JlZFByb3RvdHlwZSh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKSwgdGhpc09iamVjdCk7Ci0gICAgYm9vbCBmb3VuZCA9IHByb3RvdHlwZS5pc09iamVj
dCgpICYmIFdlYkNvcmU6OmdldFByb3BlcnR5U2xvdChhc09iamVjdChwcm90b3R5cGUpLCBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgYm9vbCBmb3VuZCA9
IHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIHNsb3Qu
ZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICAgaWYgKCFmb3VuZCkgewpAQCAtMzI3LDcgKzMyOSw3IEBAIHN0YXRp
YyBib29sIGlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIAogICAgICAgICBpZiAoIWlzTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0eU5hbWUo
cHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSB9OwotICAgICAgICAgICAgYm9vbCBmb3VuZCA9IFdlYkNvcmU6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgICAgIGlmICghZm91bmQpIHsKQEAgLTM2MCw3ICszNjIsNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSAmJiBpbXBsLmlzU3Vw
cG9ydGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7
CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQor
ICAgICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM4
Miw3ICszODQsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllczo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpOwogICAgIGlmIChpbXBsLmlzU3VwcG9y
dGVkUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90Rm9yR2V0IHsgJnRoaXNPYmplY3QsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpIH07Ci0gICAgICAgIGlmICghV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3RGb3JHZXQpKQorICAg
ICAgICBpZiAoIUpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlC
eUluZGV4KGNlbGwsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAppbmRleCAzZTg1YWQzYTIzNjIuLjBmMjIxZWQ4NjI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkpTRE9NQWJzdHJhY3RPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJh
c2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC00Miw4ICs0MSwxMSBA
QAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBB
bmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KQEAgLTEzNywxNCArMTM5LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
fQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3Ms
ICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucykgfTsKQEAgLTIwOSw3ICsyMTEsNyBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxl
eGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVu
Zm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAt
MzM2LDcgKzMzOCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6CiAKICAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpICYmIGltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3RGb3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFX
ZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAgICAgIGlmICghSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShjZWxsLCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzU4LDcgKzM2MCw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHZt
LCBpbmRleCk7CiAgICAgaWYgKGltcGwuaXNTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3RG
b3JHZXQgeyAmdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkgfTsKLSAgICAgICAgaWYgKCFXZWJD
b3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdEZvckdldCkpCisgICAgICAgIGlmICghSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCgmdGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90Rm9yR2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoY2VsbCwgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZUNvbnN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VDb25zdC5jcHAKaW5kZXggZGRl
ZjAzYTNkNjExLi5iMzAyNTMwMTZmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VDb25zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZUNvbnN0LmNw
cApAQCAtMjUsMTYgKzI1LDE4IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01DbGllbnRJc29TdWJz
cGFjZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1
ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDYWxsYWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIKICNp
bmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlRlc3ROYW1lc3BhY2VDb25z
dC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC02NCw3ICs2Niw3IEBAIHRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lc3BhY2VDb25zdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lc3BhY2VDb25zdERP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiAgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lc3BhY2VDb25zdDo6aW5mbygpLCBKU1Rlc3ROYW1lc3Bh
Y2VDb25zdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKICAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXgg
OGI1MTM2MGExNGM4Li5lMzcxZDE5M2YwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lc3BhY2VPYmpl
Y3QuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFj
ZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDYWxsYWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEFueS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKQEAgLTQ0LDkgKzQzLDEyIEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXN0TmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFj
ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEwNSw3ICsxMDcsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZXNwYWNlT2JqZWN0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKUwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZXNwYWNlT2JqZWN0RE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdE5hbWVzcGFjZU9iamVjdDo6aW5mbygpLCBKU1Rlc3ROYW1lc3BhY2VPYmplY3RD
b25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAg
ICAgaWYgKCEoJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGlu
Z3NWYWx1ZXMoKS50ZXN0U2V0dGluZzFFbmFibGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggOWU4M2Ey
MTFlN2ZmLi4yNDk4ZGJlNGFhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5j
bHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCkBAIC01MCw5ICs0OSwxMiBAQAogI2lu
Y2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9C
dWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
T2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRv
ck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTE3
Miw3ICsxNzQsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZVByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdE5vZGUiX3MsICZCYXNlOjpzX2luZm8sIG51bAogCiBKU0M6OlN0cnVjdHVyZSog
SlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0g
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCkBAIC0yMzMsOCArMjM1LDggQEAgdm9pZCBKU1Rlc3RO
b2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgfQogICAgIGlmIChoYXNE
aXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzICYmIHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6OmdldERpcmVjdCh0aGlz
LCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUo
KSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZt
LCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0Tm9kZTo6c19pbmZvID0geyAiVGVzdE5vZGUiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Tm9kZSkgfTsKQEAgLTM4Niw3ICsz
ODgsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvbl90b0pTT05Cb2R5KEpTR2xvYmFsT2JqZQogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBTVVBQUkVTU19VTkNPVU5URURfTE9DQUwgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKLSAgICBhdXRvKiByZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIG5hbWVWYWx1ZSA9IHRvSlM8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5uYW1lKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBuYW1l
VmFsdWUpOwpAQCAtNDI0LDcgKzQyNiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
SlNDOjpOb25BcnJheSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgVGVzdE5vZGVJ
dGVyYXRvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1Rlc3ROb2RlJiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kLCBJbnRlcm5hbEl0
ZXJhdG9yJiYgaXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDZhODI3MjA4ZmVkOC4uYjQzZGE2YTA5
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTQmxvYi5oIgog
I2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nU2Vj
dXJpdHkuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0QW55LmgiCkBAIC05NiwxMiArOTUsMTYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CdWlsdGluTmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3Rv
dHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Byb3BlcnR5
TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3Mu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8dHlwZV90cmFp
dHM+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtODgxLDcgKzg4NCw3IEBAIHRlbXBsYXRl
PD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBj
b252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBhbm5v
dGF0ZWRUeXBlSW5TZXF1ZW5jZU1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZSA9IFdlYkNvcmU6
OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXIiX3MpKTsKKyAgICAgICAgYW5ub3Rh
dGVkVHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYW5ub3RhdGVkVHlwZUluU2VxdWVu
Y2VNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gYW5ub3RhdGVk
VHlwZUluU2VxdWVuY2VNZW1iZXJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25h
bDxJRExTZXF1ZW5jZTxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+Pj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VNZW1iZXJWYWx1ZSk7CkBAIC04OTEsNyArODk0
LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIGFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlclZhbHVlID0g
V2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlciJfcykpOworICAgICAgICBh
bm5vdGF0ZWRUeXBlSW5Vbmlvbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbm5vdGF0ZWRUeXBlSW5Vbmlv
bk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENv
bnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBhbm5vdGF0ZWRU
eXBlSW5Vbmlvbk1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElE
TFVuaW9uPElETERPTVN0cmluZywgSURMQ2xhbXBBZGFwdG9yPElETExvbmc+Pj4+KGxleGljYWxH
bG9iYWxPYmplY3QsIGFubm90YXRlZFR5cGVJblVuaW9uTWVtYmVyVmFsdWUpOwpAQCAtOTAxLDcg
KzkwNCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBhbnlUeXBlZGVmVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGFueVR5cGVkZWZWYWx1ZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVj
dCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbnlU
eXBlZGVmVmFsdWUiX3MpKTsKKyAgICAgICAgYW55VHlwZWRlZlZhbHVlVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFu
eVR5cGVkZWZWYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBhbnlU
eXBlZGVmVmFsdWVDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExBbnk+KGxleGljYWxHbG9i
YWxPYmplY3QsIGFueVR5cGVkZWZWYWx1ZVZhbHVlKTsKQEAgLTkxMSw3ICs5MTQsNyBAQCB0ZW1w
bGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
YW55VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFueVZh
bHVlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVZhbHVlIl9zKSk7CisgICAgICAgIGFueVZhbHVl
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImFueVZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBh
dXRvIGFueVZhbHVlQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMQW55PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhbnlWYWx1ZVZhbHVlKTsKQEAgLTkyMSw3ICs5MjQsNyBAQCB0ZW1wbGF0ZTw+
IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29u
dmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYW55VmFs
dWVXaXRoTnVsbERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFueVZhbHVl
V2l0aE51bGxEZWZhdWx0Il9zKSk7CisgICAgICAgIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0VmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImFueVZhbHVlV2l0aE51bGxEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwog
ICAgIH0KICAgICBhdXRvIGFueVZhbHVlV2l0aE51bGxEZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9
IGNvbnZlcnRPcHRpb25hbFdpdGhEZWZhdWx0PElETEFueT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
YW55VmFsdWVXaXRoTnVsbERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURM
QW55PiB7IHJldHVybiB0eXBlbmFtZSBDb252ZXJ0ZXI8SURMQW55Pjo6UmV0dXJuVHlwZSB7IGpz
TnVsbCgpIH07IH0pOwpAQCAtOTMxLDcgKzkzNCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJl
c3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFy
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29sZWFuV2l0aERlZmF1bHRW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRoRGVm
YXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aERlZmF1bHQiX3MpKTsKKyAgICAg
ICAgYm9vbGVhbldpdGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRoRGVmYXVsdCJfcykp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1
bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBib29sZWFuV2l0aERlZmF1bHRDb252
ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBi
b29sZWFuV2l0aERlZmF1bHRWYWx1ZSk7CkBAIC05NDEsNyArOTQ0LDcgQEAgdGVtcGxhdGU8PiBD
b252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZl
cnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJvb2xlYW5X
aXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
Ym9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRob3V0
RGVmYXVsdCJfcykpOworICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Ym9vbGVhbldpdGhvdXREZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBh
dXRvIGJvb2xlYW5XaXRob3V0RGVmYXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9w
dGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sZWFuV2l0aG91dERl
ZmF1bHRWYWx1ZSk7CkBAIC05NTEsNyArOTU0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVz
dWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGJ1ZmZlclNvdXJjZVZhbHVlVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBidWZmZXJTb3VyY2VWYWx1
ZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJidWZmZXJTb3VyY2VWYWx1ZSJfcykpOworICAgICAgICBi
dWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJidWZmZXJTb3VyY2VWYWx1ZSJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNl
cHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBidWZmZXJTb3VyY2VWYWx1ZUNvbnZlcnNpb25S
ZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETFVuaW9uPElETEFycmF5QnVmZmVyVmlldywg
SURMQXJyYXlCdWZmZXI+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgYnVmZmVyU291cmNlVmFsdWVW
YWx1ZSk7CkBAIC05NjEsNyArOTY0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElE
TERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSA9
IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiZGljdGlvbmFyeU1lbWJlciJfcykpOworICAgICAgICBkaWN0aW9uYXJ5
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImRpY3Rpb25hcnlNZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7
CiAgICAgfQogICAgIGF1dG8gZGljdGlvbmFyeU1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252
ZXJ0PElETE9wdGlvbmFsPElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91
bGRUb2xlcmF0ZU51bGw+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGljdGlvbmFyeU1lbWJlclZh
bHVlKTsKQEAgLTk3MSw3ICs5NzQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURM
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgZGljdGlvbmFyeU1lbWJlcldpdGhEZWZhdWx0
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBkaWN0aW9uYXJ5TWVt
YmVyV2l0aERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGljdGlvbmFyeU1lbWJlcldpdGhE
ZWZhdWx0Il9zKSk7CisgICAgICAgIGRpY3Rpb25hcnlNZW1iZXJXaXRoRGVmYXVsdFZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJkaWN0aW9uYXJ5TWVtYmVyV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAg
ICAgfQogICAgIGF1dG8gZGljdGlvbmFyeU1lbWJlcldpdGhEZWZhdWx0Q29udmVyc2lvblJlc3Vs
dCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5Pj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgZGljdGlvbmFyeU1lbWJlcldpdGhEZWZhdWx0VmFsdWUpOwpAQCAt
OTgxLDcgKzk4NCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBkaWN0aW9uYXJ5V2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZh
bHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBkaWN0aW9uYXJ5
V2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRpY3Rp
b25hcnlXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWUiX3MpKTsKKyAgICAgICAgZGljdGlv
bmFyeVdpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkaWN0aW9uYXJ5
V2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAg
IH0KICAgICBhdXRvIGRpY3Rpb25hcnlXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVDb252
ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OlBhcmVudERpY3Rp
b25hcnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5V2l0aEltcGxlbWVudGF0aW9u
RGVmYXVsdFZhbHVlVmFsdWUpOwpAQCAtOTkxLDcgKzk5NCw3IEBAIHRlbXBsYXRlPD4gQ29udmVy
c2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGlj
dGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBkaWN0aW9uYXJ5V2l0
aEltcGxlbWVudGF0aW9uUmVxdWlyZWRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGRpY3Rpb25hcnlXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVlID0gV2Vi
Q29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJkaWN0aW9uYXJ5V2l0aEltcGxlbWVudGF0aW9uUmVxdWlyZWQiX3MpKTsKKyAg
ICAgICAgZGljdGlvbmFyeVdpdGhJbXBsZW1lbnRhdGlvblJlcXVpcmVkVmFsdWUgPSBvYmplY3Qt
PmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRp
Y3Rpb25hcnlXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZCJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsK
ICAgICB9CiAgICAgaWYgKGRpY3Rpb25hcnlXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTEwMDUsNyArMTAwOCw3IEBAIHRlbXBsYXRlPD4gQ29udmVy
c2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGlj
dGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBlbnVtZXJhdGlvblZh
bHVlV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwg
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJh
dGlvblZhbHVlV2l0aERlZmF1bHQiX3MpKTsKKyAgICAgICAgZW51bWVyYXRpb25WYWx1ZVdpdGhE
ZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdCJfcykpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNl
cHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRD
b252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9wdGlvbmFsV2l0aERlZmF1bHQ8SURMRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlbnVtZXJhdGlvblZh
bHVlV2l0aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURMRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+PiB7IHJldHVybiBDb252ZXJ0ZXI8SURMRW51bWVyYXRpb248
VGVzdE9iajo6RW51bVR5cGU+Pjo6UmV0dXJuVHlwZSB7IFRlc3RPYmo6OkVudW1UeXBlOjpFbnVt
VmFsdWUxIH07IH0pOwpAQCAtMTAxNSw3ICsxMDE4LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9u
UmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9u
YXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGVudW1lcmF0aW9uVmFsdWVX
aXRoRW1wdHlTdHJpbmdEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ugewot
ICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gV2Vi
Q29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCJfcykpOwor
ICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24g
eyB9KTsKICAgICB9CiAgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVm
YXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0T3B0aW9uYWxXaXRoRGVmYXVsdDxJRExFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+KGxleGljYWxHbG9iYWxPYmplY3QsIGVudW1lcmF0
aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0VmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVz
dWx0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4geyByZXR1cm4gQ29udmVydGVy
PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj46OlJldHVyblR5cGUgeyBUZXN0T2Jq
OjpFbnVtVHlwZTo6RW1wdHlTdHJpbmcgfTsgfSk7CkBAIC0xMDI1LDcgKzEwMjgsNyBAQCB0ZW1w
bGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSA9IFdl
YkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0Il9zKSk7CisgICAgICAg
IGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZh
bHVlV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8g
ZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8
SURMT3B0aW9uYWw8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pj4obGV4aWNhbEds
b2JhbE9iamVjdCwgZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0VmFsdWUpOwpAQCAtMTAz
NSw3ICsxMDM4LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8
VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIGZvb0FsaWFzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBmb29BbGlhc1ZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29BbGlhcyJfcykp
OworICAgICAgICBmb29BbGlhc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmb29BbGlhcyJfcykpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24g
eyB9KTsKICAgICB9CiAgICAgYXV0byBmb29Db252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExB
bnk+KGxleGljYWxHbG9iYWxPYmplY3QsIGZvb0FsaWFzVmFsdWUpOwpAQCAtMTA0NSw3ICsxMDQ4
LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQp
CiAgICAgICAgIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGZvb1dpdGhEZWZhdWx0QWxpYXNWYWx1ZSA9IFdlYkNvcmU6OmdldChv
YmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Zm9vV2l0aERlZmF1bHRBbGlhcyJfcykpOworICAgICAgICBmb29XaXRoRGVmYXVsdEFsaWFzVmFs
dWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImZvb1dpdGhEZWZhdWx0QWxpYXMiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAg
fQogICAgIGF1dG8gZm9vV2l0aERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9wdGlv
bmFsV2l0aERlZmF1bHQ8SURMQW55PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBmb29XaXRoRGVmYXVs
dEFsaWFzVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETEFueT4geyByZXR1cm4gQ29u
dmVydGVyPElETEFueT46OlJldHVyblR5cGUgeyAwIH07IH0pOwpAQCAtMTA1NSw3ICsxMDU4LDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIGZyb3plbkFycmF5V2l0aElubGluZUNhcGFjaXR5VmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBmcm96ZW5BcnJheVdpdGhJbmxpbmVDYXBhY2l0eVZhbHVl
ID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJmcm96ZW5BcnJheVdpdGhJbmxpbmVDYXBhY2l0eSJfcykpOworICAg
ICAgICBmcm96ZW5BcnJheVdpdGhJbmxpbmVDYXBhY2l0eVZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmcm96ZW5BcnJh
eVdpdGhJbmxpbmVDYXBhY2l0eSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgaWYg
KGZyb3plbkFycmF5V2l0aElubGluZUNhcGFjaXR5VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAt
MTA2OSw3ICsxMDcyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIGludGVnZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIGludGVnZXJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlciJfcykp
OworICAgICAgICBpbnRlZ2VyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImludGVnZXIiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsg
fSk7CiAgICAgfQogICAgIGF1dG8gaW50ZWdlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElE
TE9wdGlvbmFsPElETExvbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbnRlZ2VyVmFsdWUpOwpA
QCAtMTA3OSw3ICsxMDgyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rp
b25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBX
ZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImludGVnZXJXaXRoRGVmYXVsdCJfcykpOworICAgICAgICBpbnRlZ2VyV2l0
aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiaW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7
IH0pOwogICAgIH0KICAgICBhdXRvIGludGVnZXJXaXRoRGVmYXVsdENvbnZlcnNpb25SZXN1bHQg
PSBjb252ZXJ0PElETExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGludGVnZXJXaXRoRGVmYXVs
dFZhbHVlKTsKQEAgLTEwODksNyArMTA5Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3Vs
dDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBpbnRlZ2VyV2l0aEltcGxlbWVudGF0
aW9uRGVmYXVsdFZhbHVlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBpbnRlZ2VyV2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImludGVnZXJXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWUiX3MpKTsKKyAgICAgICAg
aW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpbnRlZ2Vy
V2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAg
IH0KICAgICBhdXRvIGludGVnZXJXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVDb252ZXJz
aW9uUmVzdWx0ID0gY29udmVydDxJRExMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbnRlZ2Vy
V2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlVmFsdWUpOwpAQCAtMTA5OSw3ICsxMTAyLDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIGludGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvblJlcXVp
cmVkVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImludGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJl
ZCJfcykpOworICAgICAgICBpbnRlZ2VyV2l0aEltcGxlbWVudGF0aW9uUmVxdWlyZWRWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiaW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvblJlcXVpcmVkIl9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7
IH0pOwogICAgIH0KICAgICBpZiAoaW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvblJlcXVpcmVkVmFs
dWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTExMyw3ICsxMTE2LDcgQEAgdGVtcGxhdGU8PiBDb252
ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnRE
aWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGxhcmdlSW50ZWdl
clZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbGFyZ2VJbnRlZ2Vy
VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImxhcmdlSW50ZWdlciJfcykpOworICAgICAgICBsYXJnZUlu
dGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibGFyZ2VJbnRlZ2VyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAg
IH0KICAgICBhdXRvIGxhcmdlSW50ZWdlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9w
dGlvbmFsPElETExvbmdMb25nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbGFyZ2VJbnRlZ2VyVmFs
dWUpOwpAQCAtMTEyMyw3ICsxMTI2LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElE
TERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBsYXJnZUludGVnZXJXaXRo
RGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsYXJnZUludGVnZXJXaXRoRGVmYXVsdCJfcykp
OworICAgICAgICBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJsYXJnZUludGVn
ZXJXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBsYXJn
ZUludGVnZXJXaXRoRGVmYXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETExvbmdMb25n
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKQEAg
LTExMzMsNyArMTEzNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9u
YXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZUVudW1WYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIG51bGxhYmxlRW51bVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9i
amVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJu
dWxsYWJsZUVudW0iX3MpKTsKKyAgICAgICAgbnVsbGFibGVFbnVtVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxh
YmxlRW51bSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENv
bnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBudWxsYWJsZUVu
dW1Db252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9wdGlvbmFsV2l0aERlZmF1bHQ8SURMTnVsbGFi
bGU8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+Pj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgbnVsbGFibGVFbnVtVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETE51bGxhYmxl
PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4+IHsgcmV0dXJuIHR5cGVuYW1lIENv
bnZlcnRlcjxJRExOdWxsYWJsZTxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+Pjo6
UmV0dXJuVHlwZSB7IHN0ZDo6bnVsbG9wdCB9OyB9KTsKQEAgLTExNDMsNyArMTE0Niw3IEBAIHRl
bXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAg
ICBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBl
bHNlIHsKLSAgICAgICAgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6
OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAibnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQiX3MpKTsKKyAgICAgICAgbnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQi
X3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9u
UmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gbnVsbGFibGVJbnRlZ2VyV2l0
aERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9wdGlvbmFsV2l0aERlZmF1bHQ8SURM
TnVsbGFibGU8SURMTG9uZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxhYmxlSW50ZWdlcldp
dGhEZWZhdWx0VmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETE51bGxhYmxlPElETExv
bmc+PiB7IHJldHVybiB0eXBlbmFtZSBDb252ZXJ0ZXI8SURMTnVsbGFibGU8SURMTG9uZz4+OjpS
ZXR1cm5UeXBlIHsgc3RkOjpudWxsb3B0IH07IH0pOwpAQCAtMTE1Myw3ICsxMTU2LDcgQEAgdGVt
cGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFy
eT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAg
IG51bGxhYmxlSW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZVZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbnVsbGFibGVJbnRlZ2VyV2l0aEltcGxl
bWVudGF0aW9uRGVmYXVsdFZhbHVlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlSW50ZWdl
cldpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZSJfcykpOworICAgICAgICBudWxsYWJsZUlu
dGVnZXJXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVJ
bnRlZ2VyV2l0aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0p
OwogICAgIH0KICAgICBhdXRvIG51bGxhYmxlSW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvbkRlZmF1
bHRWYWx1ZUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0T3B0aW9uYWxXaXRoRGVmYXVsdDxJRExO
dWxsYWJsZTxJRExMb25nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbGFibGVJbnRlZ2VyV2l0
aEltcGxlbWVudGF0aW9uRGVmYXVsdFZhbHVlVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0
PElETE51bGxhYmxlPElETExvbmc+PiB7IHJldHVybiB0eXBlbmFtZSBDb252ZXJ0ZXI8SURMTnVs
bGFibGU8SURMTG9uZz4+OjpSZXR1cm5UeXBlIHsgc3RkOjpudWxsb3B0IH07IH0pOwpAQCAtMTE2
Myw3ICsxMTY2LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8
VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxlSW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvblJlcXVp
cmVkVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBudWxsYWJsZUlu
dGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVj
dCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxs
YWJsZUludGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZCJfcykpOworICAgICAgICBudWxs
YWJsZUludGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJs
ZUludGVnZXJXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJlZCJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsK
ICAgICB9CiAgICAgaWYgKG51bGxhYmxlSW50ZWdlcldpdGhJbXBsZW1lbnRhdGlvblJlcXVpcmVk
VmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTE3Nyw3ICsxMTgwLDcgQEAgdGVtcGxhdGU8PiBD
b252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZl
cnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxl
Tm9kZVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbnVsbGFibGVO
b2RlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZSJfcykpOworICAgICAgICBudWxs
YWJsZU5vZGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVOb2RlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwog
ICAgIH0KICAgICBhdXRvIG51bGxhYmxlTm9kZUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElE
TE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxh
YmxlTm9kZVZhbHVlKTsKQEAgLTExODcsNyArMTE5MCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lv
blJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlv
bmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZU5vZGVXaXRo
SW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG51bGxhYmxlTm9kZVdpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZVZh
bHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZU5vZGVXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0
VmFsdWUiX3MpKTsKKyAgICAgICAgbnVsbGFibGVOb2RlV2l0aEltcGxlbWVudGF0aW9uRGVmYXVs
dFZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZVdpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRW
YWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBudWxsYWJsZU5vZGVX
aXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExOdWxsYWJsZTxJRExJbnRlcmZhY2U8Tm9kZT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxs
YWJsZU5vZGVXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVWYWx1ZSk7CkBAIC0xMTk3LDcg
KzEyMDAsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgbnVsbGFibGVOb2RlV2l0aEltcGxlbWVudGF0aW9uUmVxdWlyZWRWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG51bGxhYmxlTm9kZVdpdGhJ
bXBsZW1lbnRhdGlvblJlcXVpcmVkVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZVdp
dGhJbXBsZW1lbnRhdGlvblJlcXVpcmVkIl9zKSk7CisgICAgICAgIG51bGxhYmxlTm9kZVdpdGhJ
bXBsZW1lbnRhdGlvblJlcXVpcmVkVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlTm9kZVdpdGhJbXBsZW1l
bnRhdGlvblJlcXVpcmVkIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBpZiAobnVs
bGFibGVOb2RlV2l0aEltcGxlbWVudGF0aW9uUmVxdWlyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CkBAIC0xMjExLDcgKzEyMTQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGlj
dGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbnVsbGFibGVTdHJpbmdXaXRoRGVmYXVsdFZhbHVl
ID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbnVsbGFibGVTdHJpbmdXaXRo
RGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0Il9z
KSk7CisgICAgICAgIG51bGxhYmxlU3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFi
bGVTdHJpbmdXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0
byBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnRPcHRp
b25hbFdpdGhEZWZhdWx0PElETE51bGxhYmxlPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIG51bGxhYmxlU3RyaW5nV2l0aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25S
ZXN1bHQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4geyByZXR1cm4gdHlwZW5hbWUgQ29udmVy
dGVyPElETE51bGxhYmxlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBlIHsgU3RyaW5nKCkgfTsg
fSk7CkBAIC0xMjIxLDcgKzEyMjQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURM
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlID0g
anNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbnVsbGFibGVVbmlvbk1lbWJlclZh
bHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJudWxsYWJsZVVuaW9uTWVtYmVyIl9zKSk7CisgICAgICAgIG51
bGxhYmxlVW5pb25NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibnVsbGFibGVVbmlvbk1lbWJlciJfcykpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRF
eGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBudWxsYWJsZVVuaW9uTWVtYmVyQ29udmVy
c2lvblJlc3VsdCA9IGNvbnZlcnRPcHRpb25hbFdpdGhEZWZhdWx0PElETE51bGxhYmxlPElETFVu
aW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBu
dWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETE51bGxh
YmxlPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+PiB7IHJldHVybiB0eXBl
bmFtZSBDb252ZXJ0ZXI8SURMTnVsbGFibGU8SURMVW5pb248SURMTG9uZywgSURMSW50ZXJmYWNl
PE5vZGU+Pj4+OjpSZXR1cm5UeXBlIHsgc3RkOjpudWxsb3B0IH07IH0pOwpAQCAtMTIzMSw3ICsx
MjM0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCiAgICAgICAgIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9
IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZSJfcykpOworICAgICAgICBy
ZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVkQnVmZmVyU291cmNl
VmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252
ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGlmIChyZXF1aXJlZEJ1ZmZl
clNvdXJjZVZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewpAQCAtMTI0NSw3ICsxMjQ4LDcgQEAg
dGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIHJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZERv
dWJsZSJfcykpOworICAgICAgICByZXN0cmljdGVkRG91YmxlVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlc3RyaWN0
ZWREb3VibGUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcmVzdHJpY3Rl
ZERvdWJsZUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETERvdWJsZT4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHJlc3RyaWN0ZWREb3VibGVWYWx1ZSk7CkBAIC0xMjU1LDcg
KzEyNTgsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVm
aW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHRW
YWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Il9zKSk7Cisg
ICAgICAgIHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVk
RG91YmxlV2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8g
cmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnRPcHRp
b25hbFdpdGhEZWZhdWx0PElETERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdHJpY3Rl
ZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETERvdWJs
ZT4geyByZXR1cm4gQ29udmVydGVyPElETERvdWJsZT46OlJldHVyblR5cGUgeyAwIH07IH0pOwpA
QCAtMTI2NSw3ICsxMjY4LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rp
b25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcmVzdHJpY3RlZEZsb2F0VmFsdWUgPSBXZWJDb3Jl
OjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlc3RyaWN0ZWRGbG9hdCJfcykpOworICAgICAgICByZXN0cmljdGVkRmxvYXRWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicmVzdHJpY3RlZEZsb2F0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAg
ICBhdXRvIHJlc3RyaWN0ZWRGbG9hdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlv
bmFsPElETEZsb2F0Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdHJpY3RlZEZsb2F0VmFsdWUp
OwpAQCAtMTI3NSw3ICsxMjc4LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZXN0cmljdGVkRmxvYXRX
aXRoRGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVs
dCJfcykpOworICAgICAgICByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJy
ZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAg
ICAgYXV0byByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252
ZXJ0T3B0aW9uYWxXaXRoRGVmYXVsdDxJRExGbG9hdD4obGV4aWNhbEdsb2JhbE9iamVjdCwgcmVz
dHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURM
RmxvYXQ+IHsgcmV0dXJuIENvbnZlcnRlcjxJRExGbG9hdD46OlJldHVyblR5cGUgeyAwIH07IH0p
OwpAQCAtMTI4NSw3ICsxMjg4LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlID0g
V2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyJfcykpOworICAgICAgICBzZXF1ZW5jZU9m
U3RyaW5nc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZU9mU3RyaW5ncyJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9
KTsKICAgICB9CiAgICAgYXV0byBzZXF1ZW5jZU9mU3RyaW5nc0NvbnZlcnNpb25SZXN1bHQgPSBj
b252ZXJ0PElETE9wdGlvbmFsPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlKTsKQEAgLTEyOTUsNyArMTI5OCw3IEBA
IHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rp
b25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBzZXF1ZW5jZVdpdGhJbXBsZW1lbnRhdGlvbkRlZmF1bHRWYWx1ZVZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25E
ZWZhdWx0VmFsdWVWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2VxdWVuY2VXaXRoSW1wbGVtZW50YXRp
b25EZWZhdWx0VmFsdWUiX3MpKTsKKyAgICAgICAgc2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25E
ZWZhdWx0VmFsdWVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0
VmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252
ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gc2VxdWVuY2VXaXRo
SW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9wdGlv
bmFsV2l0aERlZmF1bHQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgc2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25EZWZhdWx0VmFsdWVWYWx1ZSwgWyZdIC0+
IENvbnZlcnNpb25SZXN1bHQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4geyByZXR1cm4gQ29u
dmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBlIHsgfTsgfSk7CkBA
IC0xMzA1LDcgKzEzMDgsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgc2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25SZXF1aXJl
ZFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VxdWVuY2VXaXRo
SW1wbGVtZW50YXRpb25SZXF1aXJlZFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZXF1ZW5jZVdpdGhJ
bXBsZW1lbnRhdGlvblJlcXVpcmVkIl9zKSk7CisgICAgICAgIHNlcXVlbmNlV2l0aEltcGxlbWVu
dGF0aW9uUmVxdWlyZWRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2VxdWVuY2VXaXRoSW1wbGVtZW50YXRpb25SZXF1
aXJlZCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgaWYgKHNlcXVlbmNlV2l0aElt
cGxlbWVudGF0aW9uUmVxdWlyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xMzE5LDcgKzEz
MjIsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2Jq
OjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgc2VxdWVuY2VXaXRoSW5saW5lQ2FwYWNpdHlWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlcXVlbmNlV2l0aElubGluZUNhcGFjaXR5VmFsdWUg
PSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInNlcXVlbmNlV2l0aElubGluZUNhcGFjaXR5Il9zKSk7CisgICAgICAg
IHNlcXVlbmNlV2l0aElubGluZUNhcGFjaXR5VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNlcXVlbmNlV2l0aElubGlu
ZUNhcGFjaXR5Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
Q29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHNlcXVlbmNl
V2l0aElubGluZUNhcGFjaXR5Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8
SURMU2VxdWVuY2U8SURMTG9uZywgOD4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzZXF1ZW5jZVdp
dGhJbmxpbmVDYXBhY2l0eVZhbHVlKTsKQEAgLTEzMjksNyArMTMzMiw3IEBAIHRlbXBsYXRlPD4g
Q29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252
ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzbWFsbElu
dGVnZXJDbGFtcGVkVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBz
bWFsbEludGVnZXJDbGFtcGVkVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsSW50ZWdlckNsYW1w
ZWQiX3MpKTsKKyAgICAgICAgc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlID0gb2JqZWN0LT5nZXQo
JmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbElu
dGVnZXJDbGFtcGVkIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHNtYWxs
SW50ZWdlckNsYW1wZWRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExD
bGFtcEFkYXB0b3I8SURMQnl0ZT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzbWFsbEludGVnZXJD
bGFtcGVkVmFsdWUpOwpAQCAtMTMzOSw3ICsxMzQyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9u
UmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9u
YXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHNtYWxsSW50ZWdlcldpdGhE
ZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzbWFsbElu
dGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzbWFsbEludGVnZXJXaXRoRGVm
YXVsdCJfcykpOworICAgICAgICBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
bWFsbEludGVnZXJXaXRoRGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAg
YXV0byBzbWFsbEludGVnZXJXaXRoRGVmYXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElE
TE9wdGlvbmFsPElETEJ5dGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzbWFsbEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlKTsKQEAgLTEzNDksNyArMTM1Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lv
blJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlv
bmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzbWFsbFVuc2lnbmVkSW50
ZWdlckVuZm9yY2VkUmFuZ2VWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZVZhbHVlID0gV2ViQ29yZTo6Z2V0
KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2UiX3MpKTsKKyAgICAgICAgc21hbGxV
bnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRl
Z2VyRW5mb3JjZWRSYW5nZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBz
bWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFuZ2VDb252ZXJzaW9uUmVzdWx0ID0gY29udmVy
dDxJRExPcHRpb25hbDxJRExFbmZvcmNlUmFuZ2VBZGFwdG9yPElETE9jdGV0Pj4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZVZhbHVlKTsKQEAg
LTEzNTksNyArMTM2Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9u
YXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBzbWFsbFVuc2lnbmVkSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInNtYWxsVW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQiX3MpKTsKKyAgICAgICAgc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVs
dFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2Vw
dGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1
bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPY3RldD4obGV4aWNhbEdsb2JhbE9iamVj
dCwgc21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKQEAgLTEzNjksNyArMTM3
Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICBzdHJpbmdUcmVhdE51bGxBc0VtcHR5U3RyaW5nVmFs
dWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmciX3MpKTsKKyAg
ICAgICAgc3RyaW5nVHJlYXROdWxsQXNFbXB0eVN0cmluZ1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdUcmVh
dE51bGxBc0VtcHR5U3RyaW5nIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRv
IHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExPcHRpb25hbDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5n
Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ1RyZWF0TnVsbEFzRW1wdHlTdHJpbmdWYWx1
ZSk7CkBAIC0xMzc5LDcgKzEzODIsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURM
RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cmluZ1dpdGhEZWZhdWx0VmFsdWUg
PSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhEZWZhdWx0Il9zKSk7CisgICAgICAgIHN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ1dpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7
IH0pOwogICAgIH0KICAgICBhdXRvIHN0cmluZ1dpdGhEZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9
IGNvbnZlcnRPcHRpb25hbFdpdGhEZWZhdWx0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURM
RE9NU3RyaW5nPiB7IHJldHVybiBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6UmV0dXJuVHlwZSB7
ICJkZWZhdWx0U3RyaW5nIl9zIH07IH0pOwpAQCAtMTM4OSw3ICsxMzkyLDcgQEAgdGVtcGxhdGU8
PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNv
bnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmlu
Z1dpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdXaXRob3V0
RGVmYXVsdCJfcykpOworICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJz
dHJpbmdXaXRob3V0RGVmYXVsdCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0
byBzdHJpbmdXaXRob3V0RGVmYXVsdENvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlv
bmFsPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ1dpdGhvdXREZWZh
dWx0VmFsdWUpOwpAQCAtMTM5OSw3ICsxNDAyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVz
dWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuZGVmaW5lZFVuaW9uTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bmRlZmluZWRVbmlv
bk1lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmRlZmluZWRVbmlvbk1lbWJlciJfcykpOwor
ICAgICAgICB1bmRlZmluZWRVbmlvbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmRlZmluZWRVbmlvbk1l
bWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byB1bmRlZmluZWRVbmlv
bk1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETFVuaW9uPElE
TFVuZGVmaW5lZCwgSURMSW50ZXJmYWNlPE5vZGU+Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHVu
ZGVmaW5lZFVuaW9uTWVtYmVyVmFsdWUpOwpAQCAtMTQwOSw3ICsxNDEyLDcgQEAgdGVtcGxhdGU8
PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNv
bnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuaW9u
TWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bmlvbk1l
bWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlciJfcykpOworICAgICAgICB1bmlv
bk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ1bmlvbk1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAg
ICB9CiAgICAgYXV0byB1bmlvbk1lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9w
dGlvbmFsPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB1bmlvbk1lbWJlclZhbHVlKTsKQEAgLTE0MTksNyArMTQyMiw3IEBAIHRlbXBs
YXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+
PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICB1
bnJlc3RyaWN0ZWREb3VibGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHVucmVzdHJpY3RlZERvdWJsZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0ZWRE
b3VibGUiX3MpKTsKKyAgICAgICAgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVz
dHJpY3RlZERvdWJsZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byB1bnJl
c3RyaWN0ZWREb3VibGVDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExV
bnJlc3RyaWN0ZWREb3VibGU+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnJlc3RyaWN0ZWREb3Vi
bGVWYWx1ZSk7CkBAIC0xNDI5LDcgKzE0MzIsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1
bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25hcgog
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5yZXN0cmljdGVkRG91YmxlV2l0
aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVucmVz
dHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3Rl
ZERvdWJsZVdpdGhEZWZhdWx0Il9zKSk7CisgICAgICAgIHVucmVzdHJpY3RlZERvdWJsZVdpdGhE
ZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0Il9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4
Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZh
dWx0Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnRPcHRpb25hbFdpdGhEZWZhdWx0PElETFVucmVz
dHJpY3RlZERvdWJsZT4obGV4aWNhbEdsb2JhbE9iamVjdCwgdW5yZXN0cmljdGVkRG91YmxlV2l0
aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURMVW5yZXN0cmljdGVkRG91
YmxlPiB7IHJldHVybiBDb252ZXJ0ZXI8SURMVW5yZXN0cmljdGVkRG91YmxlPjo6UmV0dXJuVHlw
ZSB7IDAgfTsgfSk7CkBAIC0xNDM5LDcgKzE0NDIsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25S
ZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pj4gY29udmVydERpY3Rpb25h
cgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5yZXN0cmljdGVkRmxvYXRW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVucmVzdHJpY3RlZEZs
b2F0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0Il9zKSk7CisgICAgICAg
IHVucmVzdHJpY3RlZEZsb2F0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0Il9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4
Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0Q29udmVyc2lv
blJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMVW5yZXN0cmljdGVkRmxvYXQ+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlKTsKQEAgLTE0NDksNyArMTQ1
Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFs
dWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQiX3MpKTsKKyAg
ICAgICAgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnJlc3RyaWN0
ZWRGbG9hdFdpdGhEZWZhdWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRv
IHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydE9w
dGlvbmFsV2l0aERlZmF1bHQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSwgWyZdIC0+IENvbnZlcnNpb25S
ZXN1bHQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+IHsgcmV0dXJuIENvbnZlcnRlcjxJRExVbnJlc3Ry
aWN0ZWRGbG9hdD46OlJldHVyblR5cGUgeyAwIH07IH0pOwpAQCAtMTQ1OSw3ICsxNDYyLDcgQEAg
dGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIHVuc2lnbmVkSW50ZWdlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkSW50ZWdl
ciJfcykpOworICAgICAgICB1bnNpZ25lZEludGVnZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRJbnRl
Z2VyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVy
c2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHVuc2lnbmVkSW50ZWdl
ckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETFVuc2lnbmVkTG9uZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkSW50ZWdlclZhbHVlKTsKQEAgLTE0NjksNyAr
MTQ3Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICB1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1
ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiX3MpKTsKKyAgICAg
ICAgdW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gdW5zaWdu
ZWRJbnRlZ2VyV2l0aERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExVbnNpZ25l
ZExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUpOwpAQCAtMTQ3OSw3ICsxNDgyLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElE
TERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+IGNvbnZlcnREaWN0aW9uYXIKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZExhcmdlSW50ZWdl
clZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlciJfcykpOworICAgICAg
ICB1bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlciJf
cykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25S
ZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byB1bnNpZ25lZExhcmdlSW50ZWdl
ckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETFVuc2lnbmVkTG9uZ0xv
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB1bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlKTsKQEAg
LTE0ODksNyArMTQ5Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9u
YXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+PiBjb252ZXJ0RGljdGlvbmFyCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFs
dWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZExhcmdlSW50
ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2Vy
V2l0aERlZmF1bHQiX3MpKTsKKyAgICAgICAgdW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVs
dFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0Il9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2Vw
dGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1
bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwpAQCAt
MTU2Myw3ICsxNTY2LDcgQEAgSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEoKICAgICBTVVBQUkVTU19V
TkNPVU5URURfTE9DQUwgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gV2ViQ29yZTo6Y29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgYXV0byByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKIAogICAgIGlmICghSURMU2VxdWVuY2U8SURMQ2xhbXBB
ZGFwdG9yPElETExvbmc+Pjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5hbm5vdGF0ZWRUeXBlSW5T
ZXF1ZW5jZU1lbWJlcikpIHsKICAgICAgICAgYXV0byBhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZU1l
bWJlclZhbHVlID0gdG9KUzxJRExTZXF1ZW5jZTxJRExDbGFtcEFkYXB0b3I8SURMTG9uZz4+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIElETFNlcXVlbmNl
PElETENsYW1wQWRhcHRvcjxJRExMb25nPj46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LmFubm90YXRlZFR5cGVJblNlcXVlbmNlTWVtYmVyKSk7CkBAIC0xODE4LDcgKzE4MjEs
NyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpE
aWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
ICAgICAgICAgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAg
IGVsc2UgewotICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6Omdl
dChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiYm9vbGVhbldpdGhvdXREZWZhdWx0Il9zKSk7CisgICAgICAgIGJvb2xlYW5XaXRob3V0RGVm
YXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsg
fSk7CiAgICAgfQogICAgIGF1dG8gYm9vbGVhbldpdGhvdXREZWZhdWx0Q29udmVyc2lvblJlc3Vs
dCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsKQEAgLTE4MjgsNyArMTgzMSw3IEBAIHRlbXBs
YXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlU
aGF0U2hvdWxkTm90VG9sZXJhCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBu
b25OdWxsYWJsZU5vZGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IG5vbk51bGxhYmxlTm9kZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub25OdWxsYWJsZU5vZGUiX3Mp
KTsKKyAgICAgICAgbm9uTnVsbGFibGVOb2RlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vbk51bGxhYmxlTm9kZSJf
cykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25S
ZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgaWYgKG5vbk51bGxhYmxlTm9kZVZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE4NDIsNyArMTg0NSw3IEBAIHRlbXBsYXRlPD4gQ29udmVy
c2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90
VG9sZXJhCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXF1aXJlZERpY3Rp
b25hcnlNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJl
cXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZERpY3Rp
b25hcnlNZW1iZXIiX3MpKTsKKyAgICAgICAgcmVxdWlyZWREaWN0aW9uYXJ5TWVtYmVyVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInJlcXVpcmVkRGljdGlvbmFyeU1lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAg
ICB9CiAgICAgaWYgKHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKQEAgLTE4NTYsNyArMTg1OSw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExE
aWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWVWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlcXVpcmVkRW51bWVyYXRp
b25WYWx1ZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUiX3Mp
KTsKKyAgICAgICAgcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInJlcXVpcmVk
RW51bWVyYXRpb25WYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgaWYgKHJl
cXVpcmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE4OTksNyAr
MTkwMiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RP
Ymo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gV2ViQ29y
ZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJib29sZWFuV2l0aG91dERlZmF1bHQiX3MpKTsKKyAgICAgICAgYm9vbGVhbldpdGhv
dXREZWZhdWx0VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCJfcykpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRp
b24geyB9KTsKICAgICB9CiAgICAgYXV0byBib29sZWFuV2l0aG91dERlZmF1bHRDb252ZXJzaW9u
UmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgYm9vbGVhbldpdGhvdXREZWZhdWx0VmFsdWUpOwpAQCAtMTkwOSw3ICsxOTEyLDcgQEAg
dGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeVRoYXRTaG91bGRUb2xlcmF0ZU4KICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZW51bWVyYXRpb25W
YWx1ZSJfcykpOworICAgICAgICBlbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1lcmF0
aW9uVmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRp
b25WYWx1ZUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEVudW1lcmF0
aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGVudW1lcmF0aW9u
VmFsdWVWYWx1ZSk7CkBAIC0xOTQ2LDcgKzE5NDksNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25S
ZXN1bHQ8SURMRGljdGlvbmFyeTxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4+IGNvbnZlcnREaWN0
aQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgYm9vbGVhbldpdGhvdXREZWZh
dWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBib29sZWFuV2l0
aG91dERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbGVhbldpdGhvdXREZWZhdWx0Il9z
KSk7CisgICAgICAgIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sZWFuV2l0
aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gYm9vbGVh
bldpdGhvdXREZWZhdWx0Q29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURM
Qm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVl
KTsKQEAgLTE5NTYsNyArMTk1OSw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExE
aWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPj4gY29udmVydERpY3RpCiAgICAgaWYg
KGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBlbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBlbnVtZXJhdGlvblZhbHVlVmFsdWUgPSBX
ZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImVudW1lcmF0aW9uVmFsdWUiX3MpKTsKKyAgICAgICAgZW51bWVyYXRpb25W
YWx1ZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJlbnVtZXJhdGlvblZhbHVlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwog
ICAgIH0KICAgICBhdXRvIGVudW1lcmF0aW9uVmFsdWVDb252ZXJzaW9uUmVzdWx0ID0gY29udmVy
dDxJRExPcHRpb25hbDxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBlbnVtZXJhdGlvblZhbHVlVmFsdWUpOwpAQCAtMTk5Myw3ICsxOTk2LDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6UGFy
ZW50RGljdGlvbmFyeT4+IGNvbnZlcnREaWMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAg
ICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHBhcmVudE1lbWJlcjFWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSJf
cykpOworICAgICAgICBwYXJlbnRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjEiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVz
dWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFyZW50TWVtYmVyMUNvbnZlcnNp
b25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwYXJlbnRNZW1iZXIxVmFsdWUpOwpAQCAtMjAwMyw3ICsyMDA2LDcgQEAgdGVtcGxh
dGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6UGFyZW50RGljdGlv
bmFyeT4+IGNvbnZlcnREaWMKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBh
cmVudE1lbWJlcjJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBh
cmVudE1lbWJlcjJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiJfcykpOworICAg
ICAgICBwYXJlbnRNZW1iZXIyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0
aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFyZW50TWVtYmVyMkNvbnZlcnNpb25SZXN1bHQg
PSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
YXJlbnRNZW1iZXIyVmFsdWUpOwpAQCAtMjA0MCw3ICsyMDQzLDcgQEAgdGVtcGxhdGU8PiBDb252
ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5Pj4gY29u
dmVydERpY3QKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcmVudE1lbWJl
cjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcmVudE1lbWJl
cjFWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMSJfcykpOworICAgICAgICBwYXJl
bnRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjEiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7
CiAgICAgfQogICAgIGF1dG8gcGFyZW50TWVtYmVyMUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0
PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnRNZW1i
ZXIxVmFsdWUpOwpAQCAtMjA1MCw3ICsyMDUzLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVz
dWx0PElETERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5Pj4gY29udmVydERpY3QK
ICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9
IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcmVudE1lbWJlcjJWYWx1ZSA9
IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFyZW50TWVtYmVyMiJfcykpOworICAgICAgICBwYXJlbnRNZW1iZXIy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQog
ICAgIGF1dG8gcGFyZW50TWVtYmVyMkNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlv
bmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJlbnRNZW1iZXIyVmFsdWUp
OwpAQCAtMjA2MCw3ICsyMDYzLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERp
Y3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5Pj4gY29udmVydERpY3QKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIGNoaWxkTWVtYmVyMVZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgY2hpbGRNZW1iZXIxVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNoaWxkTWVtYmVyMSJfcykpOworICAgICAgICBjaGlsZE1lbWJlcjFWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2hpbGRNZW1iZXIxIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNoaWxk
TWVtYmVyMUNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjaGlsZE1lbWJlcjFWYWx1ZSk7CkBAIC0yMDcwLDcgKzIw
NzMsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2Jq
OjpDaGlsZERpY3Rpb25hcnk+PiBjb252ZXJ0RGljdAogICAgIGlmIChpc051bGxPclVuZGVmaW5l
ZCkKICAgICAgICAgY2hpbGRNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBjaGlsZE1lbWJlcjJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2hpbGRNZW1iZXIy
Il9zKSk7CisgICAgICAgIGNoaWxkTWVtYmVyMlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjaGlsZE1lbWJlcjIiX3Mp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVz
dWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gY2hpbGRNZW1iZXIyQ29udmVyc2lv
blJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNoaWxkTWVtYmVyMlZhbHVlKTsKQEAgLTIxMTEsNyArMjExNCw3IEBAIHRlbXBsYXRl
PD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkdyYW5kY2hpbGREaWN0
aW9uYXJ5Pj4gY29udmVyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJl
bnRNZW1iZXIxVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJl
bnRNZW1iZXIxVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjEiX3MpKTsKKyAgICAg
ICAgcGFyZW50TWVtYmVyMVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIxIl9zKSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlv
biB7IH0pOwogICAgIH0KICAgICBhdXRvIHBhcmVudE1lbWJlcjFDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFy
ZW50TWVtYmVyMVZhbHVlKTsKQEAgLTIxMjEsNyArMjEyNCw3IEBAIHRlbXBsYXRlPD4gQ29udmVy
c2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkdyYW5kY2hpbGREaWN0aW9uYXJ5Pj4g
Y29udmVyCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJlbnRNZW1iZXIy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBwYXJlbnRNZW1iZXIy
VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcmVudE1lbWJlcjIiX3MpKTsKKyAgICAgICAgcGFyZW50
TWVtYmVyMlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJlbnRNZW1iZXIyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwog
ICAgIH0KICAgICBhdXRvIHBhcmVudE1lbWJlcjJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFyZW50TWVtYmVy
MlZhbHVlKTsKQEAgLTIxMzEsNyArMjEzNCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3Vs
dDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkdyYW5kY2hpbGREaWN0aW9uYXJ5Pj4gY29udmVyCiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBjaGlsZE1lbWJlcjFWYWx1ZSA9IGpz
VW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoaWxkTWVtYmVyMVZhbHVlID0gV2Vi
Q29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjaGlsZE1lbWJlcjEiX3MpKTsKKyAgICAgICAgY2hpbGRNZW1iZXIxVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNoaWxkTWVtYmVyMSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0
byBjaGlsZE1lbWJlcjFDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExC
b29sZWFuPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2hpbGRNZW1iZXIxVmFsdWUpOwpAQCAtMjE0
MSw3ICsyMTQ0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8
VGVzdE9iajo6R3JhbmRjaGlsZERpY3Rpb25hcnk+PiBjb252ZXIKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIGNoaWxkTWVtYmVyMlZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgY2hpbGRNZW1iZXIyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNoaWxk
TWVtYmVyMiJfcykpOworICAgICAgICBjaGlsZE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2hpbGRNZW1i
ZXIyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVy
c2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNoaWxkTWVtYmVyMkNv
bnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjaGlsZE1lbWJlcjJWYWx1ZSk7CkBAIC0yMTUxLDcgKzIxNTQsNyBAQCB0
ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0T2JqOjpHcmFuZGNo
aWxkRGljdGlvbmFyeT4+IGNvbnZlcgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgZ3JhbmRjaGlsZE1lbWJlcjFWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGdyYW5kY2hpbGRNZW1iZXIxVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdyYW5kY2hpbGRN
ZW1iZXIxIl9zKSk7CisgICAgICAgIGdyYW5kY2hpbGRNZW1iZXIxVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImdyYW5k
Y2hpbGRNZW1iZXIxIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGdyYW5k
Y2hpbGRNZW1iZXIxQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQm9v
bGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdyYW5kY2hpbGRNZW1iZXIxVmFsdWUpOwpAQCAt
MjE2MSw3ICsyMTY0LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25h
cnk8VGVzdE9iajo6R3JhbmRjaGlsZERpY3Rpb25hcnk+PiBjb252ZXIKICAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCiAgICAgICAgIGdyYW5kY2hpbGRNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIGVsc2UgewotICAgICAgICBncmFuZGNoaWxkTWVtYmVyMlZhbHVlID0gV2ViQ29y
ZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJncmFuZGNoaWxkTWVtYmVyMiJfcykpOworICAgICAgICBncmFuZGNoaWxkTWVtYmVy
MlZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJncmFuZGNoaWxkTWVtYmVyMiJfcykpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAg
ICB9CiAgICAgYXV0byBncmFuZGNoaWxkTWVtYmVyMkNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0
PElETE9wdGlvbmFsPElETEJvb2xlYW4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBncmFuZGNoaWxk
TWVtYmVyMlZhbHVlKTsKQEAgLTIyMDcsNyArMjIxMCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lv
blJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUE+PiBj
b252CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdXaXRob3V0RGVm
YXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0
aG91dERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3Mp
KTsKKyAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91
dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBD
b252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gc3RyaW5nV2l0
aG91dERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExET01T
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlKTsK
QEAgLTIyNDYsNyArMjI0OSw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0
aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUI+PiBjb252CiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1
ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKKyAgICAgICAgc3Ry
aW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0
RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gc3RyaW5nV2l0aG91dERlZmF1bHRDb252
ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExET01TdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlKTsKQEAgLTIyODUsNyArMjI4
OCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6
OkNvbmRpdGlvbmFsRGljdGlvbmFyeUM+PiBjb252CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQogICAgICAgICBzdHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IFdlYkNvcmU6Omdl
dChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKKyAgICAgICAgc3RyaW5nV2l0aG91dERlZmF1
bHRWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3RyaW5nV2l0aG91dERlZmF1bHQiX3MpKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7
CiAgICAgfQogICAgIGF1dG8gc3RyaW5nV2l0aG91dERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydDxJRExPcHRpb25hbDxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
dHJpbmdXaXRob3V0RGVmYXVsdFZhbHVlKTsKQEAgLTIzMjMsNyArMjMyNiw3IEBAIHRlbXBsYXRl
PD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OlByb21pc2VQYWlyPj4g
Y29udmVydERpY3Rpb25hCiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwcm9t
aXNlMVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcHJvbWlzZTFW
YWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvbWlzZTEiX3MpKTsKKyAgICAgICAgcHJvbWlzZTFWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicHJvbWlzZTEiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8g
cHJvbWlzZTFDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExQcm9taXNl
PElETFVuZGVmaW5lZD4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9taXNlMVZhbHVlKTsKQEAg
LTIzMzMsNyArMjMzNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9u
YXJ5PFRlc3RPYmo6OlByb21pc2VQYWlyPj4gY29udmVydERpY3Rpb25hCiAgICAgaWYgKGlzTnVs
bE9yVW5kZWZpbmVkKQogICAgICAgICBwcm9taXNlMlZhbHVlID0ganNVbmRlZmluZWQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgcHJvbWlzZTJWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvbWlzZTIi
X3MpKTsKKyAgICAgICAgcHJvbWlzZTJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvbWlzZTIiX3MpKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0
aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcHJvbWlzZTJDb252ZXJzaW9uUmVzdWx0ID0gY29u
dmVydDxJRExPcHRpb25hbDxJRExQcm9taXNlPElETFVuZGVmaW5lZD4+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcm9taXNlMlZhbHVlKTsKQEAgLTMzODYsNyArMzM4OSw3IEBAIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiX3MsICZCYXNl
OjpzX2luZm8sIG51CiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RPYmpQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCkBA
IC0zNDg4LDEzICszNDkxLDEzIEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKICAgICBw
dXREaXJlY3Qodm0sIGJ1aWx0aW5OYW1lcyh2bSkucHJpdmF0ZU1ldGhvZFByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcmVhbG0oKSwgMCwgU3RyaW5nKCksIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX3ByaXZhdGVNZXRob2QsIEltcGxlbWVudGF0aW9uVmlzaWJpbGl0eTo6
UHVibGljKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCBidWlsdGluTmFtZXModm0p
LnB1YmxpY0FuZFByaXZhdGVNZXRob2RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHJlYWxtKCksIDAsIFN0cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9wdWJs
aWNBbmRQcml2YXRlTWV0aG9kLCBJbXBsZW1lbnRhdGlvblZpc2liaWxpdHk6OlB1YmxpYyksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wsIFdlYkNvcmU6OmdldERpcmVjdChyZWFsbSgpLT5hcnJheVByb3RvdHlwZSgpLCB2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHJlYWxt
KCktPmFycmF5UHJvdG90eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkudmFsdWVzUHJpdmF0ZU5hbWUoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIGFkZFZhbHVlSXRlcmFibGVN
ZXRob2RzKCpyZWFsbSgpLCAqdGhpcyk7Ci0gICAgSlNPYmplY3QmIHVuc2NvcGFibGVzID0gKldl
YkNvcmU6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KHJlYWxtKCksIHJlYWxtKCktPm51bGxQcm90b3R5
cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgSlNPYmplY3QmIHVuc2NvcGFibGVzID0gKmNvbnN0
cnVjdEVtcHR5T2JqZWN0KHZtLCByZWFsbSgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJl
KCkpOwogICAgIHVuc2NvcGFibGVzLnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVuZGVmaW5lZE1ldGhvZCJfcyksIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgdW5zY29w
YWJsZXMucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic2hvcnRBdHRy
Il9zKSwganNCb29sZWFuKHRydWUpKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5zY29wYWJsZXNTeW1ib2wsICZ1
bnNjb3BhYmxlcywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuc2Nv
cGFibGVzU3ltYm9sLCAmdW5zY29wYWJsZXMsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJ
TkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
T2JqOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0Il9zLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2Jq
VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqKSB9OwpAQCAtMzU1
Niw3ICszNTU5LDcgQEAgYm9vbCBKU1Rlc3RPYmo6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmoKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXZWJDb3JlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU1Rlc3RPYmo6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQpAQCAtNzEwOSw3ICs3MTEyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9ial9yZXBsYWNlYWJsZUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWMKICAg
ICBTVVBQUkVTU19VTkNPVU5URURfTE9DQUwgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIGJvb2wgc2hvdWxkVGhy
b3cgPSB0cnVlOwotICAgIFdlYkNvcmU6OmNyZWF0ZURhdGFQcm9wZXJ0eSgmdGhpc09iamVjdCwg
JmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICB0aGlzT2JqZWN0LmNyZWF0ZURhdGFQcm9wZXJ0eSgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC03Mzk0LDcgKzczOTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3B1
dEZvcndhcmRzQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpYwogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwdXRGb3J3YXJk
c0F0dHJpYnV0ZSJfcyk7Ci0gICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gV2ViQ29yZTo6Z2V0
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpOworICAgIGF1dG8gdmFsdWVU
b0ZvcndhcmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaWYgKCF2YWx1
ZVRvRm9yd2FyZFRvLmlzT2JqZWN0KCkpIFtbdW5saWtlbHldXSB7CiAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKQEAgLTc0MzEsNyArNzQz
NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpfcHV0Rm9yd2FyZHNOdWxsYWJs
ZUF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIGlk
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1
dGUiX3MpOwotICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IFdlYkNvcmU6OmdldCgmdGhpc09i
amVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTsKKyAgICBhdXRvIHZhbHVlVG9Gb3J3YXJk
VG8gPSB0aGlzT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaWQpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIGlmICghdmFsdWVUb0Zvcndh
cmRUby5pc09iamVjdCgpKSBbW3VubGlrZWx5XV0gewogICAgICAgICB0aHJvd1R5cGVFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CkBAIC0xMDA5OCw3ICsxMDEwMSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9vdmVybG9hZGVkTWV0aG9kT3ZlCiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5p
c09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHM8SlNCbG9i
PigpKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kMTNCb2R5KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgY2FzdGVkVGhpcykpKTsKICAgICAgICAgewotICAgICAgICAgICAg
Ym9vbCBzdWNjZXNzID0gV2ViQ29yZTo6aGFzSXRlcmF0b3JNZXRob2QobGV4aWNhbEdsb2JhbE9i
amVjdCwgZGlzdGluZ3Vpc2hpbmdBcmcpOworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gaGFz
SXRlcmF0b3JNZXRob2QobGV4aWNhbEdsb2JhbE9iamVjdCwgZGlzdGluZ3Vpc2hpbmdBcmcpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAg
ICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIChqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9vdmVybG9hZGVkTWV0aG9kN0Jv
ZHkobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBjYXN0ZWRUaGlzKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKaW5kZXggMGVjMzQ2ZWNmMjE1Li4x
ZjhkNGFlYzFmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMuaCIK
QEAgLTM5LDggKzM4LDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTM2LDE0ICsxMzgsMTQgQEAgY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0T3BlcmF0aW9uQ28KIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWw6OmluZm8oKSwgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwg
anNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6OnNfaW5mbyA9IHsgIlRlc3RPcGVy
YXRpb25Db25kaXRpb25hbCJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbCkgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBhMDM2NWE1NWVhNDQu
LmI1NWI5Yzc5OTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydEludGVyZmFjZS5oIgpAQCAtNDIsOCArNDEsMTEgQEAKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90
b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZp
c2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBA
IC0yNDgsMTQgKzI1MCwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZQogCiBKU0M6OlN0cnVj
dHVyZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAog
dm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5mbygpLCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
LSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5m
bygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRI
T1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIl9zLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggNTg3Y2MxNzM5
M2M1Li4wMjNjMGZjMzhiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJFeHRlbmRlZERPTUNsaWVudElzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkV4dGVu
ZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dE9wdGlvbmFsLmgiCkBAIC0zOSw5ICszOCwxMyBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVy
UHJlcGFyYXRpb25zLmg+CkBAIC0xNDQsNyArMTQ3LDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1cKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSkpKTsKICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gV2ViQ29yZTo6
aGFzSXRlcmF0b3JNZXRob2QobGV4aWNhbEdsb2JhbE9iamVjdCwgZGlzdGluZ3Vpc2hpbmdBcmcp
OworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gaGFzSXRlcmF0b3JNZXRob2QobGV4aWNhbEds
b2JhbE9iamVjdCwgZGlzdGluZ3Vpc2hpbmdBcmcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUpKSk7CkBAIC0xODIsMTQgKzE4NSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiVAogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6aW5mbygpLCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmluZGV4IDEz
MTIxYWNmMDY5OS4uNzA2ODVkMGRhODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMu
aCIKQEAgLTM3LDggKzM2LDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTEwLDE0ICsxMTIsMTQgQEAg
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdFBsdWdpbkludGVyZmFjZSIKIAogSlNDOjpTdHJ1Y3R1cmUqIEpTVGVzdFBsdWdpbklu
dGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OmluZm8oKSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMs
ICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBs
dWdpbkludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdFBsdWdpbkludGVyZmFjZSJfcywgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVn
aW5JbnRlcmZhY2UpIH07CkBAIC0xNzUsNyArMTc3LDcgQEAgYm9vbCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OmxlZ2FjeVBsYXRmb3JtT2JqZWN0R2V0T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwKICAgICBBU1NFUlQoc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKTsKICAgICBpZiAo
c2xvdC5pc1ZNSW5xdWlyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQog
CiBib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IDgyMGI2YTY0OTkzYS4uNjdiY2NiNDdmOGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVk
ZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0QW55LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVh
bi5oIgpAQCAtNDMsOCArNDIsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CkBAIC04MSw3ICs4Myw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3Vs
dDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OkluaXQ+PiBjb252CiAg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBidWJibGVzVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBidWJibGVzVmFsdWUgPSBXZWJDb3JlOjpnZXQo
b2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImJ1YmJsZXMiX3MpKTsKKyAgICAgICAgYnViYmxlc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJidWJibGVzIl9zKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3Vs
dEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGJ1YmJsZXNDb252ZXJzaW9uUmVzdWx0
ID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBidWJibGVzVmFsdWUp
OwpAQCAtOTEsNyArOTMsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlv
bmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pj4gY29udgogICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKICAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0ganNVbmRlZmluZWQoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgY2FuY2VsYWJsZVZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVj
dCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYW5j
ZWxhYmxlIl9zKSk7CisgICAgICAgIGNhbmNlbGFibGVWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FuY2VsYWJsZSJf
cykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25S
ZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBjYW5jZWxhYmxlQ29udmVyc2lv
blJlc3VsdCA9IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FuY2Vs
YWJsZVZhbHVlKTsKQEAgLTEwMSw3ICsxMDMsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1
bHQ8SURMRGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpJbml0Pj4gY29udgog
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY29tcG9zZWRWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbXBvc2VkVmFsdWUgPSBXZWJDb3JlOjpn
ZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNvbXBvc2VkIl9zKSk7CisgICAgICAgIGNvbXBvc2VkVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNvbXBvc2Vk
Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lv
blJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNvbXBvc2VkQ29udmVyc2lv
blJlc3VsdCA9IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY29tcG9z
ZWRWYWx1ZSk7CkBAIC0xMTMsNyArMTE1LDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0
PElETERpY3Rpb25hcnk8VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6SW5pdD4+IGNvbnYKICAg
ICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICB0cnVzdGVk
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdHJ1c3RlZFZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cnVzdGVkIl9zKSk7CisgICAgICAgICAg
ICAgICAgdHJ1c3RlZFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cnVzdGVkIl9zKSk7CiAgICAgICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9u
IHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gY29udmVydDxJRExCb29s
ZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0cnVzdGVkVmFsdWUpOwpAQCAtMTI3LDcgKzEyOSw3
IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PFRlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQ6OkluaXQ+PiBjb252CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQog
ICAgICAgICBwcm9taXNlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAg
ICBwcm9taXNlVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb21pc2UiX3MpKTsKKyAgICAgICAgcHJv
bWlzZVZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwcm9taXNlIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAg
ICBpZiAocHJvbWlzZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE0MSw3ICsxNDMsNyBAQCB0
ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpJbml0Pj4gY29udgogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgcmVhc29uVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICByZWFz
b25WYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVhc29uIl9zKSk7CisgICAgICAgIHJlYXNvblZhbHVl
ID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJyZWFzb24iX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcmVh
c29uQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8SURMQW55PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCByZWFzb25WYWx1ZSk7CkBAIC0yNTMsMTQgKzI1NSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlz
ZVJlagogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJh
eSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFByb21pc2VSZWplY3Rpb25F
dmVudDo6aW5mbygpLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGVUYWJsZVZh
bHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRo
aXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFs
U3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19T
VFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Il9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRP
bmx5TWFwTGlrZS5jcHAKaW5kZXggN2JjODY5Y2JjYzQzLi45M2ViNDU1ZDY1NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25s
eU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
RXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5o
IgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0QW55LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpA
QCAtNDEsOCArNDAsMTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEzMSwxNSArMTMzLDE1
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RSZWFkT25seU1hcExpa2UiCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RSZWFk
T25seU1hcExpa2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewot
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0UmVhZE9u
bHlNYXBMaWtlOjppbmZvKCksIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAqdGhpcyk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgV2ViQ29yZTo6Z2V0RGlyZWN0KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgV2ViQ29yZTo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
VGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRy
aWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lU
SU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25seU1hcExpa2U6OnNfaW5m
byA9IHsgIlRlc3RSZWFkT25seU1hcExpa2UiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5U2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAppbmRleCAyNjA3ZGU1NTg3MGEuLmRmZjJmMTMz
YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKQEAgLTI3LDcgKzI3LDYg
QEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRBbnkuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnRTdHJpbmdzLmgiCkBAIC00MSw4ICs0MCwxMSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ2VsbElubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNp
dG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAt
MTI5LDE1ICsxMzEsMTUgQEAgY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5U2V0TGlrZSIKIAogSlNDOjpTdHJ1Y3R1
cmUqIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rl
c3RSZWFkT25seVNldExpa2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBKU1Rlc3RSZWFkT25seVNldExpa2U6OmluZm8oKSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJv
dG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBXZWJDb3JlOjpnZXREaXJlY3QodGhpcywgdm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIFdl
YkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNs
YXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25seVNl
dExpa2U6OnNfaW5mbyA9IHsgIlRlc3RSZWFkT25seVNldExpa2UiX3MsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVhZE9ubHlTZXRM
aWtlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAppbmRl
eCAyMDAyMzBhMTMwNDUuLmI0MDExNDkyOTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJFeHRlbmRl
ZERPTUNsaWVudElzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
RmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
ICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3RJbmxpbmVzLmgiCkBAIC0zNSw4ICszNCwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlw
ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRv
ck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEw
OCwxNCArMTEwLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3RQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RSZXBvcnRFeHRyCiAKIEpTQzo6U3RydWN0dXJl
KiBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjppbmZvKCksIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2Vi
Q29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xh
c3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3Q6OnNfaW5mbyA9IHsgIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiX3MsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCA2
ZGIxNzRmMGQzYWQuLjc2YTU5OGU3ODdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNjaGVkdWxlZEFjdGlv
bi5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNl
cy5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0U2NoZWR1bGVkQWN0aW9uLmgiCkBAIC00MCw4ICszOSwxMSBAQAog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVw
YXJhdGlvbnMuaD4KQEAgLTExOCwxNCArMTIwLDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
Y2hlZHVsZWRBY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTY2hlZHVsZWRBY3Rpb25S
CiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RTY2hlZHVsZWRBY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKIHZvaWQgSlNUZXN0U2NoZWR1bGVkQWN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgSlNUZXN0U2NoZWR1bGVkQWN0aW9uOjppbmZvKCksIEpTVGVzdFNj
aGVkdWxlZEFjdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1l
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9O
KCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTY2hlZHVsZWRBY3Rpb246OnNfaW5mbyA9
IHsgIlRlc3RTY2hlZHVsZWRBY3Rpb25SZWFsIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNjaGVkdWxlZEFjdGlvbikgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggYWZkNTJmMDYxZTkwLi5mMjA4ZGYzNzEwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2Fk
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFj
ZS5oIgpAQCAtNDksOCArNDgsMTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXkuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5l
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xNDEsMTQgKzE0Mywx
NCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UwogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
aW5mbygpLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2
aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19U
T19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpzX2luZm8gPSB7ICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAppbmRleCA2ZjQ5MGNlNTA2ZjAuLjI3NDYwNjM0
NjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4
dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydEFueS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKQEAg
LTQxLDggKzQwLDExIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMzUsMTUgKzEzNywxNSBA
QCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dFNldExpa2UiX3MsICZCYXNlOjpzX2luZgogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0U2V0TGlr
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6
Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RTZXRMaWtlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U2V0TGlrZTo6aW5mbygpLCBKU1Rlc3RT
ZXRMaWtlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBXZWJDb3JlOjpnZXREaXJlY3QodGhpcywg
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBp
bmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
ZXRMaWtlOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlrZSJfcywgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXRMaWtlKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CmluZGV4IGFhOTZlYTZlNDJkYi4uNDdiYTQ5ZDMyMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2Fk
ZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0QW55LmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0QmFzZS5oIgpA
QCAtNDQsOCArNDMsMTEgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTEzOSwxNSArMTQxLDE1
IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0CiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RTZXRM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
OjppbmZvKCksIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wsIFdlYkNvcmU6OmdldERpcmVjdCh0aGlzLCB2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgV2ViQ29yZTo6
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1l
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCwgZ2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS52YWx1ZXNQdWJsaWNOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnM6OnNfaW5mbyA9IHsgIlRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRh
bG9uZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAppbmRleCBkNTQ4YWY4OTUwMmEuLjRk
MWU2M2RiMjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
CkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJKU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFy
eS5oIgogCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01D
b252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxiYWNrcy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydE51bGxhYmxlLmgiCkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSlNWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgpAQCAtMTA2LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0
aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgp
OwogICAgIGVsc2UgewotICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2Jq
ZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJv
b2xNZW1iZXIiX3MpKTsKKyAgICAgICAgYm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVy
Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lv
blJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGJvb2xNZW1iZXJDb252ZXJz
aW9uUmVzdWx0ID0gY29udmVydDxJRExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgYm9vbE1lbWJlclZhbHVlKTsKQEAgLTExNiw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+
IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+PiBjb252
ZXJ0RGljdGlvbmFyeQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgY2FsbGJh
Y2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CisgICAg
ICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIl9zKSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2Vw
dGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGNhbGxiYWNrTWVtYmVyQ29udmVyc2lvblJlc3Vs
dCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCB1bmNoZWNrZWRE
b3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdD4obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTI2
LDcgKzEyNiw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PERp
Y3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQogICAgICAgICBlbnVtTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVs
c2UgewotICAgICAgICBlbnVtTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW1NZW1iZXIi
X3MpKTsKKyAgICAgICAgZW51bU1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtTWVtYmVyIl9zKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4
Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIGVudW1NZW1iZXJDb252ZXJzaW9uUmVzdWx0
ID0gY29udmVydDxJRExPcHRpb25hbDxJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBlbnVtTWVtYmVyVmFsdWUpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHRlbXBsYXRlPD4gQ29u
dmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnRE
aWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZVVu
aW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIG51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlID0gV2ViQ29y
ZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUiX3MpKTsKKyAgICAgICAg
bnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm51bGxhYmxlVW5p
b25XaXRoTnVsbERlZmF1bHRWYWx1ZSJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAg
YXV0byBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydE9wdGlvbmFsV2l0aERlZmF1bHQ8SURMTnVsbGFibGU8SURMVW5pb248SURMRE9NU3Ry
aW5nLCBJRExCb29sZWFuPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxhYmxlVW5pb25XaXRo
TnVsbERlZmF1bHRWYWx1ZVZhbHVlLCBbJl0gLT4gQ29udmVyc2lvblJlc3VsdDxJRExOdWxsYWJs
ZTxJRExVbmlvbjxJRExET01TdHJpbmcsIElETEJvb2xlYW4+Pj4geyByZXR1cm4gdHlwZW5hbWUg
Q29udmVydGVyPElETE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+
Pjo6UmV0dXJuVHlwZSB7IHN0ZDo6bnVsbG9wdCB9OyB9KTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB0
ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURMRGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5h
bWU+PiBjb252ZXJ0RGljdGlvbmFyeQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxCb29sZWFuTWVtYmVyIl9zKSk7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0K
ICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVtYmVyQ29udmVyc2lvblJlc3VsdCA9IGNvbnZlcnQ8
SURMT3B0aW9uYWw8SURMQm9vbGVhbj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWUpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lv
blJlc3VsdDxJRExEaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9u
YXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsQm9vbGVhbk1l
bWJlcldpdGhJZ25vcmVkQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbFZh
bHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0
aW9uYWwiX3MpKTsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRp
dGlvbmFsVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRp
b25hbCJfcykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZl
cnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQm9vbGVh
bk1lbWJlcldpdGhJZ25vcmVkQ29uZGl0aW9uYWxDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExPcHRpb25hbDxJRExCb29sZWFuPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbEJvb2xl
YW5NZW1iZXJXaXRoSWdub3JlZENvbmRpdGlvbmFsVmFsdWUpOwpAQCAtMTcxLDcgKzE3MSw3IEBA
IHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBs
TmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAg
ICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9i
amVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsQ2FsbGJhY2tNZW1iZXIiX3MpKTsKKyAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsK
ICAgICB9CiAgICAgYXV0byBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJDb252ZXJzaW9uUmVzdWx0ID0g
Y29udmVydDxJRExPcHRpb25hbDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCB1bmNoZWNr
ZWREb3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdD4obGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAt
MTgzLDcgKzE4Myw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5
PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQogICAgICAgICBwYXJ0aWFsRW51bU1lbWJlclZhbHVlID0ganNVbmRlZmluZWQo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFydGlhbEVudW1NZW1iZXJWYWx1ZSA9IFdlYkNvcmU6
OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicGFydGlhbEVudW1NZW1iZXIiX3MpKTsKKyAgICAgICAgcGFydGlhbEVudW1NZW1iZXJW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbEVudW1NZW1iZXIiX3MpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAgICAg
fQogICAgIGF1dG8gcGFydGlhbEVudW1NZW1iZXJDb252ZXJzaW9uUmVzdWx0ID0gY29udmVydDxJ
RExPcHRpb25hbDxJRExFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1J
blN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFs
RW51bU1lbWJlclZhbHVlKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNp
b25SZXN1bHQ8SURMRGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+PiBjb252ZXJ0RGljdGlv
bmFyeQogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcGFydGlhbFJlcXVpcmVk
TG9uZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGFy
dGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVjdCwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyIl9zKSk7CisgICAgICAgIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciJfcykpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9KTsK
ICAgICB9CiAgICAgaWYgKHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElE
TERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPj4gY29udmVydERpY3Rpb25hcnkKICAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9
IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJW
YWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciJfcykpOworICAgICAgICBw
YXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0
RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlckNvbnZl
cnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9wdGlvbmFsPElETERPTVN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CkBAIC0yMjUsNyArMjI1LDcg
QEAgdGVtcGxhdGU8PiBDb252ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8RGljdGlvbmFyeUlt
cGxOYW1lPj4gY29udmVydERpY3Rpb25hcnkKICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNl
dHRpbmdWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IFdl
YkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIl9zKSk7
CisgICAgICAgICAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5n
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyJfcykp
OwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVy
c2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMRE9NU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOwpAQCAtMjQx
LDcgKzI0MSw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0aW9uYXJ5PERp
Y3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQogICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gV2ViQ29yZTo6Z2V0KG9iamVj
dCwgJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0
aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiX3MpKTsKKyAgICAgICAgcGFy
dGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBvYmplY3QtPmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyJfcykpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENvbnZlcnNpb25SZXN1bHRFeGNlcHRpb24geyB9
KTsKICAgICB9CiAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyQ29udmVyc2lvblJl
c3VsdCA9IGNvbnZlcnQ8SURMT3B0aW9uYWw8SURMVW5zaWduZWRMb25nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUp
OwpAQCAtMjUyLDcgKzI1Miw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJlc3VsdDxJRExEaWN0
aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5CiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwZXJtaXNzaXZlRW51bU1lbWJlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcGVybWlzc2l2ZUVudW1NZW1iZXJWYWx1
ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGVybWlzc2l2ZUVudW1NZW1iZXIiX3MpKTsKKyAgICAgICAgcGVy
bWlzc2l2ZUVudW1NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGVybWlzc2l2ZUVudW1NZW1iZXIiX3MpKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0
RXhjZXB0aW9uIHsgfSk7CiAgICAgfQogICAgIGF1dG8gcGVybWlzc2l2ZUVudW1NZW1iZXJDb252
ZXJzaW9uUmVzdWx0ID0gWyZdIC0+IENvbnZlcnNpb25SZXN1bHQ8SURMT3B0aW9uYWw8SURMRW51
bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlv
bmFyeUZpbGU+Pj4gewpAQCAtMjY4LDcgKzI2OCw3IEBAIHRlbXBsYXRlPD4gQ29udmVyc2lvblJl
c3VsdDxJRExEaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4+IGNvbnZlcnREaWN0aW9uYXJ5
CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBwZXJtaXNzaXZlRW51bU1lbWJl
cldpdGhEZWZhdWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICBw
ZXJtaXNzaXZlRW51bU1lbWJlcldpdGhEZWZhdWx0VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBlcm1p
c3NpdmVFbnVtTWVtYmVyV2l0aERlZmF1bHQiX3MpKTsKKyAgICAgICAgcGVybWlzc2l2ZUVudW1N
ZW1iZXJXaXRoRGVmYXVsdFZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwZXJtaXNzaXZlRW51bU1lbWJlcldpdGhEZWZh
dWx0Il9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ29udmVy
c2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAgIH0KICAgICBhdXRvIHBlcm1pc3NpdmVFbnVt
TWVtYmVyV2l0aERlZmF1bHRDb252ZXJzaW9uUmVzdWx0ID0gWyZdIC0+IENvbnZlcnNpb25SZXN1
bHQ8SURMRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGU+PiB7CkBAIC0yODQsNyArMjg0LDcgQEAgdGVtcGxhdGU8PiBDb252
ZXJzaW9uUmVzdWx0PElETERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPj4gY29udmVydERp
Y3Rpb25hcnkKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHN0cmluZ01lbWJl
clZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RyaW5nTWVtYmVy
VmFsdWUgPSBXZWJDb3JlOjpnZXQob2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciJfcykpOworICAgICAgICBzdHJpbmdN
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIl9zKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgQ29udmVyc2lvblJlc3VsdEV4Y2VwdGlvbiB7IH0pOwogICAg
IH0KICAgICBhdXRvIHN0cmluZ01lbWJlckNvbnZlcnNpb25SZXN1bHQgPSBjb252ZXJ0PElETE9w
dGlvbmFsPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ01lbWJlclZh
bHVlKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB0ZW1wbGF0ZTw+IENvbnZlcnNpb25SZXN1bHQ8SURM
RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1wbE5hbWU+PiBjb252ZXJ0RGljdGlvbmFyeQogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVl
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIGVsc2UgewotICAgICAgICB1bmlvbk1lbWJlcldp
dGhEZWZhdWx0VmFsdWVWYWx1ZSA9IFdlYkNvcmU6OmdldChvYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidW5pb25NZW1iZXJXaXRoRGVmYXVs
dFZhbHVlIl9zKSk7CisgICAgICAgIHVuaW9uTWVtYmVyV2l0aERlZmF1bHRWYWx1ZVZhbHVlID0g
b2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ1bmlvbk1lbWJlcldpdGhEZWZhdWx0VmFsdWUiX3MpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDb252ZXJzaW9uUmVzdWx0RXhjZXB0aW9uIHsgfSk7CiAg
ICAgfQogICAgIGF1dG8gdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZhbHVlQ29udmVyc2lvblJlc3Vs
dCA9IGNvbnZlcnRPcHRpb25hbFdpdGhEZWZhdWx0PElETFVuaW9uPElETEVudW1lcmF0aW9uPFRl
c3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiwg
SURMRG91YmxlPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdW5pb25NZW1iZXJXaXRoRGVmYXVsdFZh
bHVlVmFsdWUsIFsmXSAtPiBDb252ZXJzaW9uUmVzdWx0PElETFVuaW9uPElETEVudW1lcmF0aW9u
PFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxl
PiwgSURMRG91YmxlPj4geyByZXR1cm4gQ29udmVydGVyPElETFVuaW9uPElETEVudW1lcmF0aW9u
PFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxl
PiwgSURMRG91YmxlPj46OlJldHVyblR5cGUgeyBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVu
dW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZTo6RW51bVZhbHVlMSB9OyB9KTsKQEAgLTM0MSw3
ICszNDEsNyBAQCBKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAgIFNVUFBSRVNTX1VOQ09VTlRF
RF9MT0NBTCBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBy
ZXN1bHQgPSBXZWJDb3JlOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2Jq
ZWN0UHJvdG90eXBlKCkpOwogCiAgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0
aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CiAgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9K
UzxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBJRExCb29sZWFu
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCmluZGV4IGRlYTdmOGY2MzE4
NS4uZDdlNTk5ZmU4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiSlNUZXN0U3RhbmRhbG9uZUVu
dW1lcmF0aW9uLmgiCiAKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvU29ydGVkQXJyYXlNYXAuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCmluZGV4IDdhYWUx
MGFhZGUxZS4uMGJiODQ1MjVkMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJFeHRlbmRlZERPTUNsaWVudElzb1N1YnNwYWNlcy5oIgog
I2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzcsOCArMzYs
MTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3Bh
Y2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTUsMTQgKzExNywxNCBAQCBjb25zdCBDbGFzc0luZm8g
SlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllciJf
cywgJkJhcwogCiBKU0M6OlN0cnVjdHVyZSogSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllcjo6aW5mbygpLCBKU1Rlc3RTdHJpbmdp
ZmllclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllcjo6c19pbmZvID0geyAiVGVzdFN0cmlu
Z2lmaWVyIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKaW5kZXggNjU1OWYwODJjNTFhLi4wNWJl
YzI4NGI0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9N
Q2xpZW50SXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNh
ZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCkBAIC0zNyw4ICszNiwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERh
dGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExNSwxNCArMTE3
LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
blByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0CiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpp
bmZvKCksIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlVGFibGVW
YWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0
aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9f
U1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb24iX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRp
b24pIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAKaW5kZXggZjBhYjkxYmYzM2QzLi4wNjE5Yjc5ZjgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJFeHRlbmRlZERPTUNsaWVudElzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkV4dGVu
ZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMzcsOCArMzYsMTEgQEAKICNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CkBAIC0xMTcsMTQgKzExOSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZp
ZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFN0cmluZwogCiBKU0M6
OlN0cnVjdHVyZSogSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbjo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlVGFi
bGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24pIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXMuY3BwCmluZGV4IDliMzQxZWZlN2Y2My4uZjVlZDMwMzQyYmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNw
cApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3Bh
Y2VzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29u
dmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkBAIC0z
Nyw4ICszNiwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExNywxNCArMTE5LDE0IEBAIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjppbmZv
KCksIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxl
VmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RP
X1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnNfaW5mbyA9IHsgIlRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiX3MsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAppbmRleCA4NzRiNDk5MTZjNDMuLmNiYWU4
OTJlMTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJFeHRl
bmRlZERPTUNsaWVudElzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkV4dGVuZGVkRE9NSXNvU3Vi
c3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgpAQCAtMzcsOCArMzYsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
ZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JN
YWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTUs
MTQgKzExNywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25O
YW1lZFRvU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZQogCiBKU0M6OlN0cnVjdHVyZSog
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
fQogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZzo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmdQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNvcmU6OnB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNzTmFtZSksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwog
fQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIl9z
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCBlZjA0ZmM1
NDQ0YWIuLmY5MTI5ZWNlMzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkV4
dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCkBAIC0zOCw4ICszNywxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTExOCwxNCArMTIwLDE0IEBA
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0U3RyCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9w
ZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjppbmZvKCksIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOwotICAgIFdlYkNvcmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZt
LCBpbmZvKCktPmNsYXNzTmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGUiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwCmlu
ZGV4IDViYzhlNzM3YjIzYy4uMDU3NDczMWRlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgpAQCAtMzgsOCArMzcsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
ZWxsSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JN
YWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMTks
MTQgKzEyMSwxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RTdAogCiBKU0M6OlN0cnVjdHVyZSog
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAK
IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZTo6aW5mbygpLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlw
ZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odGhpcywgdm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGluZm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6c19pbmZvID0geyAiVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIl9zLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRl
QXR0cmlidXRlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFRhZ2dlZFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFRhZ2dlZFdyYXBwZXIuY3BwCmluZGV4IDI3MmNiYWEw
YTQzMC4uMGVhMDA5YjBjYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VGFnZ2VkV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFRhZ2dlZFdyYXBwZXIuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAjaW5jbHVkZSAiRXh0ZW5kZWRET01DbGllbnRJc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0ZhY2FkZS5oIgogI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtMzUs
OCArMzQsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMDgsMTQgKzExMCwxNCBAQCBjb25zdCBDbGFz
c0luZm8gSlNUZXN0VGFnZ2VkV3JhcHBlclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdFRhZ2dl
ZFdyYXBwZXIiX3MsCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RUYWdnZWRXcmFwcGVyUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJh
eSk7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwogfQogCiB2b2lkIEpTVGVzdFRhZ2dlZFdyYXBwZXJQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RUYWdnZWRXcmFwcGVyOjppbmZvKCksIEpT
VGVzdFRhZ2dlZFdyYXBwZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIFdlYkNv
cmU6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHRoaXMsIHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCBpbmZvKCktPmNsYXNz
TmFtZSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VGFnZ2VkV3JhcHBlcjo6c19pbmZv
ID0geyAiVGVzdFRhZ2dlZFdyYXBwZXIiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VGFnZ2VkV3JhcHBlcikgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCmluZGV4IDRmYWNlMWQ4ZmM5Yi4uYzE2ZDhiY2RhMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJJRExUeXBlcy5oIgogI2luY2x1
ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiSlNET01CaW5kaW5nRmFjYWRlLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29s
ZWFuLmgiCkBAIC01OCw4ICs1NywxMSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0
aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cnVjdHVyZUlubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KQEAgLTIzNSwxNCArMjM3
LDE0IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdFR5cGVkZWZzIl9zLCAmQmFzZTo6c19pCiAKIEpTQzo6U3RydWN0dXJlKiBKU1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6Tm9uQXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFR5cGVkZWZzOjppbmZvKCks
IEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBXZWJDb3Jl
OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05h
bWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzOjpzX2luZm8gPSB7ICJU
ZXN0VHlwZWRlZnMiX3MsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RUeXBlZGVmc1RhYmxlLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFj
a0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggYjQ0NGI5MmQ0YmY1Li5jNWU5OTUz
Y2FjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAt
MjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmgiCiAK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcklubGluZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmdGYWNhZGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1
ZmZlclNvdXJjZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hcmtlZFZlY3Rvci5oPgogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA2ZmI4YTIzOTliZTMuLjBmODE0MTQ1NTQ3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IkV4dGVuZGVkRE9NSXNvU3Vic3BhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdGYWNhZGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVj
dElubGluZXMuaCIKQEAgLTQyLDggKzQxLDExIEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2VsbElubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgpAQCAtMTMxLDE0ICsxMzMsMTQgQEAgY29uc3Qg
Q2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldvcmtl
ckdsb2JhbFNjb3BlIl9zLAogCiBKU0M6OlN0cnVjdHVyZSogSlNXb3JrZXJHbG9iYWxTY29wZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKIH0KIAogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygp
LCBKU1dvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBX
ZWJDb3JlOjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih0aGlzLCB2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5j
bGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNf
aW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIl9zLCAmQmFzZTo6c19pbmZvLCAmSlNXb3JrZXJH
bG9iYWxTY29wZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2VyR2xv
YmFsU2NvcGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA0NzBjNTdlZGY1ZjEu
LjkyODk1ZmU2ZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yMiw3ICsyMiw2
IEBACiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01XcmFwcGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDU3NTMzODhiZmU3Mi4uOGRkZDQ1ZGQyZGVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRl
ICJFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nRmFjYWRl
LmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3RJbmxpbmVzLmgiCkBAIC0zNyw4ICszNiwxMSBAQAogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDZWxsSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CkBAIC0xMDEsMTQgKzEwMywxNCBAQCBjb25z
dCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldv
cmtsZXRHbG9iYWxTY29wZSJfcwogCiBKU0M6OlN0cnVjdHVyZSogSlNXb3JrbGV0R2xvYmFsU2Nv
cGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6
Ok5vbkFycmF5KTsKKyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6
aW5mbygpLCBKU1dvcmtsZXRHbG9iYWxTY29wZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
Ci0gICAgV2ViQ29yZTo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odGhpcywgdm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGlu
Zm8oKS0+Y2xhc3NOYW1lKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lU
SE9VVF9UUkFOU0lUSU9OKCk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dvcmtsZXRHbG9iYWxT
Y29wZTo6c19pbmZvID0geyAiV29ya2xldEdsb2JhbFNjb3BlIl9zLCAmQmFzZTo6c19pbmZvLCAm
SlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dvcmtsZXRHbG9iYWxTY29wZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
ZWNmMjE5NmJkNWNiLi4yM2YzODVkYzEzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5o
CkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IkpTRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZ0ZhY2FkZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XcmFwcGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggYTM0Y2RlODg5NWY1
Li5jOWE4YTJkOTMyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGFsZ29yaXRobUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGF1dG8gbmV3UGFy
YW1zID0gU3Ryb25nPEpTT2JqZWN0Pih2bSwgSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3Rh
dGUpKTsKKyAgICAgICAgYXV0byBuZXdQYXJhbXMgPSBTdHJvbmc8SlNPYmplY3Q+KHZtLCBjb25z
dHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpKTsKICAgICAgICAgbmV3UGFyYW1zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwganNTdHJpbmcodm0sIHN0
ZDo6Z2V0PFN0cmluZz4oYWxnb3JpdGhtSWRlbnRpZmllcikpKTsKICAgICAgICAgCiAgICAgICAg
IHJldHVybiBub3JtYWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKHN0YXRlLCBuZXdQYXJh
bXMsIG9wZXJhdGlvbik7CkBAIC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRv
QWwKICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGlzIGhhY2sgb25jZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MzMzIGlzIGZpeGVkLgogICAgICAgICAgICAgSlNW
YWx1ZSBuYW1lVmFsdWUgPSB2YWx1ZS5nZXQoKS0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5hbWUiX3MpKTsKICAgICAgICAgICAgIEpTVmFsdWUgcHVibGljVmFsdWUg
PSB2YWx1ZS5nZXQoKS0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInB1
YmxpYyJfcykpOwotICAgICAgICAgICAgSlNPYmplY3QqIG5ld1ZhbHVlID0gSlNDOjpjb25zdHJ1
Y3RFbXB0eU9iamVjdCgmc3RhdGUpOworICAgICAgICAgICAgSlNPYmplY3QqIG5ld1ZhbHVlID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICAgICAgICAgIG5ld1ZhbHVlLT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwgbmFtZVZhbHVl
KTsKICAgICAgICAgICAgIG5ld1ZhbHVlLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwdWJsaWNLZXkiX3MpLCBwdWJsaWNWYWx1ZSk7CiAKQEAgLTI5MCw3ICsyOTAs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoaXMg
aGFjayBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkzMzMg
aXMgZml4ZWQuCiAgICAgICAgICAgICBKU1ZhbHVlIG5hbWVWYWx1ZSA9IHZhbHVlLmdldCgpLT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcykpOwogICAgICAg
ICAgICAgSlNWYWx1ZSBwdWJsaWNWYWx1ZSA9IHZhbHVlLmdldCgpLT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHVibGljIl9zKSk7Ci0gICAgICAgICAgICBKU09iamVj
dCogbmV3VmFsdWUgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisgICAgICAg
ICAgICBKU09iamVjdCogbmV3VmFsdWUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpOwog
ICAgICAgICAgICAgbmV3VmFsdWUtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIm5hbWUiX3MpLCBuYW1lVmFsdWUpOwogICAgICAgICAgICAgbmV3VmFsdWUtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInB1YmxpY0tleSJfcyksIHB1Ymxp
Y1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFj
dG9yeS5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKaW5kZXgg
NmJjOTcxNWQ5NDc3Li4xZmExYjEyYzljMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbApAQCAtOTEsNyArOTEsNyBAQCBzdWIgZ2VuZXJhdGVJbXBsZW1lbnRhdGlv
bigpCiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlNET01HbG9i
YWxPYmplY3QuaFwiXG4iOwogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlNET01XcmFwcGVyQ2Fj
aGUuaFwiXG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlNET01CaW5kaW5nRmFjYWRlLmhc
IlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5s
aW5lcy5oPlxuIjsKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdl
YkNvcmUge1xuIjsKICAgICBwcmludCBGICJcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUQ2hlY2tET00uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRD
aGVja0RPTS5oCmluZGV4IGI0ZmNkNzFhNGQ4OS4uYzhjMjBiMTdiOTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQ2hlY2tET00uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUQ2hlY2tET00uaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TbmlwcGV0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNw
YWNlIERPTUpJVCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNw
cAppbmRleCA2ZmExZDE0YTdmYzEuLmJmMzUwNmQwNmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU0RvY3VtZW50RE9NSklULmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEVs
ZW1lbnQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ET01KSVRDYWxsRE9NR2V0dGVyU25p
cHBldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBDZWxsSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NuaXBwZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbmlwcGV0UGFyYW1zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNO
b2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCmlu
ZGV4IGYzYTFmODljOWZlMy4uYzc0ZGYxOWNmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNO
b2RlRE9NSklULmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkRPTUpJVEhlbHBlcnMu
aCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbmlwcGV0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU25pcHBldFBhcmFtcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMjhkYzVlNzlmZGJmLi5mYmQ0YjBhNGQzNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIlRocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlT3BhcXVlUm9vdC5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKaW5kZXggOTdjOTlmMDIwZDlkLi44MzBlMzIwZWYw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAg
dm9pZCBQREZEb2N1bWVudDo6cG9zdE1lc3NhZ2VUb0lmcmFtZShjb25zdCBTdHJpbmcmIG5hbWUs
IEpTQzo6SlNPYmplY3QqIGRhdGEpCiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAKLSAgICBKU0M6OkpTT2JqZWN0KiBt
ZXNzYWdlID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpT
Qzo6SlNPYmplY3QqIG1lc3NhZ2UgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIG1lc3NhZ2UtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWVzc2FnZSwg
SlNDOjpqc05vbnRyaXZpYWxTdHJpbmcodm0sIG5hbWUpKTsKICAgICBpZiAoZGF0YSkKICAgICAg
ICAgbWVzc2FnZS0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkYXRhIl9zKSwgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IGYyMGI4OTZkMjAwMi4uNzAxMDNjODE5NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBKU1ZhbHVlIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6c3Vi
dHlwZShKU0dsb2JhbE9iamVjdCogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIAogc3RhdGljIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhdXRvKiBvYmpl
Y3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIGF1dG8qIG9iamVjdCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyksIGpzU3RyaW5nKHZtLCBuYW1lKSk7
CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ2
YWx1ZSJfcyksIHZhbHVlKTsKICAgICByZXR1cm4gb2JqZWN0OwpAQCAtNzcsNyArNzcsNyBAQCBz
dGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgUwogI2lmIEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiBzdGF0
aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnRPcHRpb25zKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGV4ZWMsIGNvbnN0IFBheW1lbnRPcHRpb25zJiBwYXltZW50T3B0aW9ucykKIHsKLSAgICBh
dXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIGF1dG8q
IG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwogICAgIG9iamVjdC0+cHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVxdWVzdFBheWVyTmFtZSJfcyks
IGpzQm9vbGVhbihwYXltZW50T3B0aW9ucy5yZXF1ZXN0UGF5ZXJOYW1lKSk7CiAgICAgb2JqZWN0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJyZXF1ZXN0UGF5ZXJF
bWFpbCJfcyksIGpzQm9vbGVhbihwYXltZW50T3B0aW9ucy5yZXF1ZXN0UGF5ZXJFbWFpbCkpOwog
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVx
dWVzdFBheWVyUGhvbmUiX3MpLCBqc0Jvb2xlYW4ocGF5bWVudE9wdGlvbnMucmVxdWVzdFBheWVy
UGhvbmUpKTsKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBvYmplY3RGb3JQYXlt
ZW50T3B0aW9ucyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBQYXkKIAogc3Rh
dGljIEpTT2JqZWN0KiBvYmplY3RGb3JQYXltZW50Q3VycmVuY3lBbW91bnQoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZXhlYywgY29uc3QgUGF5bWVudEN1cnJlbmN5QW1vdW50JiBwYXltZW50Q3Vy
cmVuY3lBbW91bnQpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKKyAgICBhdXRvKiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImN1cnJlbmN5Il9zKSwganNTdHJpbmcodm0sIHBheW1lbnRDdXJyZW5jeUFtb3VudC5jdXJyZW5j
eSkpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidmFsdWUiX3MpLCBqc1N0cmluZyh2bSwgcGF5bWVudEN1cnJlbmN5QW1vdW50LnZhbHVlKSk7
CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBv
YmplY3RGb3JQYXltZW50Q3VycmVuY3lBbW91bnQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhl
YywgY28KIAogc3RhdGljIEpTT2JqZWN0KiBvYmplY3RGb3JQYXltZW50SXRlbShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBQYXltZW50SXRlbSYgcGF5bWVudEl0ZW0pCiB7Ci0g
ICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBh
dXRvKiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBvYmplY3QtPnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxhYmVsIl9zKSwganNTdHJp
bmcodm0sIHBheW1lbnRJdGVtLmxhYmVsKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhbW91bnQiX3MpLCBvYmplY3RGb3JQYXltZW50Q3Vy
cmVuY3lBbW91bnQodm0sIGV4ZWMsIHBheW1lbnRJdGVtLmFtb3VudCkpOwogICAgIG9iamVjdC0+
cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGVuZGluZyJfcyksIGpz
Qm9vbGVhbihwYXltZW50SXRlbS5wZW5kaW5nKSk7CkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGlj
IEpTT2JqZWN0KiBvYmplY3RGb3JQYXltZW50SXRlbShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjb25zdCBQYXltZW4KIAogc3RhdGljIEpTT2JqZWN0KiBvYmplY3RGb3JQYXltZW50U2hp
cHBpbmdPcHRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUGF5bWVudFNo
aXBwaW5nT3B0aW9uJiBwYXltZW50U2hpcHBpbmdPcHRpb24pCiB7Ci0gICAgYXV0byogb2JqZWN0
ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBhdXRvKiBvYmplY3QgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlkIl9zKSwganNTdHJpbmcodm0sIHBheW1lbnRTaGlw
cGluZ09wdGlvbi5pZCkpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibGFiZWwiX3MpLCBqc1N0cmluZyh2bSwgcGF5bWVudFNoaXBwaW5nT3B0
aW9uLmxhYmVsKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJhbW91bnQiX3MpLCBvYmplY3RGb3JQYXltZW50Q3VycmVuY3lBbW91bnQodm0s
IGV4ZWMsIHBheW1lbnRTaGlwcGluZ09wdGlvbi5hbW91bnQpKTsKQEAgLTExNSw3ICsxMTUsNyBA
QCBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnRTaGlwcGluZ09wdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBleGVjLCBjbwogCiBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBh
eW1lbnREZXRhaWxzTW9kaWZpZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
UGF5bWVudERldGFpbHNNb2RpZmllciYgbW9kaWZpZXIpCiB7Ci0gICAgYXV0byogb2JqZWN0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBhdXRvKiBvYmplY3QgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN1cHBvcnRlZE1ldGhvZHMiX3MpLCBqc1N0cmluZyh2bSwg
bW9kaWZpZXIuc3VwcG9ydGVkTWV0aG9kcykpOwogICAgIGlmIChtb2RpZmllci50b3RhbCkKICAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0
b3RhbCJfcyksIG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBleGVjLCAqbW9kaWZpZXIudG90YWwp
KTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvclBheW1lbnRE
ZXRhaWxzTW9kaWZpZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZXhlYywgYwogCiBzdGF0aWMg
SlNPYmplY3QqIG9iamVjdEZvclBheW1lbnREZXRhaWxzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFBheW1lbnREZXRhaWxzSW5pdCYgcGF5bWVudERldGFpbHMpCiB7Ci0gICAg
YXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBhdXRv
KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBvYmplY3QtPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlkIl9zKSwganNTdHJpbmcodm0s
IHBheW1lbnREZXRhaWxzLmlkKSk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0b3RhbCJfcyksIG9iamVjdEZvclBheW1lbnRJdGVtKHZtLCBl
eGVjLCBwYXltZW50RGV0YWlscy50b3RhbCkpOwogICAgIGlmIChwYXltZW50RGV0YWlscy5kaXNw
bGF5SXRlbXMpIHsKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZv
ckV2ZW50VGFyZ2V0TGlzdGVuZXJzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGV4ZWMsIEV2ZQog
ICAgICAgICAgICAgaWYgKCFqc0Z1bmN0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBhdXRvKiBwcm9wZXJ0aWVzRm9yTGlzdGVuZXIgPSBKU0M6OmNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAgICAgICAgYXV0byogcHJvcGVydGllc0Zvckxpc3Rl
bmVyID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgICAgICAgICBwcm9wZXJ0aWVz
Rm9yTGlzdGVuZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNh
bGxiYWNrIl9zKSwganNGdW5jdGlvbik7CiAgICAgICAgICAgICBwcm9wZXJ0aWVzRm9yTGlzdGVu
ZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhcHR1cmUiX3Mp
LCBqc0Jvb2xlYW4oZXZlbnRMaXN0ZW5lci0+dXNlQ2FwdHVyZSgpKSk7CiAgICAgICAgICAgICBw
cm9wZXJ0aWVzRm9yTGlzdGVuZXItPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInBhc3NpdmUiX3MpLCBqc0Jvb2xlYW4oZXZlbnRMaXN0ZW5lci0+aXNQYXNzaXZlKCkp
KTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEZvckV2ZW50VGFy
Z2V0TGlzdGVuZXJzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGV4ZWMsIEV2ZQogCiAgICAgICAg
IGlmIChsaXN0ZW5lcnNGb3JFdmVudEluZGV4KSB7CiAgICAgICAgICAgICBpZiAoIWxpc3RlbmVy
cykKLSAgICAgICAgICAgICAgICBsaXN0ZW5lcnMgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOworICAgICAgICAgICAgICAgIGxpc3RlbmVycyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOwogICAgICAgICAgICAgbGlzdGVuZXJzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIGV2ZW50VHlwZSksIGxpc3RlbmVyc0ZvckV2ZW50KTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY3NDBhMzc5NDBiZS4u
ZWJmODE3NGZhZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE0OCw3ICsx
NDgsNiBAQCBjbGFzcyBUeXBlQ29udmVyc2lvbnM7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiBjbGFz
cyBXZWJBbmltYXRpb247CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7Ci1jbGFzcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBXcml0YWJs
ZVN0cmVhbTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NWQwYmM1YjVhN2NkLi5mNmI4NWMyNmFkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjMs
NyArNjMsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTmF0aXZlU3RkRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3RydWN0dXJlSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N5bWJvbC5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N5bnRoZXRpY01vZHVsZVJlY29yZC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNVHJhcHNJbmxpbmVzLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9KYXZhU2NyaXB0RXZhbHVhdGlvblJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9KYXZhU2NyaXB0RXZhbHVhdGlvblJlc3VsdC5jcHAKaW5kZXggM2U2ZDRm
NmVhYmIyLi5lMzZiNTg1YThjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ph
dmFTY3JpcHRFdmFsdWF0aW9uUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9K
YXZhU2NyaXB0RXZhbHVhdGlvblJlc3VsdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVQcm9wZXJ0eUlubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3Bh
cXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9FeHRlbnNpb25zL0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVuc2lv
bldyYXBwZXIuY3BwCmluZGV4IDg1YTI2NTkwNTM0My4uODYzNThhZDI1NzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRXh0ZW5zaW9ucy9CaW5kaW5ncy9KU1dlYkV4dGVu
c2lvbldyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9FeHRlbnNpb25z
L0JpbmRpbmdzL0pTV2ViRXh0ZW5zaW9uV3JhcHBlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVQcm9wZXJ0eUlubGluZXMuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NlbGxJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDbGFzc1JlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IDI0YjJk
MWYzZjAyZi4uM2M3Y2QxYzlhNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjUyMiw3ICsyNTIyLDcgQEAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGpzUmVzdWx0RnJvbVJlcGx5RGVjb2RlcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QKICAgICB9CiAKICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJF
X1RPUF9FWENFUFRJT05fU0NPUEUodm0pOwotICAgIEpTQzo6SlNPYmplY3QqIGpzUmVzdWx0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpOworICAgIEpTQzo6SlNPYmplY3QqIGpzUmVzdWx0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIG51bGxwdHIpOwogCiAgICAg
anNSZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLCAqanNS
ZXBseUFyZ3VtZW50cyk7CkBAIC0yNzczLDcgKzI3NzMsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpz
ZXJpYWxpemVkVHlwZUluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNP
YmplYwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RPUF9FWENFUFRJT05fU0NPUEUodm0pOwogCi0gICAgSlNDOjpKU09iamVjdCogb2Jq
ZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogCiAgICAgZm9yIChhdXRvJiB0eXBlIDogYWxsU2VyaWFsaXplZFR5cGVz
KCkpIHsKQEAgLTI3ODEsNyArMjc4MSw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnNlcmlhbGl6ZWRU
eXBlSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHR5cGUubWVtYmVycy5zaXpl
KCk7IGkrKykgewotICAgICAgICAgICAgSlNDOjpKU09iamVjdCogZW50cnkgPSBKU0M6OmNvbnN0
cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5
cGUoKSk7CisgICAgICAgICAgICBKU0M6OkpTT2JqZWN0KiBlbnRyeSA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KSk7CiAKICAgICAgICAgICAgIGVudHJ5LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJp
bmcodHlwZS5tZW1iZXJzW2ldLnR5cGUpKSk7CkBAIC0yODA4LDExICsyODA4LDExIEBAIEpTVmFs
dWVSZWYgSlNJUEM6OnNlcmlhbGl6ZWRFbnVtSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgdGhpc09iamVjCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVE9QX0VYQ0VQVElPTl9TQ09QRSh2bSk7CiAKLSAgICBKU0M6
OkpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgSlNDOjpKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAKICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9u
IDogYWxsU2VyaWFsaXplZEVudW1zKCkpIHsKLSAgICAgICAgSlNDOjpKU09iamVjdCogZW51bU9i
amVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICAgICAgSlNDOjpKU09iamVjdCogZW51bU9iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKIAogICAgICAgICAvLyBDcmVhdGUgdmFsaWRWYWx1
ZXMgYXJyYXkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKQEAgLTI4MzEsNyArMjgzMSw3IEBA
IEpTVmFsdWVSZWYgSlNJUEM6OnNlcmlhbGl6ZWRFbnVtSW5mbyhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbnVtZXJhdGlvbi52YWx1ZU1hcC5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgYXV0byYgdmFsdWVJbmZvID0gZW51bWVyYXRpb24udmFsdWVNYXBbaV07Ci0gICAgICAgICAg
ICBKU0M6OkpTT2JqZWN0KiB2YWx1ZU9iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICAgICAg
ICAgIEpTQzo6SlNPYmplY3QqIHZhbHVlT2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
KTsKIAogICAgICAgICAgICAgdmFsdWVPYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3MpLCBKU0M6OmpzTnVtYmVyKHZhbHVlSW5mby52
YWx1ZSkpOwpAQCAtMjk2OCw3ICsyOTY4LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjcmVhdGVK
U0FycmF5Rm9yQXJndW1lbnREZXNjcmlwdGlvbnMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2wKIAog
ICAgIGZvciAodW5zaWduZWQgYXJndW1lbnRJbmRleCA9IDA7IGFyZ3VtZW50SW5kZXggPCBhcmd1
bWVudERlc2NyaXB0aW9ucy0+c2l6ZSgpOyArK2FyZ3VtZW50SW5kZXgpIHsKICAgICAgICAgYXV0
byYgZGVzY3JpcHRpb24gPSBhcmd1bWVudERlc2NyaXB0aW9ucy0+YXQoYXJndW1lbnRJbmRleCk7
Ci0gICAgICAgIEpTQzo6SlNPYmplY3QqIGpzRGVzY3JpcHRpb25zID0gSlNDOjpjb25zdHJ1Y3RF
bXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
OworICAgICAgICBKU0M6OkpTT2JqZWN0KiBqc0Rlc2NyaXB0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNURFpWYWx1ZSgpKTsKIAog
ICAgICAgICBhcmd1bWVudHNBcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBhcmd1
bWVudEluZGV4LCBqc0Rlc2NyaXB0aW9ucyk7CkBAIC0yOTk2LDcgKzI5OTYsNyBAQCBKU1ZhbHVl
UmVmIEpTSVBDOjptZXNzYWdlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbgogICAgIH0KIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RPUF9F
WENFUFRJT05fU0NPUEUodm0pOwotICAgIEpTQzo6SlNPYmplY3QqIG1lc3NhZ2VzT2JqZWN0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpOworICAgIEpTQzo6SlNPYmplY3QqIG1lc3NhZ2VzT2JqZWN0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KSk7CiAKICAgICBhdXRvIG5hbWVJZGVudCA9IEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpOwpAQCAtMzAwOCw3ICszMDA4LDcgQEAgSlNWYWx1ZVJl
ZiBKU0lQQzo6bWVzc2FnZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIEpTU3RyaW4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KElQQzo6TWVzc2FnZU5hbWU6Okxhc3QpOyArK2kpIHsKICAgICAgICAgYXV0byBu
YW1lID0gc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4oaSk7CiAKLSAgICAgICAgSlNDOjpK
U09iamVjdCogZGljdGlvbmFyeSA9IEpTQzo6Y29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKKyAgICAgICAgSlNDOjpKU09i
amVjdCogZGljdGlvbmFyeSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKIAogICAgICAgICBkaWN0
aW9uYXJ5LT5wdXREaXJlY3Qodm0sIG5hbWVJZGVudCwgSlNDOjpKU1ZhbHVlKGkpKTsKQEAgLTMx
NDIsNyArMzE0Miw3IEBAIEpTQzo6SlNPYmplY3QqIEpTTWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2Ny
aXB0aW9uRnJvbURlY29kZXIoSlNDOjpKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9UT1BfRVhDRVBUSU9O
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8qIGpzUmVzdWx0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAg
IGF1dG8qIGpzUmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKIAogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBKU0M6OkpTVmFsdWUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zTWFjLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKaW5k
ZXggMjA4YjQxMjk2NjM5Li4wMmEzYTFmZmUwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlCkBAIC0z
MDMsNiArMzAzLDcgQEAgYWRkX2NvbXBpbGVfb3B0aW9ucygKICAgICAiJDwkPE5PVDokPENPTVBJ
TEVfTEFOR1VBR0U6U3dpZnQ+PjotV25vLW9iamMtZHVwbGljYXRlLWNhdGVnb3J5LWRlZmluaXRp
b24+IgogKQogYWRkX2NvbXBpbGVfb3B0aW9ucygiJDwkPE5PVDokPENPTVBJTEVfTEFOR1VBR0U6
U3dpZnQ+PjotV25vLWNhc3QtYWxpZ24+IikKK2FkZF9jb21waWxlX29wdGlvbnMoIiQ8JDxOT1Q6
JDxDT01QSUxFX0xBTkdVQUdFOlN3aWZ0Pj46LVduby11bmRlZmluZWQtaW5saW5lPiIpCiBhZGRf
Y29tcGlsZV9vcHRpb25zKCIkPCQ8Tk9UOiQ8Q09NUElMRV9MQU5HVUFHRTpTd2lmdD4+Oi1Xbm8t
bm9ucG9ydGFibGUtaW5jbHVkZS1wYXRoPiIpCiBhZGRfY29tcGlsZV9vcHRpb25zKCIkPCQ8Tk9U
OiQ8Q09NUElMRV9MQU5HVUFHRTpTd2lmdD4+Oi1Xbm8tdW51c2VkLXBhcmFtZXRlcj4iKQogYWRk
X2NvbXBpbGVfb3B0aW9ucygiJDwkPE5PVDokPENPTVBJTEVfTEFOR1VBR0U6U3dpZnQ+PjotV25v
LW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzPiIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>