<?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>153357</bug_id>
          
          <creation_ts>2016-01-22 09:55:25 -0800</creation_ts>
          <short_desc>REGRESSION(r195452): This change broke the iOS build (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-01-22 10:08:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153266</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1157697</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 09:55:25 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/195452 broke the build:
This change broke the iOS build (Requested by ryanhaddad on #webkit).

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>1157698</commentid>
    <comment_count>1</comment_count>
      <attachid>269576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 09:56:29 -0800</bug_when>
    <thetext>Created attachment 269576
ROLLOUT of r195452

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>1157706</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-22 10:08:06 -0800</bug_when>
    <thetext>Should be fixed in &lt;https://bugs.webkit.org/show_bug.cgi?id=153266&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269576</attachid>
            <date>2016-01-22 09:56:29 -0800</date>
            <delta_ts>2016-01-22 10:07:45 -0800</delta_ts>
            <desc>ROLLOUT of r195452</desc>
            <filename>bug-153357-20160122095602.patch</filename>
            <type>text/plain</type>
            <size>276367</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUyNjFmYmY5MDkxNTkyN2ExMDIxNzkx
MWQ2NjQ1YjU2ZWRhMjdjZGIuLmNjY2Y3ZTRlYmVmYTU0NTNlZDIyYWJiYWIyNTA1NjlmZDhlMGZi
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDEtMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTU0NTIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTMzNTcKKworICAgICAgICBUaGlzIGNoYW5nZSBicm9rZSB0aGUgaU9TIGJ1aWxkIChSZXF1ZXN0
ZWQgYnkgcnlhbmhhZGRhZCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRl
ZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlJlZHVjZSB1c2Ugb2YgZXF1YWxJZ25vcmluZ0Nhc2Ug
dG8ganVzdCBpZ25vcmUgQVNDSUkgY2FzZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzI2NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xOTU0NTIKKwogMjAxNi0wMS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBlcXVhbElnbm9yaW5nQ2FzZSB0byBqdXN0
IGlnbm9yZSBBU0NJSSBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMyMWE0ZDQwMDBiODgyZjZlNmZjY2Fi
OTVkNDU2YTdlYjljZjU4Ni4uZGQ5ZGY1NmNjNGM5N2EzZDIzZmVkZmExYjk0YTljY2FjZWFjZmFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAxLTIyICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTk1NDUyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMzU3CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYnJva2UgdGhlIGlPUyBidWlsZCAo
UmVxdWVzdGVkIGJ5IHJ5YW5oYWRkYWQgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZWR1Y2UgdXNlIG9mIGVxdWFsSWdub3Jp
bmdDYXNlIHRvIGp1c3QgaWdub3JlIEFTQ0lJIGNhc2UiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyNjYKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTk1NDUyCisKIDIwMTYtMDEtMjEgIERhdmUgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgRWxlbWVudHMgd2l0aCBvdmVyZmxvdyBhbmQgYm9yZGVy
LXJhZGl1cyBkb24ndCBzaG93IGluIG11bHRpY29sdW1uIHByb3Blcmx5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAx
MmMxOTYyM2U2NmM5NTA0MGFjODlhMTMyMjM0NWQ3MThkYzEwZWZiLi4xOGYzYzY0N2ZhOTcyZGIw
NmI3N2ZmYzNhZTFlOTc5NDQ4YjNmNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2
LTAxLTIyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk1NDUyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMzU3CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YnJva2UgdGhlIGlPUyBidWlsZCAoUmVxdWVzdGVkIGJ5IHJ5YW5oYWRkYWQgb24KKyAgICAgICAg
I3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZWR1
Y2UgdXNlIG9mIGVxdWFsSWdub3JpbmdDYXNlIHRvIGp1c3QgaWdub3JlIEFTQ0lJIGNhc2UiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyNjYKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTk1NDUyCisKIDIwMTYtMDEt
MjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSB1c2Ug
b2YgZXF1YWxJZ25vcmluZ0Nhc2UgdG8ganVzdCBpZ25vcmUgQVNDSUkgY2FzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDJlM2Y2ZDhjNDE2ODFlNDY5NWEyZTAyMTA0YWJjYmE5Zjg2MGM3MDcuLjc3MjQ2
NzEzNzk4MTFiM2I2MDZlZjM5ZDJjMmVlZWE5YWIzODNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxNi0wMS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NTQ1Mi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzM1NworCisg
ICAgICAgIFRoaXMgY2hhbmdlIGJyb2tlIHRoZSBpT1MgYnVpbGQgKFJlcXVlc3RlZCBieSByeWFu
aGFkZGFkIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNl
dDoKKworICAgICAgICAiUmVkdWNlIHVzZSBvZiBlcXVhbElnbm9yaW5nQ2FzZSB0byBqdXN0IGln
bm9yZSBBU0NJSSBjYXNlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMjY2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzE5NTQ1MgorCiAyMDE2LTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWR1Y2UgdXNlIG9mIGVxdWFsSWdub3JpbmdDYXNlIHRvIGp1c3QgaWdub3JlIEFT
Q0lJIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMWIxM2JiYTljMDNhY2FiMjU2NjUwNWNkYjlmNTYwYjk3
MjFmNWYyLi4zNjg3NWVjMzQ1ODJlMzFiY2U0MTg2ZTJmOTQ0MzJiMTU2Y2QyOWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDEtMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTU0
NTIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMz
NTcKKworICAgICAgICBUaGlzIGNoYW5nZSBicm9rZSB0aGUgaU9TIGJ1aWxkIChSZXF1ZXN0ZWQg
YnkgcnlhbmhhZGRhZCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBj
aGFuZ2VzZXQ6CisKKyAgICAgICAgIlJlZHVjZSB1c2Ugb2YgZXF1YWxJZ25vcmluZ0Nhc2UgdG8g
anVzdCBpZ25vcmUgQVNDSUkgY2FzZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzI2NgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xOTU0NTIKKwogMjAxNi0wMS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBlcXVhbElnbm9yaW5nQ2FzZSB0byBqdXN0IGln
bm9yZSBBU0NJSSBjYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggOGEyZTdhNGY1MWE0NDk0NTY0MGJl
MTgyODZhYWZkMGM1YjYzNTMzOC4uYjc2YzQwYmU5ZjgwYmQ0YjIwODgwMzBmNzQ4MDJiOTZkM2Y2
YThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0FTQ0lJQ1R5cGUuaApAQCAtMTg5LDE4ICsxODksNyBAQCBpbmxpbmUgY2hhciB1
cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFs
KENoYXJhY3RlclR5cGUgaW5wdXRDaGFyYWN0ZXIsIGNoYXIgZXhwZWN0ZWRBU0NJSUxvd2VyY2Fz
ZUxldHRlcikKIHsKLSAgICAvLyBOYW1lIG9mIHRoaXMgYXJndW1lbnQgc2F5cyB0aGlzIG11c3Qg
YmUgYSBsb3dlcmNhc2UgbGV0dGVyLCBidXQgaXQgY2FuIGFjdHVhbGx5IGJlOgotICAgIC8vICAg
LSBhIGxvd2VyY2FzZSBsZXR0ZXIKLSAgICAvLyAgIC0gYSBudW1lcmljIGRpZ2l0Ci0gICAgLy8g
ICAtIGEgc3BhY2UKLSAgICAvLyAgIC0gcHVuY3R1YXRpb24gaW4gdGhlIHJhbmdlIDB4MjEtMHgz
RiwgaW5jbHVkaW5nICItIiwgIi8iLCBhbmQgIisiCi0gICAgLy8gSXQgY2Fubm90IGJlOgotICAg
IC8vICAgLSBhbiB1cHBlcmNhc2UgbGV0dGVyCi0gICAgLy8gICAtIGEgbm9uLUFTQ0lJIGNoYXJh
Y3RlcgotICAgIC8vICAgLSBvdGhlciBwdW5jdHVhdGlvbiwgc3VjaCBhcyB1bmRlcnNjb3JlIGFu
ZCBiYWNrc2xhc2gKLSAgICAvLyAgIC0gYSBjb250cm9sIGNoYXJhY3RlciBzdWNoIGFzICJcbiIK
LSAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBtYWtlIGJvdGggdGhlIGZ1bmN0aW9uIG5h
bWUgYW5kIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIgYXJndW1lbnQgbmFtZSBjbGVhcmVy
LgotICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoZXhwZWN0ZWRBU0NJSUxvd2VyY2Fz
ZUxldHRlcikgPT0gZXhwZWN0ZWRBU0NJSUxvd2VyY2FzZUxldHRlcik7CisgICAgQVNTRVJUKGlz
QVNDSUlMb3dlcihleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKSk7CiAgICAgcmV0dXJuIExJ
S0VMWSh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoaW5wdXRDaGFyYWN0ZXIpID09IGV4cGVjdGVkQVND
SUlMb3dlcmNhc2VMZXR0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3Nl
cnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU2MTNlYTUz
ZTRlZTYzYTQ1MGYyZjhjNTgyZTQxMmRjM2RjOGE3MTEuLmRkZjgwNTRiZTQyM2Q0NmJiNjhhNDFi
Y2Q2NGNiYzQxZDFlYWYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC00ODksNyArNDg5LDcg
QEAgdm9pZCBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdHJpbmcoV1RGTG9nQ2hh
bm5lbCogY2hhbm5lbHNbXSwgc2l6ZV90IGMKICAgICAgICAgICAgIGNvbXBvbmVudCA9IGNvbXBv
bmVudC5zdWJzdHJpbmcoMSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoY29tcG9uZW50LCAiYWxsIikpIHsKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGNvbXBvbmVudCwgImFsbCIpKSB7CiAgICAgICAgICAgICBzZXRTdGF0ZU9m
QWxsQ2hhbm5lbHMoY2hhbm5lbHMsIGNvdW50LCBsb2dDaGFubmVsU3RhdGUpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4
IGEyYmMyOGU1ODNiZTE3OTg5ZDMzMzc3MmVhMzJiOWVmNjg0ZjZkMzIuLjcyMzVlZmFlMzllOWQz
NGJmZWMzZGE2ODk1YTViYjRjMmRmZGQ2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aApAQCAtMjIzLDcgKzIyMyw4IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCiBpbmxpbmUgYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3Ry
aW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
YS5pbXBsKCksIGIuaW1wbCgpKTsgfQogCi10ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3Qg
Y2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwordGVtcGxhdGUgPHVuc2lnbmVkIGNo
YXJhY3RlcnNDb3VudD4KK2lubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyICgmYilbY2hhcmFjdGVyc0NvdW50XSkgeyByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZTxjaGFyYWN0ZXJzQ291bnQ+KGEuaW1wbCgpLCBiKTsg
fQogCiBpbmxpbmUgQXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcoKQogewpAQCAtMzM1LDExICsz
MzYsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxBdG9taWNTdHJpbmc+IHsKICAg
ICB0eXBlZGVmIEF0b21pY1N0cmluZ0hhc2ggSGFzaDsKIH07CiAKLXRlbXBsYXRlPHVuc2lnbmVk
IGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5n
dGhdKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcu
c3RyaW5nKCksIGxvd2VyY2FzZUxldHRlcnMpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
I2lmbmRlZiBBVE9NSUNTVFJJTkdfSElERV9HTE9CQUxTCkBAIC0zNTUsNSArMzUxLDQgQEAgdXNp
bmcgV1RGOjp4bGlua0F0b207CiAjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+Ci0KICNlbmRpZiAvLyBBdG9taWNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29tbW9uLmgKaW5kZXggMDlmNGUzNDlhOTg4Yjg1OGU4NDY4MTg2NTI0Yjk5N2QwZjc0ZTlj
Yi4uNzNlMGViYjMyMzdhY2MyMGMxZTJmNTJmOWFkM2UyZjU1NDQ5YTdhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zMSw5ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VM
ZXR0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3Ms
IHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bihjb25zdCBTdHJpbmdDbGFzcyYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5n
dGhdKTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSBUIGxvYWRVbmFsaWduZWQoY29u
c3QgY2hhciogcykKIHsKQEAgLTU0OCw0MiArNTQ1LDYgQEAgc2l6ZV90IGZpbmRDb21tb24oY29u
c3QgU3RyaW5nQ2xhc3MmIGhheXN0YWNrLCBjb25zdCBTdHJpbmdDbGFzcyYgbmVlZGxlLCB1bnNp
Z24KICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMxNigpICsgc3RhcnQs
IG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3RhcnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3Ro
KTsKIH0KIAotLy8gVGhpcyBpcyBtYXJrZWQgaW5saW5lIHNpbmNlIGl0J3MgbW9zdGx5IHVzZWQg
aW4gbm9uLWlubGluZSBmdW5jdGlvbnMgZm9yIGVhY2ggc3RyaW5nIHR5cGUuCi0vLyBXaGVuIHVz
ZWQgZGlyZWN0bHkgaW4gY29kZSBpdCdzIHByb2JhYmx5IE9LIHRvIGJlIGlubGluZTsgbWF5YmUg
dGhlIGxvb3Agd2lsbCBiZSB1bnJvbGxlZC4KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbaV0s
IGxvd2VyY2FzZUxldHRlcnNbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IG5vdCBtYXJr
ZWQgaW5saW5lIGJlY2F1c2UgaXQncyB1c2VkIG9mdGVuIGFuZCBpcyBub3Qgc3BlZWQtY3JpdGlj
YWwgZW5vdWdoIHRvIHdhbnQgaXQgaW5saW5lZCBldmVyeXdoZXJlLgotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nQ2xhc3M+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb25X
aXRob3V0TGVuZ3RoKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIGNvbnN0IGNoYXIqIGxvd2Vy
Y2FzZUxldHRlcnMpCi17Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIEFTU0VSVCgqbG93ZXJj
YXNlTGV0dGVycyk7Ci0gICAgZm9yIChjb25zdCBjaGFyKiBsZXR0ZXIgPSBsb3dlcmNhc2VMZXR0
ZXJzOyAqbGV0dGVyOyArK2xldHRlcikKLSAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlclVuY2hl
Y2tlZCgqbGV0dGVyKSA9PSAqbGV0dGVyKTsKLSNlbmRpZgotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAobGVuZ3RoICE9IHN0cmxlbihsb3dlcmNhc2VMZXR0
ZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgbG93ZXJjYXNlTGV0dGVycywgbGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsb3dlcmNhc2VMZXR0
ZXJzLCBsZW5ndGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcywgdW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bihjb25zdCBTdHJpbmdDbGFzcyYgc3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVy
cylbbGVuZ3RoXSkKLXsKLSAgICAvLyBEb24ndCBhY3R1YWxseSB1c2UgdGhlIGxlbmd0aDsgd2Ug
YXJlIGNob29zaW5nIGNvZGUgc2l6ZSBvdmVyIHNwZWVkLgotICAgIGNvbnN0IGNoYXIqIHBvaW50
ZXIgPSBsb3dlcmNhc2VMZXR0ZXJzOwotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZUNvbW1vbldpdGhvdXRMZW5ndGgoc3RyaW5nLCBwb2ludGVyKTsKLX0KLQotfQotCi11
c2luZyBXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlOwotCiAjZW5kaWYgLy8gU3Ry
aW5nQ29tbW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggNjNlNjMwYmFmN2I4NjY4
NDFjNzE0NjU0ZTJjZTdhYWVlMmZlMTZlNC4uNDI0MjQ3MzU1ZDBjZjRhODRjZjNhMTJjNGNjYjZj
N2EzNDgwNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTk2OCw5ICs5NjgsNiBA
QCBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3Qg
Y2hhciAoJmIpW2NoYXJhY3RlcnNDb3VudAogICAgIHJldHVybiBhID8gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSgqYSwgYiwgY2hhcmFjdGVyc0NvdW50IC0gMSkgOiBmYWxzZTsKIH0KIAotdGVtcGxh
dGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ0ltcGwmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7
Ci10ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVts
ZW5ndGhdKTsKLQogaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgaW5kZXggPSAwKQogewogICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewpAQCAt
MTE4NiwxNiArMTE4Myw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFJlZlB0cjxT
dHJpbmdJbXBsPj4gewogICAgIHR5cGVkZWYgU3RyaW5nSGFzaCBIYXNoOwogfTsKIAotdGVtcGxh
dGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0
ZXJzKVtsZW5ndGhdKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZUNvbW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOwotfQotCi10ZW1wbGF0ZTx1bnNpZ25l
ZCBsZW5ndGg+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwqIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0
aF0pCi17Ci0gICAgcmV0dXJuIHN0cmluZyAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSgqc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYWZm
NGM5NjFhNGRkZjE5ZWZjYjFlN2MxNmUwY2ZkMmNhMDFmZWMwNi4uZmI3MmJiNjhkZDZhN2ZjNzZk
ODc5NDY2NWJjNzhlY2UzYTU0NjlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTE3
MCw4ICsxNzAsNiBAQCBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBhLCBj
b25zdCBjaGFyICgmYilbY2hhcmFjdGVyc0NvdW50XSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhLCBiLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKIH0KIAotdGVtcGxhdGU8dW5z
aWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKLQogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gZXF1YWwo
YSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBjb25zdCBMQ2hh
ciogYikgeyByZXR1cm4gZXF1YWwoYSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oU3Ry
aW5nVmlldyBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCBiKTsgfQpAQCAtNzA2
LDExICs3MDQsNiBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6OmVuZCgpIGNv
bnN0IC0+IEl0ZXJhdG9yCiAgICAgcmV0dXJuIEl0ZXJhdG9yKG1fc3RyaW5nVmlldywgbV9zdHJp
bmdWaWV3Lmxlbmd0aCgpKTsKIH0KIAotdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUg
Ym9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZywgY29u
c3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pCi17Ci0gICAgcmV0dXJuIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKHN0cmluZywgbG93ZXJjYXNlTGV0dGVycyk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IGUyMzc2Y2EyNjY4MGFkMGJmYmZkODQ1YzljZWEzNjA0ZWZkZWNi
ZTkuLmRmM2M4ZjI1NWYxOGYwOWViNmQzMTRlZmRkMTRkMDFkMTU5NGY3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtNDkyLDggKzQ5MiwxMCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
YikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSwgYi5pbXBsKCkpOyB9Ci10ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPGNo
YXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChi
LmltcGwoKSwgYS5kYXRhKCksIGEuc2l6ZSgpKTsgfQotdGVtcGxhdGU8c2l6ZV90IGlubGluZUNh
cGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVj
dG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4gYiA9PSBhOyB9Cit0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZl
Y3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4g
ZXF1YWwoYi5pbXBsKCksIGEuZGF0YSgpLCBhLnNpemUoKSk7IH0KK3RlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBj
b25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiID09IGE7IH0K
IAogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5n
JiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQpAQCAtNTAxLDggKzUw
MywxMCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENo
YXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYSwg
Yi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEsIGNvbnN0
IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihhKSwgYi5pbXBsKCkpOyB9Ci10ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwg
Y29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLXRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQor
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBp
bmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQogCiBpbmxpbmUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UoYS5pbXBsKCksIGIpOyB9CkBAIC01MTAsMTUgKzUxNCwxOSBAQCBp
bmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIq
IGIpIHsgcmV0dXJuIGVxdWFsSWdubwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29u
c3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uo
YSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFy
KiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSwgYi5pbXBsKCkpOyB9CiAKLWJvb2wgZXF1YWxQb3Nz
aWJseUlnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sIGlnbm9y
ZUNhc2UpOwotCiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEu
aW1wbCgpLCBiLmltcGwoKSk7IH0KLXRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4g
aW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IGNoYXIgKCZiKVtjaGFyYWN0ZXJzQ291bnRdKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlPGNoYXJhY3RlcnNDb3VudD4oYS5pbXBsKCksIGIpOyB9Cit0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJzQ291bnQ+CitpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgY2hhciAoJmIpW2NoYXJhY3RlcnNDb3VudF0pIHsgcmV0dXJuIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2U8Y2hhcmFjdGVyc0NvdW50PihhLmltcGwoKSwgYik7IH0KIAot
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhd
KTsKK2lubGluZSBib29sIGVxdWFsUG9zc2libHlJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIsIGJvb2wgaWdub3JlQ2FzZSkgCit7CisgICAgcmV0dXJuIGlnbm9y
ZUNhc2UgPyBlcXVhbElnbm9yaW5nQ2FzZShhLCBiKSA6IChhID09IGIpOworfQogCiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQot
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5n
TnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3Ry
aW5nJiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nTnVsbGl0eShhLCBiLmltcGwoKSk7IH0KKwor
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgoraW5saW5lIGJvb2wgZXF1YWxJZ25vcmlu
Z051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYSwgYi5pbXBsKCkpOyB9CiAK
IGlubGluZSBib29sIG9wZXJhdG9yIShjb25zdCBTdHJpbmcmIHN0cikgeyByZXR1cm4gc3RyLmlz
TnVsbCgpOyB9CiAKQEAgLTY2OCwxMSArNjc2LDYgQEAgaW5saW5lIGJvb2wgU3RyaW5nOjppc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3QKICAgICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxD
aGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3RlciwgVUNoYXI+KGNoYXJhY3RlcnMxNigpLCBsZW4p
OwogfQogCi1pbmxpbmUgYm9vbCBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiLCBib29sIGlnbm9yZUNhc2UpCi17Ci0gICAgcmV0dXJuIGln
bm9yZUNhc2UgPyBlcXVhbElnbm9yaW5nQ2FzZShhLCBiKSA6IChhID09IGIpOwotfQotCiAvLyBT
dHJpbmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmluZwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
U3RyaW5nPiB7CkBAIC03MTIsMTEgKzcxNSw2IEBAIHByaXZhdGU6CiAvLyBTaGFyZWQgZ2xvYmFs
IGVtcHR5IHN0cmluZy4KIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBjb25zdCBTdHJpbmcmIGVtcHR5
U3RyaW5nKCk7CiAKLXRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIg
KCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsKLX0KLQog
fQogCiB1c2luZyBXVEY6OkNTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggMDMz
MjE1NjM1ZWM5MzBiZTllNDU3MmJmZGRjYTQ3OTIwYjE5YTUzNS4uOGEzNmYzYjFhZGM2ZWQ1ODQ4
M2ZhODUwYWJkYTQ1MzM1Mjg2MDA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICBpZiAo
IWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53M2MuY2xlYXJr
ZXkiKSkKKyAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgIm9yZy53M2MuY2xl
YXJrZXkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gVGhlIE1lZGlhUGxheWVy
IG11c3QgYWxzbyBzdXBwb3J0IHRoZSBrZXkgc3lzdGVtOgpAQCAtNDcsNyArNDcsNyBAQCBib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCiAKIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1p
bWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ewotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3Jn
LnczYy5jbGVhcmtleSIpKQorICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAi
b3JnLnczYy5jbGVhcmtleSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBUaGUg
TWVkaWFQbGF5ZXIgbXVzdCBhbHNvIHN1cHBvcnQgdGhlIGtleSBzeXN0ZW06CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25D
bGVhcktleS5jcHAKaW5kZXggZGFmODQ0MTk4YWViNTY2MDAyMzI0YWZmOTQ5NDcxMmJhYjY1Njlm
YS4uNTg5YWNkMjI2OTU0MWZhNTY2NTIyNTBmNDYwY2EzN2IyYjdiODQ4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uQ2xlYXJLZXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lv
bkNsZWFyS2V5LmNwcApAQCAtMTM3LDEzICsxMzcsMTMgQEAgYm9vbCBDRE1TZXNzaW9uQ2xlYXJL
ZXk6OnVwZGF0ZShVaW50OEFycmF5KiByYXdLZXlzRGF0YSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBu
ZXgKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgU3RyaW5nIGFsZ29yaXRobTsKLSAgICAg
ICAgICAgIGlmICgha2V5RGljdGlvbmFyeS5nZXQoImFsZyIsIGFsZ29yaXRobSkgfHwgIWVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFsZ29yaXRobSwgImExMjhrdyIpKSB7CisgICAgICAg
ICAgICBpZiAoIWtleURpY3Rpb25hcnkuZ2V0KCJhbGciLCBhbGdvcml0aG0pIHx8ICFlcXVhbEln
bm9yaW5nQ2FzZShhbGdvcml0aG0sICJhMTI4a3ciKSkgewogICAgICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkNETVNlc3Npb25DbGVhcktleTo6dXBkYXRlKCVwKSAtIGZhaWxlZDogYWxnb3JpdGht
IHVuc3VwcG9ydGVkIiwgdGhpcyk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIFN0cmluZyBrZXlUeXBlOwotICAgICAgICAgICAgaWYgKCFr
ZXlEaWN0aW9uYXJ5LmdldCgia3R5Iiwga2V5VHlwZSkgfHwgIWVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleVR5cGUsICJvY3QiKSkgeworICAgICAgICAgICAgaWYgKCFrZXlEaWN0aW9u
YXJ5LmdldCgia3R5Iiwga2V5VHlwZSkgfHwgIWVxdWFsSWdub3JpbmdDYXNlKGtleVR5cGUsICJv
Y3QiKSkgewogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25DbGVhcktleTo6
dXBkYXRlKCVwKSAtIGZhaWxlZDoga2V5VHlwZSB1bnN1cHBvcnRlZCIsIHRoaXMpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApp
bmRleCA5YTY4NjUwZjA2Njc0OTM2NGU3ZTBkZjZlNzg3NmQwYTIyYjUyNzAyLi5iZjZhNzBhNTdk
MWNmYTAwMTZmYzA3ZTQ3OWVjMTc2Y2JmZjRkMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApA
QCAtNTAsMTMgKzUwLDEzIEBAIFBhc3NSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50CiAKIGJvb2wgWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50OjpzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBl
LCAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQotICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2Z1dHVyZXNwbGFzaCIp
OworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gt
c2hvY2t3YXZlLWZsYXNoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUs
ICJhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2giKTsKIH0KIAogYm9vbCBZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnN1cHBvcnRzRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikK
IHsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAi
c3BsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAic3dmIik7
CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGV4dGVuc2lvbiwgInNwbCIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGV4dGVuc2lvbiwgInN3ZiIpOwogfQogCiBZb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQ6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2lu
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCmluZGV4IDNlZDJlYjY1OGFhN2YyOTlhYTU5
OWY5YWMwYzE5YWRlOTU3MmE0ODAuLmM1Zjk5ZTE1N2MzZjY0ZTBhNDA5MTE3NzBlYTM2NTY3ZGFh
YzhmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VBdXRob3JpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBpbnQgRGF0YWJh
c2VBdXRob3JpemVyOjpjcmVhdGVWVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0
IFN0cmluZyYgbW9kdQogICAgICAgICByZXR1cm4gU1FMQXV0aERlbnk7CiAKICAgICAvLyBBbGxv
dyBvbmx5IHRoZSBGVFMzIGV4dGVuc2lvbgotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobW9kdWxlTmFtZSwgImZ0czMiKSkKKyAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNl
KG1vZHVsZU5hbWUsICJmdHMzIikpCiAgICAgICAgIHJldHVybiBTUUxBdXRoRGVueTsKIAogICAg
IG1fbGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSA9IHRydWU7CkBAIC0zMDIsNyArMzAyLDcgQEAg
aW50IERhdGFiYXNlQXV0aG9yaXplcjo6ZHJvcFZUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBtb2R1bGUKICAgICAgICAgcmV0dXJuIFNRTEF1dGhEZW55OwogCiAg
ICAgLy8gQWxsb3cgb25seSB0aGUgRlRTMyBleHRlbnNpb24KLSAgICBpZiAoIWVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1vZHVsZU5hbWUsICJmdHMzIikpCisgICAgaWYgKCFlcXVhbEln
bm9yaW5nQ2FzZShtb2R1bGVOYW1lLCAiZnRzMyIpKQogICAgICAgICByZXR1cm4gU1FMQXV0aERl
bnk7CiAKICAgICByZXR1cm4gdXBkYXRlRGVsZXRlc0Jhc2VkT25UYWJsZU5hbWUodGFibGVOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZjE5ZGU5NGQ2ODMxOTkyYWE0NTg4OTk0MWFmYzExNjJi
NGJiNjY1MS4uY2U1MWU2OTBjZWZjZDJlYmZmNTg4YTI3NjhmMThiNWE4ZmMxYjlhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTQ3MCwzNCArNDcwLDM0IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBl
CiAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgewogICAgICAgICBzaXplX3QgY29uc3VtZWRMZW5n
dGggPSBwYXJzZUhUVFBIZWFkZXIocCwgZW5kIC0gcCwgbV9mYWlsdXJlUmVhc29uLCBuYW1lLCB2
YWx1ZSk7CiAgICAgICAgIGlmICghY29uc3VtZWRMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBwICs9IGNvbnN1bWVkTGVu
Z3RoOwogCiAgICAgICAgIC8vIFN0b3Agb25jZSB3ZSBjb25zdW1lZCBhbiBlbXB0eSBsaW5lLgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgInNlYy13ZWJzb2NrZXQt
ZXh0ZW5zaW9ucyIpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSgic2VjLXdlYnNv
Y2tldC1leHRlbnNpb25zIiwgbmFtZSkpIHsKICAgICAgICAgICAgIGlmIChzYXdTZWNXZWJTb2Nr
ZXRFeHRlbnNpb25zSGVhZGVyRmllbGQpIHsKICAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFz
b24gPSAiVGhlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgTVVTVCBOT1QgYXBwZWFy
IG1vcmUgdGhhbiBvbmNlIGluIGFuIEhUVFAgcmVzcG9uc2UiOwotICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKCFtX2V4dGVuc2lvbkRpc3BhdGNoZXIucHJvY2Vzc0hlYWRlclZhbHVl
KHZhbHVlKSkgewogICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1fZXh0ZW5zaW9u
RGlzcGF0Y2hlci5mYWlsdXJlUmVhc29uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmllbGQgPSB0cnVlOwotICAgICAgICB9
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJzZWMtd2Vic29j
a2V0LWFjY2VwdCIpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoIlNl
Yy1XZWJTb2NrZXQtQWNjZXB0IiwgbmFtZSkpIHsKICAgICAgICAgICAgIGlmIChzYXdTZWNXZWJT
b2NrZXRBY2NlcHRIZWFkZXJGaWVsZCkgewogICAgICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9ICJUaGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyIE1VU1QgTk9UIGFwcGVhciBtb3Jl
IHRoYW4gb25jZSBpbiBhbiBIVFRQIHJlc3BvbnNlIjsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fc2VydmVySGFuZHNoYWtlUmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKG5hbWUs
IHZhbHVlKTsKICAgICAgICAgICAgIHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0g
dHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCAic2VjLXdlYnNvY2tldC1wcm90b2NvbCIpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2wiLCBuYW1lKSkgewogICAgICAg
ICAgICAgaWYgKHNhd1NlY1dlYlNvY2tldFByb3RvY29sSGVhZGVyRmllbGQpIHsKICAgICAgICAg
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiVGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVh
ZGVyIE1VU1QgTk9UIGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiBIVFRQIHJlc3BvbnNlIjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fc2VydmVySGFuZHNoYWtlUmVzcG9uc2Uu
YWRkSFRUUEhlYWRlckZpZWxkKG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgIHNhd1NlY1dlYlNv
Y2tldFByb3RvY29sSGVhZGVyRmllbGQgPSB0cnVlOwpAQCAtNTI3LDExICs1MjcsMTEgQEAgYm9v
bCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc2VydmVyVXBncmFkZSwgIndlYnNvY2tldCIpKSB7CisgICAgaWYgKCFlcXVhbElnbm9yaW5n
Q2FzZShzZXJ2ZXJVcGdyYWRlLCAid2Vic29ja2V0IikpIHsKICAgICAgICAgbV9mYWlsdXJlUmVh
c29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnVXBncmFkZScgaGVhZGVy
IHZhbHVlIGlzIG5vdCAnV2ViU29ja2V0JyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzZXJ2ZXJDb25uZWN0aW9u
LCAidXBncmFkZSIpKSB7CisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShzZXJ2ZXJDb25uZWN0
aW9uLCAidXBncmFkZSIpKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJp
bmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ0Nvbm5lY3Rpb24nIGhlYWRlciB2YWx1ZSBpcyBub3Qg
J1VwZ3JhZGUnIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDhjZWRkNDNmNTY4M2U4
Mjk0OGI1NTllNmNlYzk3Mjg0ODY4ODgxYWQuLjhhZmM4YTZiZjdlNTEyNDRlNGNhMjMzMjhjODcx
N2RmZGJjOGYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZmluZEFy
aWFNb2RhbE5vZGVzKCkKICAgICAgICAgLy8gTXVzdCBoYXZlIGRpYWxvZyBvciBhbGVydGRpYWxv
ZyByb2xlCiAgICAgICAgIGlmICghbm9kZUhhc1JvbGUoZWxlbWVudCwgImRpYWxvZyIpICYmICFu
b2RlSGFzUm9sZShlbGVtZW50LCAiYWxlcnRkaWFsb2ciKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQtPmZh
c3RHZXRBdHRyaWJ1dGUoYXJpYV9tb2RhbEF0dHIpLCAidHJ1ZSIpKQorICAgICAgICBpZiAoIWVx
dWFsSWdub3JpbmdDYXNlKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXJpYV9tb2RhbEF0dHIp
LCAidHJ1ZSIpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBtX2Fy
aWFNb2RhbE5vZGVzU2V0LmFkZChlbGVtZW50KTsKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZU1lbnVJdGVtU2VsZWN0ZWQoTm9kZSogbm9kZSkKICAgICBpZiAo
IW5vZGVIYXNSb2xlKG5vZGUsICJtZW51aXRlbSIpICYmICFub2RlSGFzUm9sZShub2RlLCAibWVu
dWl0ZW1yYWRpbyIpICYmICFub2RlSGFzUm9sZShub2RlLCAibWVudWl0ZW1jaGVja2JveCIpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKCFkb3duY2FzdDxFbGVtZW50Pigqbm9kZSku
Zm9jdXNlZCgpICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxFbGVt
ZW50Pigqbm9kZSkuZmFzdEdldEF0dHJpYnV0ZShhcmlhX3NlbGVjdGVkQXR0ciksICJ0cnVlIikp
CisgICAgaWYgKCFkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZm9jdXNlZCgpICYmICFlcXVhbEln
bm9yaW5nQ2FzZShkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZmFzdEdldEF0dHJpYnV0ZShhcmlh
X3NlbGVjdGVkQXR0ciksICJ0cnVlIikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBwb3N0
Tm90aWZpY2F0aW9uKGdldE9yQ3JlYXRlKG5vZGUpLCAmZG9jdW1lbnQoKSwgQVhNZW51TGlzdEl0
ZW1TZWxlY3RlZCk7CkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFyaWFNb2RhbENoYW5nZShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgc3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmZhc3RHZXRB
dHRyaWJ1dGUoYXJpYV9tb2RhbEF0dHIpLCAidHJ1ZSIpKSB7CisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5mYXN0R2V0QXR0cmlidXRlKGFyaWFfbW9k
YWxBdHRyKSwgInRydWUiKSkgewogICAgICAgICAvLyBBZGQgdGhlIG5ld2x5IG1vZGlmaWVkIG5v
ZGUgdG8gdGhlIG1vZGFsIG5vZGVzIHNldCwgYW5kIHNldCBpdCB0byBiZSB0aGUgY3VycmVudCB2
YWxpZCBhcmlhIG1vZGFsIG5vZGUuCiAgICAgICAgIC8vIFdlIHdpbGwgcmVjb21wdXRlIHRoZSBj
dXJyZW50IHZhbGlkIGFyaWEgbW9kYWwgbm9kZSBpbiBhcmlhTW9kYWxOb2RlKCkgd2hlbiB0aGlz
IG5vZGUgaXMgbm90IHZpc2libGUuCiAgICAgICAgIG1fYXJpYU1vZGFsTm9kZXNTZXQuYWRkKG5v
ZGUpOwpAQCAtMTg1NCwxMCArMTg1NCwxMCBAQCBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUq
IG5vZGUpCiAgICAgZm9yIChOb2RlKiB0ZXN0Tm9kZSA9IG5vZGU7IHRlc3ROb2RlOyB0ZXN0Tm9k
ZSA9IHRlc3ROb2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0
ZXN0Tm9kZSkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUhpZGRlblZh
bHVlID0gZG93bmNhc3Q8RWxlbWVudD4oKnRlc3ROb2RlKS5mYXN0R2V0QXR0cmlidXRlKGFyaWFf
aGlkZGVuQXR0cik7Ci0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoYXJpYUhpZGRlblZhbHVlLCAidHJ1ZSIpKQorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFyaWFIaWRkZW5WYWx1ZSwgInRydWUiKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGJvb2wgYXJpYUhpZGRlbkZhbHNlID0g
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYUhpZGRlblZhbHVlLCAiZmFsc2UiKTsK
KyAgICAgICAgICAgIGJvb2wgYXJpYUhpZGRlbkZhbHNlID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXJp
YUhpZGRlblZhbHVlLCAiZmFsc2UiKTsKICAgICAgICAgICAgIGlmICghdGVzdE5vZGUtPnJlbmRl
cmVyKCkgJiYgIWFyaWFIaWRkZW5GYWxzZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBpZiAoIWFyaWFIaWRkZW5GYWxzZVByZXNlbnQgJiYgYXJpYUhpZGRlbkZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCA5Y2I1YTc0YWIxMDQyMzVhMTU0Yzk4OGNm
ZWNhZTM4ZTRiMTdlMmYxLi5lYTM5ZWI1ODJiODgwM2QzNDdkMzQwODg2NWI5ZDRhY2NlMTM4Yjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBjb25zdAogICAgIGlmIChpczxIVE1MT3B0
R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKGFyaWFf
ZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0
cmlidXRlKGFyaWFfZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKG1fb3B0aW9uRWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0
dHIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAzNzdlMGI0ZmJiMTRjMWJmNmZjMWZhZDAxYWRiMDI1
ODUxZTk2YWViLi43NTlhZWMxNWNjMWQ1NTAzZTg2NDcxMjgzYjVmNGI4MGE5M2Q0N2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtMzA4LDEwICszMDgsMTMgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAg
ICAgICAgIHJldHVybiBJZ25vcmVkUm9sZTsKICAgICAgICAgaWYgKGlucHV0LmlzU2VhcmNoRmll
bGQoKSkKICAgICAgICAgICAgIHJldHVybiBTZWFyY2hGaWVsZFJvbGU7CisgICAgICAgIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgICAgICBpZiAoaW5wdXQuaXNDb2xvckNvbnRy
b2woKSkKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlID0gaW5wdXQuZ2V0QXR0cmli
dXRlKHR5cGVBdHRyKTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJjb2xv
ciIpKQogICAgICAgICAgICAgcmV0dXJuIENvbG9yV2VsbFJvbGU7CiAjZW5kaWYKKwogICAgICAg
ICByZXR1cm4gVGV4dEZpZWxkUm9sZTsKICAgICB9CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFt
ZShzZWxlY3RUYWcpKSB7CkBAIC02NDcsOSArNjUwLDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNFbmFibGVkKCkgY29uc3QKICAgICAvLyBBUklBIHNheXMgdGhhdCB0aGUgZGlz
YWJsZWQgc3RhdHVzIGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgYWxsIGRlc2Nl
bmRhbnQgZWxlbWVudHMuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBj
b25zdF9jYXN0PEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Kj4odGhpcyk7IG9iamVjdDsgb2JqZWN0
ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGRpc2FibGVkU3RhdHVzID0gb2JqZWN0LT5nZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIp
OwotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlzYWJsZWRTdGF0
dXMsICJ0cnVlIikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXNhYmxlZFN0YXR1
cywgInRydWUiKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpc2FibGVkU3RhdHVzLCAiZmFsc2UiKSkKKyAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpc2FibGVkU3RhdHVzLCAiZmFsc2UiKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAgLTY4MSw3ICs2ODQsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQoKSBjb25zdAogICAgIC8vIElmIHRoaXMgaXMg
YW4gQVJJQSBidXR0b24sIGNoZWNrIHRoZSBhcmlhLXByZXNzZWQgYXR0cmlidXRlIHJhdGhlciB0
aGFuIG5vZGUoKS0+YWN0aXZlKCkKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFy
aWFSb2xlQXR0cmlidXRlKCk7CiAgICAgaWYgKGFyaWFSb2xlID09IEJ1dHRvblJvbGUgfHwgYXJp
YVJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9sZSkgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpLCAidHJ1ZSIpKQor
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0
dHIpLCAidHJ1ZSIpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC03MTYsNyArNzE5LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNDaGVja2VkKCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IGlmICh2YWxpZFJvbGUgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmli
dXRlKGFyaWFfY2hlY2tlZEF0dHIpLCAidHJ1ZSIpKQorICAgIGlmICh2YWxpZFJvbGUgJiYgZXF1
YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfY2hlY2tlZEF0dHIpLCAidHJ1ZSIpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTczMSw5ICs3MzQs
OSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0hvdmVyZWQoKSBjb25zdAogYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdAogewog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYU11bHRpU2VsZWN0YWJsZSA9IGdldEF0dHJpYnV0
ZShhcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShhcmlhTXVsdGlTZWxlY3RhYmxlLCAidHJ1ZSIpKQorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShhcmlhTXVsdGlTZWxlY3RhYmxlLCAidHJ1ZSIpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU11bHRpU2Vs
ZWN0YWJsZSwgImZhbHNlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFNdWx0aVNl
bGVjdGFibGUsICJmYWxzZSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0
dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSAmJiBkb3duY2FzdDxI
VE1MU2VsZWN0RWxlbWVudD4oKm5vZGUoKSkubXVsdGlwbGUoKTsKQEAgLTc2MSw5ICs3NjQsOSBA
QCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1JlcXVpcmVkKCkgY29uc3QKIHsKICAg
ICAvLyBFeHBsaWNpdCBhcmlhLXJlcXVpcmVkIHZhbHVlcyBzaG91bGQgdHJ1bXAgbmF0aXZlIHJl
cXVpcmVkIGF0dHJpYnV0ZXMuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXF1aXJlZFZhbHVl
ID0gZ2V0QXR0cmlidXRlKGFyaWFfcmVxdWlyZWRBdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmVxdWlyZWRWYWx1ZSwgInRydWUiKSkKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVxdWlyZWRWYWx1ZSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVpcmVkVmFsdWUsICJm
YWxzZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXF1aXJlZFZhbHVlLCAiZmFsc2Ui
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTm9kZSogbiA9IHRoaXMtPm5vZGUoKTsK
QEAgLTE2MzcsNyArMTY0MCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUFjY2Vzc2liaWxpdHlP
YmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2NlCiAgICAgICAgICYm
ICFvYmotPmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2Jq
LT5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2Uob2JqLT5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIElmIHNvbWV0aGluZyBkb2Vzbid0
IGV4cG9zZSBhbnkgY2hpbGRyZW4sIHRoZW4gd2UgY2FuIGFsd2F5cyB0YWtlIHRoZSBpbm5lciB0
ZXh0IGNvbnRlbnQuCkBAIC0xODUyLDcgKzE4NTUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0CiAgICAgICAg
IHJldHVybjsKIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUoKSk7Ci0gICAgaWYgKCFpbnB1dC5pc0NvbG9yQ29udHJvbCgpKQor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSA9IGlucHV0LmdldEF0dHJpYnV0ZSh0eXBlQXR0
cik7CisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAiY29sb3IiKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gSFRNTElucHV0RWxlbWVudDo6dmFsdWUgYWx3YXlzIHJldHVybnMg
YSBzdHJpbmcgcGFyc2VhYmxlIGJ5IENvbG9yKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA2NWYzODExYjZmMTc4
NzExNzM1MGZjMDQ1NjIyNzFjZGE1ODQ2NTliLi4xNTY2NzMyM2VmZTk4MmNlMmFjMjk5NzBlMWM0
OWJjZTk5ZDYzMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE1NDYsNyArMTU0Niw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6Y29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNFbmFibGVkKEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBCb3RoICJ0cnVl
IiAoY2FzZS1pbnNlbnNpdGl2ZSkgYW5kIHRoZSBlbXB0eSBzdHJpbmcgY291bnQgYXMgdHJ1ZS4K
LSAgICByZXR1cm4gY29udGVudEVkaXRhYmxlVmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGNvbnRlbnRFZGl0YWJsZVZhbHVlLCAidHJ1ZSIpOworICAgIHJl
dHVybiBjb250ZW50RWRpdGFibGVWYWx1ZS5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
Y29udGVudEVkaXRhYmxlVmFsdWUsICJ0cnVlIik7CiB9CiAgICAgCiAjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKQpAQCAtMTgzNSw3ICsxODM1LDcgQEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhSXNNdWx0aWxpbmUoKSBjb25zdAogewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9tdWx0aWxpbmVBdHRyKSwgInRydWUiKTsKKyAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfbXVsdGlsaW5lQXR0
ciksICJ0cnVlIik7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnZhbGlkU3Rh
dHVzKCkgY29uc3QKQEAgLTIyNDYsNyArMjI0Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6c3VwcG9ydHNBUklBQXR0cmlidXRlcygpIGNvbnN0CiAgICAgCiBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQoY29uc3QgQXRvbWljU3RyaW5nJiBs
aXZlUmVnaW9uU3RhdHVzKQogewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShsaXZlUmVnaW9uU3RhdHVzLCAicG9saXRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobGl2ZVJlZ2lvblN0YXR1cywgImFzc2VydGl2ZSIpOworICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShsaXZlUmVnaW9uU3RhdHVzLCAicG9saXRlIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobGl2ZVJlZ2lvblN0YXR1cywgImFzc2VydGl2ZSIpOwogfQogICAgIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkgY29uc3QKQEAgLTIyOTks
MTEgKzIyOTksMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6
Zm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0CiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNvcnRBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9zb3J0QXR0cik7Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNvcnRBdHRyaWJ1dGUsICJhc2Nl
bmRpbmciKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc29ydEF0dHJpYnV0ZSwgImFzY2Vu
ZGluZyIpKQogICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbkFzY2VuZGluZzsKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc29ydEF0dHJpYnV0ZSwgImRlc2NlbmRpbmci
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc29ydEF0dHJpYnV0ZSwgImRlc2NlbmRpbmci
KSkKICAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nOwotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRlLCAib3RoZXIiKSkKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc29ydEF0dHJpYnV0ZSwgIm90aGVyIikpCiAgICAgICAgIHJl
dHVybiBTb3J0RGlyZWN0aW9uT3RoZXI7CiAgICAgCiAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb25O
b25lOwpAQCAtMjM1OCwxNCArMjM1OCwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNs
YXNzTGlzdChWZWN0b3I8U3RyaW5nPiYgY2xhc3NMaXN0KSBjb25zdAogYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFQcmVzc2VkKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGV4cGFuZGVkID0gZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpOwotICAg
IHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgInRydWUiKSB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgImZhbHNlIik7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVkIHZhbHVl
cyBzaG91bGQgbm90IHJlc3VsdCBpbiB0aGlzIGF0dHJpYnV0ZSBiZWluZyBleHBvc2VkIHRvIEFU
cyBhY2NvcmRpbmcgdG8gQVJJQS4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGFuZGVkID0g
Z2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZXhwYW5kZWQsICJ0cnVlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZXhwYW5kZWQsICJmYWxzZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShl
eHBhbmRlZCwgInRydWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShleHBhbmRlZCwgImZhbHNlIikp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICBj
YXNlIENvbWJvQm94Um9sZToKQEAgLTIzNzksNyArMjM3OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZCgpIGNvbnN0CiAgICAgCiBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzRXhwYW5kZWQoKSBjb25zdAogewotICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9leHBhbmRlZEF0dHIpLCAidHJ1ZSIpKQor
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9leHBhbmRlZEF0dHIp
LCAidHJ1ZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoaXM8SFRNTERl
dGFpbHNFbGVtZW50Pihub2RlKCkpKQpAQCAtMjQxMCwxNyArMjQxMCwxNyBAQCBBY2Nlc3NpYmls
aXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUo
KSBjb25zdAogCiAgICAgaWYgKGlzVG9nZ2xlQnV0dG9uKCkpIHsKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhUHJlc3NlZCA9IGdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRyKTsK
LSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFQcmVzc2VkLCAi
dHJ1ZSIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYVByZXNzZWQsICJ0cnVl
IikpCiAgICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVPbjsKLSAgICAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFQcmVzc2VkLCAibWl4ZWQiKSkKKyAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFQcmVzc2VkLCAibWl4ZWQiKSkKICAgICAgICAgICAg
IHJldHVybiBCdXR0b25TdGF0ZU1peGVkOwogICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVPZmY7
CiAgICAgfQogICAgIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzdWx0ID0gZ2V0QXR0cmli
dXRlKGFyaWFfY2hlY2tlZEF0dHIpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZXN1bHQsICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3VsdCwg
InRydWUiKSkKICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT247Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3VsdCwgIm1peGVkIikpIHsKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVzdWx0LCAibWl4ZWQiKSkgewogICAgICAgICAvLyBBUklBIHNheXMgdGhh
dCByYWRpbywgbWVudWl0ZW1yYWRpbywgYW5kIHN3aXRjaCBlbGVtZW50cyBtdXN0IE5PVCBleHBv
c2UgYnV0dG9uIHN0YXRlIG1peGVkLgogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9s
ZSA9IGFyaWFSb2xlQXR0cmlidXRlKCk7CiAgICAgICAgIGlmIChhcmlhUm9sZSA9PSBSYWRpb0J1
dHRvblJvbGUgfHwgYXJpYVJvbGUgPT0gTWVudUl0ZW1SYWRpb1JvbGUgfHwgYXJpYVJvbGUgPT0g
U3dpdGNoUm9sZSkKQEAgLTI0MjgsNyArMjQyOCw3IEBAIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBCdXR0b25TdGF0ZU1peGVkOwogICAgIH0KICAgICAKLSAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKGluZGV0ZXJtaW5hdGVBdHRyKSwg
InRydWUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGluZGV0ZXJt
aW5hdGVBdHRyKSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlTWl4ZWQ7CiAg
ICAgCiAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwpAQCAtMjg0Miw3ICsyODQyLDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkg
Y29uc3QKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSGlkZGVuKCkgY29uc3QKIHsK
ICAgICBmb3IgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IHRoaXM7IG9iamVj
dDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uob2JqZWN0LT5nZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5B
dHRyKSwgInRydWUiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG9iamVjdC0+Z2V0
QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
Nzg3ZmYzNDcwMTJlNjA0ZGUyYmNhYmQ3MzcwYmQ3Yjc4MmRkZjhiOC4uYTIwZTljMjA0YjAxYzcz
MWEzNjIyZTRhYWVlY2M5MjU0OGUzZjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDUy
LDcgKzEwNTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJ
QURyb3BwaW5nKCkgY29uc3QKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9y
dHNBUklBRHJhZ2dpbmcoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JhYmJl
ZCA9IGdldEF0dHJpYnV0ZShhcmlhX2dyYWJiZWRBdHRyKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhYmJlZCwgInRydWUiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShncmFiYmVkLCAiZmFsc2UiKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0Nhc2UoZ3JhYmJlZCwgInRydWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShncmFiYmVkLCAiZmFs
c2UiKTsgICAKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FSSUFHcmFi
YmVkKCkKQEAgLTExNTYsNyArMTE1Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24g
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbigpCiAKICAg
ICBpZiAobV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgewogICAg
ICAgICAvLyBhcmlhLWhpZGRlbiBpcyBtZWFudCB0byBvdmVycmlkZSB2aXNpYmlsaXR5IGFzIHRo
ZSBkZXRlcm1pbmFudCBpbiBBWCBoaWVyYXJjaHkgaW5jbHVzaW9uLgotICAgICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciks
ICJmYWxzZSIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFy
aWFfaGlkZGVuQXR0ciksICJmYWxzZSIpKQogICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhh
dmlvcjsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CkBAIC0xNTgzLDcg
KzE1ODMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1
dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaQogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSksICJ0cnVlIik7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSwgInRy
dWUiKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTZWxlY3Rl
ZCgpIGNvbnN0CkBAIC0xNTkxLDEwICsxNTkxLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkpCisgICAg
Tm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZ2V0QXR0cmlidXRlKGFyaWFfc2VsZWN0ZWRBdHRyKSwgInRydWUiKSkKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFyaWFTZWxlY3RlZCA9IGdldEF0dHJpYnV0ZShhcmlhX3NlbGVjdGVkQXR0
cik7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFTZWxlY3RlZCwgInRydWUiKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7ICAgIAogICAgIAogICAgIGlmIChpc1RhYkl0ZW0oKSAmJiBpc1Rh
Ykl0ZW1TZWxlY3RlZCgpKQpAQCAtMjU1Niw4ICsyNTU4LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkK
ICAgICAgICAgaWYgKGlucHV0LmlzRGF0ZUZpZWxkKCkgfHwgaW5wdXQuaXNUaW1lRmllbGQoKSkK
ICAgICAgICAgICAgIHJldHVybiBQb3BVcEJ1dHRvblJvbGU7CiAjZW5kaWYKKyAgICAgICAgCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgICAgIGlmIChpbnB1dC5pc0NvbG9yQ29u
dHJvbCgpKQorICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgdXNlIGlucHV0LmlzQ29s
b3JDb250cm9sKCk/CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSA9IGlucHV0Lmdl
dEF0dHJpYnV0ZSh0eXBlQXR0cik7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0eXBl
LCAiY29sb3IiKSkKICAgICAgICAgICAgIHJldHVybiBDb2xvcldlbGxSb2xlOwogI2VuZGlmCiAg
ICAgfQpAQCAtMjcyMywxMSArMjcyOCwxMSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b3JpZW50YXRpb24oKSBj
b25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYU9yaWVudGF0aW9uID0gZ2V0QXR0
cmlidXRlKGFyaWFfb3JpZW50YXRpb25BdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAiaG9yaXpvbnRhbCIpKQorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhcmlhT3JpZW50YXRpb24sICJob3Jpem9udGFsIikpCiAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOwotICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhT3JpZW50YXRpb24sICJ2ZXJ0aWNhbCIpKQorICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhcmlhT3JpZW50YXRpb24sICJ2ZXJ0aWNhbCIpKQogICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7Ci0gICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInVuZGVmaW5lZCIp
KQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhcmlhT3JpZW50YXRpb24sICJ1bmRlZmluZWQi
KSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5lZDsKIAog
ICAgIC8vIEFSSUEgMS4xIEltcGxpY2l0IGRlZmF1bHRzIGFyZSBkZWZpbmVkIG9uIHNvbWUgcm9s
ZXMuCkBAIC0yODI3LDcgKzI4MzIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3QKICAgICAKICAgICAvLyBBbiBvYmplY3Qg
Y2FuIGJlIGV4cGFuZGVkIGlmIGl0IGFyaWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFFeHBhbmRlZCA9IGdldEF0dHJpYnV0ZShhcmlhX2V4
cGFuZGVkQXR0cik7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFy
aWFFeHBhbmRlZCwgInRydWUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlh
RXhwYW5kZWQsICJmYWxzZSIpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShhcmlhRXhw
YW5kZWQsICJ0cnVlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYUV4cGFuZGVkLCAiZmFsc2Ui
KTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5TZXRWYWx1ZUF0dHJp
YnV0ZSgpIGNvbnN0CkBAIC0yODQxLDEwICsyODQ2LDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdAogICAgIGlmIChpc01ldGVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8mIHJlYWRPbmx5ID0gZ2V0QXR0
cmlidXRlKGFyaWFfcmVhZG9ubHlBdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocmVhZE9ubHksICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdl
dEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0ciksICJ0cnVlIikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVhZE9ubHksICJm
YWxzZSIpKQorICAgIAorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJp
YV9yZWFkb25seUF0dHIpLCAiZmFsc2UiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBp
ZiAoaXNQcm9ncmVzc0luZGljYXRvcigpIHx8IGlzU2xpZGVyKCkpCkBAIC0zMTg1LDExICszMTkw
LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJp
YUxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGF0b21pYyA9IGdldEF0dHJpYnV0ZShhcmlhX2F0b21pY0F0dHIpOwotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdG9taWMsICJ0cnVlIikpCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGF0b21pYywgInRydWUiKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0b21pYywgImZhbHNlIikpCisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0b21pYywgImZhbHNlIikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIC8vIFdBSS1BUklBICJhbGVydCIgYW5kICJzdGF0dXMiIHJvbGVzIGhhdmUg
YW4gaW1wbGljaXQgYXJpYS1hdG9taWMgdmFsdWUgb2YgdHJ1ZS4KICAgICBzd2l0Y2ggKHJvbGVW
YWx1ZSgpKSB7CiAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmlu
ZGV4IDI4Nzk5N2IwODE3YWQ1YjhmMjZjM2ZkZTYzNjE4YjNjZTA0MDNiNjkuLjcwZGQwZjliNWZm
ZDU0MzNmNzRjMjRmZGQ0YTBjYWQ1M2I5NmU5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtNDE3LDcg
KzQxNyw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmFyaWFSb3dTcGFuKCkg
Y29uc3QKICAgICAKICAgICAvLyBBUklBIDEuMTogQXV0aG9ycyBtdXN0IHNldCB0aGUgdmFsdWUg
b2YgYXJpYS1yb3dzcGFuIHRvIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAu
CiAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbCBv
ciBncmlkY2VsbCBpcyB0byBzcGFuIGFsbCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gdGhlIHJvdyBn
cm91cC4KLSAgICBpZiAocm93U3BhblZhbHVlID09ICIwIikKKyAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2Uocm93U3BhblZhbHVlLCAiMCIpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAocm93
U3BhblZhbHVlLnRvSW50KCkgPj0gMSkKICAgICAgICAgcmV0dXJuIHJvd1NwYW5WYWx1ZS50b0lu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDVk
NTYzYjM1YTgzOWQ1OWIwNTA4MDgwYWZmYTNlZmU5YTUwMjYxYzcuLjI0ZmY4MThjMGJhNzBkYzM0
NWM1MWM1ZTk4ZmQzMzNmMjE4ZDg4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBD
U1NDYWxjVmFsdWU6OmNyZWF0ZShDU1NQYXJzZXJTdHJpbmcgbmFtZSwgQ1NTUGFyc2VyVmFsdWVM
aQogICAgIENTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlciBwYXJzZXI7CiAgICAgUmVmUHRyPENT
U0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbjsKIAotICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiY2FsYygiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiLXdlYmtpdC1jYWxjKCIpKQorICAgIGlmIChuYW1lLmVxdWFsSWdub3Jp
bmdDYXNlKCJjYWxjKCIpIHx8IG5hbWUuZXF1YWxJZ25vcmluZ0Nhc2UoIi13ZWJraXQtY2FsYygi
KSkKICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlci5wYXJzZUNhbGMoJnBhcnNlclZhbHVlTGlz
dCk7CiAKICAgICByZXR1cm4gZXhwcmVzc2lvbiA/IGFkb3B0UmVmKG5ldyBDU1NDYWxjVmFsdWUo
ZXhwcmVzc2lvbi5yZWxlYXNlTm9uTnVsbCgpLCByYW5nZSAhPSBDYWxjdWxhdGlvblJhbmdlQWxs
KSkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0
aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKaW5k
ZXggMmMyMDAwMDgxNjRiN2FhNDRlMjY3MzhhZDA3NjFkMjg3NDVkZDZhNy4uMzBiNDgxZDExZjM4
N2RkNzA1ZTJjYzJkOGNhYmY1ZTM4YjE2YzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oCkBAIC0zMSwxNyArMzEsMTUgQEAKICNpZm5kZWYgQ1NTQ2FsY3VsYXRp
b25WYWx1ZV9oCiAjZGVmaW5lIENTU0NhbGN1bGF0aW9uVmFsdWVfaAogCisjaW5jbHVkZSAiQ1NT
UGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRl
ICJDYWxjdWxhdGlvblZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NT
UGFyc2VyVmFsdWVMaXN0OwogY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKIGNsYXNz
IFJlbmRlclN0eWxlOwogCi1zdHJ1Y3QgQ1NTUGFyc2VyU3RyaW5nOwotCiBlbnVtIENhbGN1bGF0
aW9uQ2F0ZWdvcnkgewogICAgIENhbGNOdW1iZXIgPSAwLAogICAgIENhbGNMZW5ndGgsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAppbmRleCAzMTJkOThlNGNk
MDI4NzE0NWEyZDFhMjI3YjRkYzg5MWVjMzQxNDYzLi43YzNkNTEzNGM2NTVhZmIwODAzNmQzZDI5
ZGU4NDhiY2JiN2FjZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZV9oCiAjZGVmaW5lIENTU0N1c3RvbVByb3BlcnR5VmFsdWVfaAogCisjaW5jbHVkZSAiQ1NTUGFy
c2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggMTRmMmIxNjU5ZjJkNTZlNDFkYWY5M2M5NDE1
YjdhMDI5NWQ2MTQ4Ny4uZWIwZWYxMjZlNTg0ZGMxZTVkOTM0NmIwMDA5OGQwYzcwMTdiOTllMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIGJvb2wg
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTVkdGb250RmFjZVNyYygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZm9ybWF0LCAic3ZnIik7CisgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1fZm9ybWF0LCAic3ZnIik7CiB9CiAKIGJvb2wgQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6aXNTVkdGb250VGFyZ2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCmluZGV4IGZiNTNmNzUwOGFlZTUxODViMTFiYWIyMzBhYTdhZTYzOWJlYWFl
NjAuLjY1ZDQ4YTliOTVlMjQ5ODI3OWZkOTcwM2Q3NTkwMjI0MzBmMTkxYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtODMyLDE3ICs4MzIsMTYgQEAga2V5X2xpc3Q6CiBrZXk6
CiAgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMSAqICQyOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KICAgICB8IElERU5UIHsKLSAgICAgICAg
JCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7Ci0gICAgICAgICQkLmlzSW50ID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSgkMSwgImZyb20iKSkKKyAgICAg
ICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmlzSW50ID0gZmFsc2U7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBz
dHIgPSAkMTsKKyAgICAgICAgaWYgKHN0ci5lcXVhbElnbm9yaW5nQ2FzZSgiZnJvbSIpKQogICAg
ICAgICAgICAgJCQuZlZhbHVlID0gMDsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoJDEsICJ0byIpKQorICAgICAgICBlbHNlIGlmIChzdHIuZXF1YWxJZ25v
cmluZ0Nhc2UoInRvIikpCiAgICAgICAgICAgICAkJC5mVmFsdWUgPSAxMDA7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgJCQudW5pdCA9IDA7CiAgICAgICAgICAgICBZWUVSUk9SOwogICAg
ICAgICB9Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsK
ICAgICB9CiAgICAgfCBlcnJvciB7CiAgICAgICAgICQkLnVuaXQgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCAxM2U4ZTcwYWE2ZTk0Njg5ZTViYWQyN2Y0YzEzZGIxNjFmNWFjYzUz
Li5kMjg2OTZjMmIzYWZjMzliMDRlNGYxOWZmNjNjNjc4ZGQ1ZTQ2YzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtMTY3LDEwICsxNjcsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTID0gVUlO
VF9NQVg7CiBzdGF0aWMgY29uc3QgZG91YmxlIE1BWF9TQ0FMRSA9IDEwMDAwMDA7CiAKLXRlbXBs
YXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJz
KVtsZW5ndGhdKQordGVtcGxhdGUgPHVuc2lnbmVkIE4+CitzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIGEsIGNvbnN0IGNoYXIgKCZiKVtOXSkKK3sKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBOIC0gMTsgLy8gSWdub3JlIHRoZSB0cmFpbGluZyBudWxsIGNoYXJhY3Rlcgor
ICAgIGlmIChhLmxlbmd0aCgpICE9IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGEuaXM4Qml0KCkgPyBXVEY6OmVxdWFsKGEuY2hhcmFjdGVyczgoKSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgpIDogV1RGOjplcXVhbChhLmNoYXJh
Y3RlcnMxNigpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7Cit9
CisKK3RlbXBsYXRlIDx1bnNpZ25lZCBOPgorc3RhdGljIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2Uo
Y29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBhLCBjb25zdCBjaGFyICgmYilbTl0pCit7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gTiAtIDE7IC8vIElnbm9yZSB0aGUgdHJhaWxpbmcgbnVsbCBjaGFyYWN0
ZXIKKyAgICBpZiAoYS5sZW5ndGgoKSAhPSBsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBhLmlzOEJpdCgpID8gV1RGOjplcXVhbElnbm9yaW5nQ2FzZShiLCBhLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCkgOiBXVEY6OmVxdWFsSWdub3JpbmdDYXNlKGIsIGEuY2hhcmFj
dGVyczE2KCksIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlIDx1bnNpZ25lZCBOPgorc3RhdGljIGJv
b2wgZXF1YWxJZ25vcmluZ0Nhc2UoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBjb25zdCBjaGFyICgm
YilbTl0pCiB7CiAgICAgQVNTRVJUKHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19JREVOVCB8fCB2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsK
LSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUuc3RyaW5nLCBs
b3dlcmNhc2VMZXR0ZXJzKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3Ry
aW5nLCBiKTsKIH0KIAogc3RhdGljIGJvb2wgaGFzUHJlZml4KGNvbnN0IGNoYXIqIHN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyKiBwcmVmaXgpCkBAIC0yMTI5LDcgKzIxNTAsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgaWYgKCF1cmkuaXNOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGltYWdlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKHVyaSkp
OwogI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKSAmJiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxF
KQotICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6
RnVuY3Rpb24gJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUtPmZ1bmN0aW9u
LT5uYW1lLCAiLXdlYmtpdC1pbWFnZS1zZXQoIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYmIGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAg
ICAgICAgICAgICAgaW1hZ2UgPSBwYXJzZUltYWdlU2V0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjYyLDcgKzIyODMsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAjaWYg
RU5BQkxFKENTU19JTUFHRV9TRVQpCi0gICAgICAgIGVsc2UgaWYgKHZhbHVlV2l0aENhbGN1bGF0
aW9uLnZhbHVlKCkudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWVXaXRoQ2FsY3VsYXRpb24udmFsdWUoKS5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CisgICAgICAgIGVsc2UgaWYgKHZhbHVl
V2l0aENhbGN1bGF0aW9uLnZhbHVlKCkudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24g
JiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVXaXRoQ2FsY3VsYXRpb24udmFsdWUoKS5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAgICAgICBwYXJzZWRWYWx1
ZSA9IHBhcnNlSW1hZ2VTZXQoKTsKICAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzUxNyw3ICszNTM4LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlTm9uRWxlbWVudFNuYXBQb2ludHMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb24KICAgICAgICAgICAgICYmIHZhbHVlLT5mdW5jdGlvbi0+YXJncwogICAg
ICAgICAgICAgJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0gMQotICAgICAgICAg
ICAgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAicmVwZWF0KCIpKSB7CisgICAgICAgICAgICAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+
ZnVuY3Rpb24tPm5hbWUsICJyZXBlYXQoIikpIHsKICAgICAgICAgICAgIFZhbHVlV2l0aENhbGN1
bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCp2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0
KCktPmN1cnJlbnQoKSk7CiAgICAgICAgICAgICBpZiAodmFsaWRhdGVVbml0KGFyZ3VtZW50V2l0
aENhbGN1bGF0aW9uLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnKSkgewogICAgICAgICAg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUoTGVuZ3RoUmVwZWF0OjpjcmVhdGUoY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKGFyZ3Vt
ZW50V2l0aENhbGN1bGF0aW9uKSkpKTsKQEAgLTQxOTIsNyArNDIxMyw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUFsdChDU1NQcm9wZXJ0eUlEIHByb3BJRCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IGN1cnJlbnRWYWx1ZS5mdW5jdGlvbi0+YXJn
cy5nZXQoKTsKICAgICAgICAgaWYgKCFhcmdzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY3VycmVudFZhbHVlLmZ1
bmN0aW9uLT5uYW1lLCAiYXR0cigiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGN1
cnJlbnRWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgImF0dHIoIikpCiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IHBhcnNlQXR0cigqYXJncyk7CiAgICAgfQogICAgIApAQCAtNDI0OSwyMCArNDI3MCwy
MCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZh
bHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKICAgICAgICAgICAgIGlmICghYXJncykKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiYXR0cigiKSkgeworICAgICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImF0dHIo
IikpIHsKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQXR0cigqYXJncyk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICJjb3VudGVyKCIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImNv
dW50ZXIoIikpIHsKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ291bnRlckNv
bnRlbnQoKmFyZ3MsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImNv
dW50ZXJzKCIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLT5mdW5jdGlvbi0+bmFtZSwgImNvdW50ZXJzKCIpKSB7CiAgICAgICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBwYXJzZUNvdW50ZXJDb250ZW50KCphcmdzLCB0cnVlKTsKICAgICAgICAgICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0gICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQt
aW1hZ2Utc2V0KCIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZUltYWdlU2V0KCk7CiAgICAgICAgICAgICAgICAg
aWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDM1OCw3ICs0Mzc5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdlKENTU1BhcnNl
clZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8Q1NTVmFsdWU+JgogICAgICAgICByZXR1cm4g
cGFyc2VHZW5lcmF0ZWRJbWFnZSh2YWx1ZUxpc3QsIHZhbHVlKTsKICAgICAKICNpZiBFTkFCTEUo
Q1NTX0lNQUdFX1NFVCkKLSAgICBpZiAodmFsdWVMaXN0LmN1cnJlbnQoKS0+dW5pdCA9PSBDU1NQ
YXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWVMaXN0LmN1cnJlbnQoKS0+ZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWltYWdlLXNldCgiKSkg
eworICAgIGlmICh2YWx1ZUxpc3QuY3VycmVudCgpLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbiAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZUxpc3QuY3VycmVudCgpLT5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAgIHZhbHVlID0gcGFyc2VJ
bWFnZVNldCgpOwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTUwMzgsNyArNTA1OSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFu
aW1hdGlvbk5hbWUoKQogewogICAgIENTU1BhcnNlclZhbHVlJiB2YWx1ZSA9ICptX3ZhbHVlTGlz
dC0+Y3VycmVudCgpOwogICAgIGlmICh2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HIHx8IHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkg
ewotICAgICAgICBpZiAodmFsdWUuaWQgPT0gQ1NTVmFsdWVOb25lIHx8ICh2YWx1ZS51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAibm9uZSIpKSkgeworICAgICAgICBpZiAodmFsdWUuaWQgPT0gQ1NTVmFs
dWVOb25lIHx8ICh2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HICYm
IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibm9uZSIpKSkgewogICAgICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1Zh
bHVlKHZhbHVlKTsKQEAgLTUwNjYsNyArNTA4Nyw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQogCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBh
cmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImNvbnRhaW5lci1zY3Jv
bGwoIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1l
LCAiY29udGFpbmVyLXNjcm9sbCgiKSkgewogICAgICAgICBpZiAoIWFyZ3MgfHwgKGFyZ3MtPnNp
emUoKSAhPSAxICYmIGFyZ3MtPnNpemUoKSAhPSAzKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC01MTA3LDExICs1MTI4LDExIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYgY29udGV4CiAg
ICAgQ1NTUHJvcGVydHlJRCByZXN1bHQgPSBjc3NQcm9wZXJ0eUlEKHZhbHVlLnN0cmluZyk7CiAg
ICAgaWYgKHJlc3VsdCAmJiByZXN1bHQgIT0gQ1NTUHJvcGVydHlBbGwpIC8vICJhbGwiIHZhbHVl
IGluIGFuaW1hdGlvbiBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgYWxsIHByb3BlcnR5LgogICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUocmVzdWx0KTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJhbGwiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImFsbCIpKSB7CiAg
ICAgICAgIGNvbnRleHQuc2F3QW5pbWF0aW9uUHJvcGVydHlLZXl3b3JkKCk7CiAgICAgICAgIHJl
dHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZUFsbCk7CiAgICAgfQotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgIm5vbmUiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vbmUi
KSkgewogICAgICAgICBjb250ZXh0LmNvbW1pdEFuaW1hdGlvblByb3BlcnR5S2V5d29yZCgpOwog
ICAgICAgICBjb250ZXh0LnNhd0FuaW1hdGlvblByb3BlcnR5S2V5d29yZCgpOwogICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb25lKTsKQEAgLTUxMzAsOSArNTE1MSw5IEBAIFZlY3Rvcjxkb3VibGU+IENTU1BhcnNl
cjo6cGFyc2VLZXlmcmFtZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIHsKICAgICAg
ICAgU3RyaW5nIGN1ciA9IHN0cmluZ3NbaV0uc3RyaXBXaGl0ZVNwYWNlKCk7CiAKICAgICAgICAg
Ly8gRm9yIG5vdyB0aGUgc3ludGF4IE1VU1QgYmUgJ3h4eCUnIG9yICdmcm9tJyBvciAndG8nLCB3
aGVyZSB4eHggaXMgYSBsZWdhbCBmbG9hdGluZyBwb2ludCBudW1iZXIKLSAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGN1ciwgImZyb20iKSkKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGN1ciwgImZyb20iKSkKICAgICAgICAgICAgIGtleSA9IDA7Ci0gICAg
ICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGN1ciwgInRvIikpCisg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGN1ciwgInRvIikpCiAgICAgICAgICAg
ICBrZXkgPSAxOwogICAgICAgICBlbHNlIGlmIChjdXIuZW5kc1dpdGgoJyUnKSkgewogICAgICAg
ICAgICAgZG91YmxlIGsgPSBjdXIuc3Vic3RyaW5nKDAsIGN1ci5sZW5ndGgoKSAtIDEpLnRvRG91
YmxlKCk7CkBAIC01MTk3LDcgKzUyMTgsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpCiAKICAgICBDU1NQYXJzZXJWYWx1ZUxpc3Qq
IGFyZ3MgPSB2YWx1ZS5mdW5jdGlvbi0+YXJncy5nZXQoKTsKIAotICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgInN0ZXBzKCIpKSB7Cisg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAic3RlcHMoIikp
IHsKICAgICAgICAgLy8gRm9yIHN0ZXBzLCAxIG9yIDIgcGFyYW1zIG11c3QgYmUgc3BlY2lmaWVk
IChjb21tYS1zZXBhcmF0ZWQpCiAgICAgICAgIGlmICghYXJncyB8fCAoYXJncy0+c2l6ZSgpICE9
IDEgJiYgYXJncy0+c2l6ZSgpICE9IDMpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01MjI4LDcgKzUyNDksNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpCiAgICAgICAgIHJldHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNyZWF0ZShudW1TdGVwcywgc3RlcEF0U3RhcnQpOwogICAgIH0KIAotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImN1
YmljLWJlemllcigiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5jdGlv
bi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgewogICAgICAgICAvLyBGb3IgY3ViaWMgYmV6aWVy
LCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAgICAgaWYgKCFhcmdzIHx8IGFyZ3Mt
PnNpemUoKSAhPSA3KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01ODA2LDcgKzU4
MjcsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkK
ICAgICB3aGlsZSAoQ1NTUGFyc2VyVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5j
dXJyZW50KCkpIHsKICAgICAgICAgaWYgKGlzRm9yd2FyZFNsYXNoT3BlcmF0b3IoKmN1cnJlbnRW
YWx1ZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZS0+dW5p
dCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoY3VycmVudFZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgInJlcGVhdCgiKSkgeworICAgICAg
ICBpZiAoY3VycmVudFZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbiAmJiBl
cXVhbElnbm9yaW5nQ2FzZShjdXJyZW50VmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAicmVwZWF0KCIp
KSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24oKnZhbHVl
cykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC01ODkyLDcgKzU5MTMsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlk
VHJhY2tTaXplKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogICAgIGlmIChjdXJyZW50
VmFsdWUuaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKIAotICAgIGlm
IChjdXJyZW50VmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY3VycmVudFZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAibWlu
bWF4KCIpKSB7CisgICAgaWYgKGN1cnJlbnRWYWx1ZS51bml0ID09IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbiAmJiBlcXVhbElnbm9yaW5nQ2FzZShjdXJyZW50VmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJtaW5tYXgoIikpIHsKICAgICAgICAgLy8gVGhlIHNwZWMgZGVmaW5lcyB0aGUgZm9sbG93aW5n
IGdyYW1tYXI6IG1pbm1heCggPHRyYWNrLWJyZWFkdGg+ICwgPHRyYWNrLWJyZWFkdGg+ICkKICAg
ICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmd1bWVudHMgPSBjdXJyZW50VmFsdWUuZnVuY3Rp
b24tPmFyZ3MuZ2V0KCk7CiAgICAgICAgIGlmICghYXJndW1lbnRzIHx8IGFyZ3VtZW50cy0+c2l6
ZSgpICE9IDMgfHwgIWlzQ29tbWEoYXJndW1lbnRzLT52YWx1ZUF0KDEpKSkKQEAgLTYwNDUsNyAr
NjA2Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVy
dHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBkYXNoYm9hcmQtcmVnaW9u
KGxhYmVsLCB0eXBlKSBvciBkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIHR5cGUpCiAgICAgICAgIC8v
IGRhc2hib2FyZC1yZWdpb24obGFiZWwsIHR5cGUpIG9yIGRhc2hib2FyZC1yZWdpb24obGFiZWwg
dHlwZSkKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1bmN0aW9u
LT5hcmdzLmdldCgpOwotICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImRhc2hib2FyZC1yZWdpb24oIikgfHwgIWFyZ3MpIHsK
KyAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICJk
YXNoYm9hcmQtcmVnaW9uKCIpIHx8ICFhcmdzKSB7CiAgICAgICAgICAgICB2YWxpZCA9IGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTYwNzQsOSArNjA5NSw5IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoKmFyZywgImNpcmNsZSIpKQorICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoKmFyZywgImNpcmNsZSIpKQogICAgICAgICAgICAg
cmVnaW9uLT5tX2lzQ2lyY2xlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoKmFyZywgInJlY3RhbmdsZSIpKQorICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSgqYXJnLCAicmVjdGFuZ2xlIikpCiAgICAgICAgICAgICByZWdpb24t
Pm1faXNSZWN0YW5nbGUgPSB0cnVlOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHZhbGlk
ID0gZmFsc2U7CkBAIC02MzA0LDcgKzYzMjUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDbGlw
U2hhcGUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIENTU1BhcnNl
clZhbHVlJiB2YWx1ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIENTU1BhcnNlclZh
bHVlTGlzdCogYXJncyA9IHZhbHVlLmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogCi0gICAgaWYgKCFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgInJlY3Qo
IikgfHwgIWFyZ3MpCisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+
bmFtZSwgInJlY3QoIikgfHwgIWFyZ3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IHJlY3QodCwgciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBsKQpAQCAtNjQzMyw3ICs2NDU0LDcgQEAg
UmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NT
UGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+ID4gd2lkdGhBcmd1bWVudHM7CiAgICAgYm9vbCBoYXNSb3VuZGVkSW5zZXQgPSBmYWxzZTsK
ICAgICB3aGlsZSAoYXJndW1lbnQpIHsKLSAgICAgICAgaWYgKGFyZ3VtZW50LT51bml0ID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoYXJndW1lbnQtPnN0cmluZywgInJvdW5kIikpIHsKKyAgICAgICAgaWYgKGFyZ3VtZW50LT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uo
YXJndW1lbnQtPnN0cmluZywgInJvdW5kIikpIHsKICAgICAgICAgICAgIGhhc1JvdW5kZWRJbnNl
dCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjc1OCwxNSArNjc3
OSwxNSBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1No
YXBlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8Q1NTQmFzaWNTaGFw
ZT4gc2hhcGU7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1
bmN0aW9uLT5uYW1lLCAiY2lyY2xlKCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZS5mdW5jdGlvbi0+bmFtZSwgImNpcmNsZSgiKSkKICAgICAgICAgc2hhcGUgPSBwYXJzZUJhc2lj
U2hhcGVDaXJjbGUoKmFyZ3MpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiZWxsaXBzZSgiKSkKKyAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImVsbGlwc2UoIikpCiAgICAg
ICAgIHNoYXBlID0gcGFyc2VCYXNpY1NoYXBlRWxsaXBzZSgqYXJncyk7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJwb2x5
Z29uKCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLmZ1bmN0aW9uLT5u
YW1lLCAicG9seWdvbigiKSkKICAgICAgICAgc2hhcGUgPSBwYXJzZUJhc2ljU2hhcGVQb2x5Z29u
KCphcmdzKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZS5mdW5jdGlvbi0+bmFtZSwgInBhdGgoIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJwYXRoKCIpKQogICAgICAgICBzaGFwZSA9IHBhcnNl
QmFzaWNTaGFwZVBhdGgoKmFyZ3MpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiaW5zZXQoIikpCisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJpbnNldCgiKSkKICAgICAg
ICAgc2hhcGUgPSBwYXJzZUJhc2ljU2hhcGVJbnNldCgqYXJncyk7CiAKICAgICBpZiAoIXNoYXBl
KQpAQCAtNzA5NCw3ICs3MTE1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmNV
UkkoQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGlmICh2YWx1ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImZvcm1h
dCgiKSkKKyAgICBpZiAodmFsdWUtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uIHx8
ICFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICJmb3JtYXQoIikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3LnczLm9yZy9U
Ui8yMDExL1dELWNzczMtZm9udHMtMjAxMTEwMDQvIHNheXMgdGhhdCBmb3JtYXQoKSBjb250YWlu
cyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0cmluZ3MsCkBAIC03MTQ2LDcgKzcxNjcsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVNyYygpCiAgICAgICAgIGlmICh2YWx1ZS0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgaWYgKCFw
YXJzZUZvbnRGYWNlU3JjVVJJKCp2YWx1ZXMpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb24gJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUtPmZ1bmN0aW9uLT5u
YW1lLCAibG9jYWwoIikpIHsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQ
YXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9u
LT5uYW1lLCAibG9jYWwoIikpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VGb250RmFjZVNyY0xv
Y2FsKCp2YWx1ZXMpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBl
bHNlCkBAIC03NTcyLDkgKzc1OTMsOSBAQCBpbmxpbmUgZG91YmxlIENTU1BhcnNlcjo6cGFyc2Vk
RG91YmxlKFZhbHVlV2l0aENhbGN1bGF0aW9uJiB2YWx1ZVdpdGhDYWxjdWxhdGlvbgogCiBib29s
IENTU1BhcnNlcjo6aXNDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIHZhbHVlLnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uCi0gICAgICAgICYm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImNh
bGMoIikKLSAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVl
LmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1jYWxjKCIpKTsKKyAgICByZXR1cm4gKHZhbHVlLnVu
aXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQorICAgICAgICAmJiAoZXF1YWxJZ25vcmlu
Z0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJjYWxjKCIpCisgICAgICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtY2FsYygiKSk7CiB9
CiAKIGlubGluZSBpbnQgQ1NTUGFyc2VyOjpjb2xvckludEZyb21WYWx1ZShWYWx1ZVdpdGhDYWxj
dWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRpb24pCkBAIC03NzAwLDcgKzc3MjEsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIFJH
QkEzMiYgYykKICAgICB9IGVsc2UgaWYgKHZhbHVlLnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1
bmN0aW9uCiAgICAgICAgICYmIHZhbHVlLmZ1bmN0aW9uLT5hcmdzCiAgICAgICAgICYmIHZhbHVl
LmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0gNSAvKiByZ2IgKyB0d28gY29tbWFzICovCi0gICAg
ICAgICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1l
LCAicmdiKCIpKSB7CisgICAgICAgICYmIGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLmZ1bmN0aW9u
LT5uYW1lLCAicmdiKCIpKSB7CiAgICAgICAgIGludCBjb2xvclZhbHVlc1szXTsKICAgICAgICAg
aWYgKCFwYXJzZUNvbG9yUGFyYW1ldGVycyh2YWx1ZSwgY29sb3JWYWx1ZXMsIGZhbHNlKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3MDksNyArNzczMCw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgUkdCQTMyJiBj
KQogICAgICAgICBpZiAodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24KICAg
ICAgICAgICAgICYmIHZhbHVlLmZ1bmN0aW9uLT5hcmdzCiAgICAgICAgICAgICAmJiB2YWx1ZS5m
dW5jdGlvbi0+YXJncy0+c2l6ZSgpID09IDcgLyogcmdiYSArIHRocmVlIGNvbW1hcyAqLwotICAg
ICAgICAgICAgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rpb24t
Pm5hbWUsICJyZ2JhKCIpKSB7CisgICAgICAgICAgICAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZS5mdW5jdGlvbi0+bmFtZSwgInJnYmEoIikpIHsKICAgICAgICAgICAgIGludCBjb2xvclZhbHVl
c1s0XTsKICAgICAgICAgICAgIGlmICghcGFyc2VDb2xvclBhcmFtZXRlcnModmFsdWUsIGNvbG9y
VmFsdWVzLCB0cnVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NzE3LDcg
Kzc3MzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZShDU1NQYXJzZXJW
YWx1ZSYgdmFsdWUsIFJHQkEzMiYgYykKICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS51bml0ID09
IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbgogICAgICAgICAgICAgJiYgdmFsdWUuZnVuY3Rpb24t
PmFyZ3MKICAgICAgICAgICAgICYmIHZhbHVlLmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0gNSAv
KiBoc2wgKyB0d28gY29tbWFzICovCi0gICAgICAgICAgICAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImhzbCgiKSkgeworICAgICAgICAgICAg
JiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJoc2woIikpIHsKICAg
ICAgICAgICAgIGRvdWJsZSBjb2xvclZhbHVlc1szXTsKICAgICAgICAgICAgIGlmICghcGFyc2VI
U0xQYXJhbWV0ZXJzKHZhbHVlLCBjb2xvclZhbHVlcywgZmFsc2UpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTc3MjUsNyArNzc0Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgUkdCQTMyJiBjKQogICAgICAg
ICB9IGVsc2UgaWYgKHZhbHVlLnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uCiAgICAg
ICAgICAgICAmJiB2YWx1ZS5mdW5jdGlvbi0+YXJncwogICAgICAgICAgICAgJiYgdmFsdWUuZnVu
Y3Rpb24tPmFyZ3MtPnNpemUoKSA9PSA3IC8qIGhzbGEgKyB0aHJlZSBjb21tYXMgKi8KLSAgICAg
ICAgICAgICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1bmN0aW9uLT5u
YW1lLCAiaHNsYSgiKSkgeworICAgICAgICAgICAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUu
ZnVuY3Rpb24tPm5hbWUsICJoc2xhKCIpKSB7CiAgICAgICAgICAgICBkb3VibGUgY29sb3JWYWx1
ZXNbNF07CiAgICAgICAgICAgICBpZiAoIXBhcnNlSFNMUGFyYW1ldGVycyh2YWx1ZSwgY29sb3JW
YWx1ZXMsIHRydWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgxNTgsNyAr
ODE3OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQsCiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9T
RVQpCi0gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS0+dW5pdCA9PSBDU1NQYXJz
ZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY3VycmVu
dFZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGN1cnJlbnRWYWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb24gJiYgZXF1YWxJZ25vcmluZ0Nhc2UoY3VycmVudFZhbHVlLT5mdW5jdGlvbi0+bmFtZSwg
Ii13ZWJraXQtaW1hZ2Utc2V0KCIpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IHBhcnNlSW1hZ2VTZXQoKTsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0SW1hZ2UodmFsdWUucmVsZWFzZSgpKTsK
QEAgLTg2MTcsMTMgKzg2MzgsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHBhcnNlRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVmFsdWUKIHsKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdDsKICAgICBpZiAodmFsdWUudW5pdCA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7Ci0gICAgICAgIGlmICgoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsZWZ0IikgJiYgaG9yaXpvbnRhbCkKLSAgICAgICAg
ICAgIHx8IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgInRvcCIpICYmICFo
b3Jpem9udGFsKSkKKyAgICAgICAgaWYgKChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImxlZnQi
KSAmJiBob3Jpem9udGFsKQorICAgICAgICAgICAgfHwgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVl
LCAidG9wIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAgcmVzdWx0ID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKTsKLSAgICAgICAgZWxzZSBpZiAoKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAicmlnaHQiKSAmJiBob3Jpem9udGFsKQotICAgICAgICAgICAgfHwgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYm90dG9tIikgJiYgIWhvcml6b250YWwp
KQorICAgICAgICBlbHNlIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJyaWdodCIpICYm
IGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJi
b3R0b20iKSAmJiAhaG9yaXpvbnRhbCkpCiAgICAgICAgICAgICByZXN1bHQgPSBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKDEwMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSk7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAiY2VudGVyIikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCAiY2VudGVyIikpCiAgICAgICAgICAgICByZXN1bHQgPSBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKDUwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIgfHwgdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpCiAgICAgICAgIHJlc3VsdCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFs
dWUodmFsdWUuZlZhbHVlLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
Pih2YWx1ZS51bml0KSk7CkBAIC04NjM1LDIyICs4NjU2LDIyIEBAIHN0YXRpYyBib29sIHBhcnNl
RGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKENTU1BhcnNlciYgcGFyc2VyLCBDU1NQYXJzZXJW
YWx1ZSYKICAgICBpZiAodmFsdWUudW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJmcm9tKCIpCi0gICAgICAgICYmICFlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgInRvKCIpCi0gICAg
ICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFt
ZSwgImNvbG9yLXN0b3AoIikpCisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5j
dGlvbi0+bmFtZSwgImZyb20oIikKKyAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVl
LmZ1bmN0aW9uLT5uYW1lLCAidG8oIikKKyAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLmZ1bmN0aW9uLT5uYW1lLCAiY29sb3Itc3RvcCgiKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUuZnVuY3Rpb24tPmFyZ3Mu
Z2V0KCk7CiAgICAgaWYgKCFhcmdzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJmcm9t
KCIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1bmN0
aW9uLT5uYW1lLCAidG8oIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVu
Y3Rpb24tPm5hbWUsICJmcm9tKCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVl
LmZ1bmN0aW9uLT5uYW1lLCAidG8oIikpIHsKICAgICAgICAgLy8gVGhlICJmcm9tIiBhbmQgInRv
IiBzdG9wcyBleHBlY3QgMSBhcmd1bWVudC4KICAgICAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSAx
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImZyb20oIikpCisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImZyb20oIikpCiAg
ICAgICAgICAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CkBAIC04NjY1
LDcgKzg2ODYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3Rv
cChDU1NQYXJzZXImIHBhcnNlciwgQ1NTUGFyc2VyVmFsdWUmCiAgICAgfQogCiAgICAgLy8gVGhl
ICJjb2xvci1zdG9wIiBmdW5jdGlvbiBleHBlY3RzIDMgYXJndW1lbnRzLgotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImNvbG9yLXN0
b3AoIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJjb2xvci1zdG9wKCIpKSB7CiAgICAgICAgIGlmIChhcmdzLT5zaXplKCkgIT0gMykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODcwNiw5ICs4NzI3LDkgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0
LCBSZWZQdHI8Q1MKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1lbnQgPSBhcmdzLT5jdXJyZW50
KCk7CiAgICAgaWYgKCFhcmd1bWVudCB8fCBhcmd1bWVudC0+dW5pdCAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCphcmd1bWVudCwgImxpbmVhciIpKQorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSgqYXJndW1lbnQsICJsaW5lYXIiKSkKICAgICAgICAgZ3JhZGllbnRUeXBl
ID0gQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKCphcmd1bWVudCwgInJhZGlhbCIpKQorICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKCphcmd1bWVudCwgInJhZGlhbCIpKQogICAgICAgICBncmFkaWVudFR5
cGUgPSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQ7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05MDY5LDcgKzkwOTAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5l
YXJHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbAog
CiAgICAgICAgIGFyZ3MtPm5leHQoKTsKICAgICAgICAgZXhwZWN0Q29tbWEgPSB0cnVlOwotICAg
IH0gZWxzZSBpZiAoZmlyc3RBcmd1bWVudFdpdGhDYWxjdWxhdGlvbi52YWx1ZSgpLnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShmaXJzdEFyZ3VtZW50V2l0aENhbGN1bGF0aW9uLCAidG8iKSkgeworICAgIH0gZWxzZSBp
ZiAoZmlyc3RBcmd1bWVudFdpdGhDYWxjdWxhdGlvbi52YWx1ZSgpLnVuaXQgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCAmJiBlcXVhbElnbm9yaW5nQ2FzZShmaXJzdEFyZ3VtZW50V2l0
aENhbGN1bGF0aW9uLCAidG8iKSkgewogICAgICAgICAvLyB0byBbIFtsZWZ0IHwgcmlnaHRdIHx8
IFt0b3AgfCBib3R0b21dIF0KICAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIG5leHRBcmd1bWVudCA9
IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCFuZXh0QXJndW1lbnQpCkBAIC05MjE4LDcgKzky
MzksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbAogICAgIC8vIGF0IDxwb3NpdGlvbj4KICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGNlbnRlclg7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjZW50ZXJZ
OwotICAgIGlmIChhcmd1bWVudC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5U
ICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCphcmd1bWVudCwgImF0IikpIHsKKyAg
ICBpZiAoYXJndW1lbnQtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBl
cXVhbElnbm9yaW5nQ2FzZSgqYXJndW1lbnQsICJhdCIpKSB7CiAgICAgICAgIGFyZ3VtZW50ID0g
YXJncy0+bmV4dCgpOwogICAgICAgICBpZiAoIWFyZ3VtZW50KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtOTMwNCwyMCArOTMyNSwyMCBAQCBib29sIENTU1BhcnNlcjo6aXNHZW5lcmF0
ZWRJbWFnZVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkgY29uc3QKICAgICBpZiAodmFsdWUu
dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtZ3JhZGllbnQoIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWxpbmVhci1ncmFk
aWVudCgiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5m
dW5jdGlvbi0+bmFtZSwgImxpbmVhci1ncmFkaWVudCgiKQotICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtcmVwZWF0
aW5nLWxpbmVhci1ncmFkaWVudCgiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQo
IikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rp
b24tPm5hbWUsICItd2Via2l0LXJhZGlhbC1ncmFkaWVudCgiKQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgInJhZGlhbC1ncmFk
aWVudCgiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5m
dW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtcmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgiKQotICAg
ICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFt
ZSwgInJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWNhbnZhcygi
KQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtY3Jvc3MtZmFkZSgiKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwgImZpbHRlcigiKQotICAgICAg
ICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5mdW5jdGlvbi0+bmFtZSwg
Ii13ZWJraXQtZmlsdGVyKCIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1uYW1lZC1pbWFnZSgiKTsKKyAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWdy
YWRpZW50KCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLmZ1bmN0aW9uLT5u
YW1lLCAiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJsaW5lYXItZ3JhZGllbnQoIikKKyAgICAgICAg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LXJlcGVh
dGluZy1saW5lYXItZ3JhZGllbnQoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUuZnVuY3Rpb24tPm5hbWUsICJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCIpCisgICAgICAg
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1yYWRp
YWwtZ3JhZGllbnQoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rp
b24tPm5hbWUsICJyYWRpYWwtZ3JhZGllbnQoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGll
bnQoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1jYW52YXMoIikKKyAgICAgICAgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWNyb3NzLWZh
ZGUoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJmaWx0ZXIoIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuZnVuY3Rpb24t
Pm5hbWUsICItd2Via2l0LWZpbHRlcigiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2
YWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtbmFtZWQtaW1hZ2UoIik7CiB9CiAKIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSkKQEAgLTkzMjcsNDMgKzkzNDgsNDMgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlR2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIFJlZlB0cjxDU1NWYWwKICAgICBpZiAocGFyc2VyVmFsdWUudW5pdCAhPSBDU1NQYXJz
ZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13
ZWJraXQtZ3JhZGllbnQoIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHBhcnNlclZhbHVl
LmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1ncmFkaWVudCgiKSkKICAgICAgICAgcmV0dXJuIHBh
cnNlRGVwcmVjYXRlZEdyYWRpZW50KHZhbHVlTGlzdCwgdmFsdWUpOwogCi0gICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdl
YmtpdC1saW5lYXItZ3JhZGllbnQoIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHBhcnNl
clZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIikpCiAgICAg
ICAgIHJldHVybiBwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCh2YWx1ZUxpc3QsIHZhbHVl
LCBOb25SZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAibGluZWFyLWdyYWRpZW50KCIpKQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgImxpbmVhci1n
cmFkaWVudCgiKSkKICAgICAgICAgcmV0dXJuIHBhcnNlTGluZWFyR3JhZGllbnQodmFsdWVMaXN0
LCB2YWx1ZSwgTm9uUmVwZWF0aW5nKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtcmVwZWF0aW5nLWxp
bmVhci1ncmFkaWVudCgiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocGFyc2VyVmFsdWUu
ZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoIikpCiAg
ICAgICAgIHJldHVybiBwYXJzZURlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCh2YWx1ZUxpc3QsIHZh
bHVlLCBSZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgi
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocGFyc2VyVmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCIpKQogICAgICAgICByZXR1cm4gcGFyc2VMaW5l
YXJHcmFkaWVudCh2YWx1ZUxpc3QsIHZhbHVlLCBSZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdl
YmtpdC1yYWRpYWwtZ3JhZGllbnQoIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHBhcnNl
clZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoIikpCiAgICAg
ICAgIHJldHVybiBwYXJzZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCh2YWx1ZUxpc3QsIHZhbHVl
LCBOb25SZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAicmFkaWFsLWdyYWRpZW50KCIpKQorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgInJhZGlhbC1n
cmFkaWVudCgiKSkKICAgICAgICAgcmV0dXJuIHBhcnNlUmFkaWFsR3JhZGllbnQodmFsdWVMaXN0
LCB2YWx1ZSwgTm9uUmVwZWF0aW5nKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtcmVwZWF0aW5nLXJh
ZGlhbC1ncmFkaWVudCgiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocGFyc2VyVmFsdWUu
ZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoIikpCiAg
ICAgICAgIHJldHVybiBwYXJzZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCh2YWx1ZUxpc3QsIHZh
bHVlLCBSZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAicmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgi
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocGFyc2VyVmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCIpKQogICAgICAgICByZXR1cm4gcGFyc2VSYWRp
YWxHcmFkaWVudCh2YWx1ZUxpc3QsIHZhbHVlLCBSZXBlYXRpbmcpOwogCi0gICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiLXdl
YmtpdC1jYW52YXMoIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHBhcnNlclZhbHVlLmZ1
bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1jYW52YXMoIikpCiAgICAgICAgIHJldHVybiBwYXJzZUNh
bnZhcyh2YWx1ZUxpc3QsIHZhbHVlKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtY3Jvc3MtZmFkZSgi
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocGFyc2VyVmFsdWUuZnVuY3Rpb24tPm5hbWUs
ICItd2Via2l0LWNyb3NzLWZhZGUoIikpCiAgICAgICAgIHJldHVybiBwYXJzZUNyb3NzZmFkZSh2
YWx1ZUxpc3QsIHZhbHVlKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgImZpbHRlcigiKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtZmls
dGVyKCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+
bmFtZSwgImZpbHRlcigiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlv
bi0+bmFtZSwgIi13ZWJraXQtZmlsdGVyKCIpKQogICAgICAgICByZXR1cm4gcGFyc2VGaWx0ZXJJ
bWFnZSh2YWx1ZUxpc3QsIHZhbHVlKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShwYXJzZXJWYWx1ZS5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtbmFtZWQtaW1hZ2Uo
IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHBhcnNlclZhbHVlLmZ1bmN0aW9uLT5uYW1l
LCAiLXdlYmtpdC1uYW1lZC1pbWFnZSgiKSkKICAgICAgICAgcmV0dXJuIHBhcnNlTmFtZWRJbWFn
ZSh2YWx1ZUxpc3QsIHZhbHVlKTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTk5MzYsMjUgKzk5
NTcsMjUgQEAgYm9vbCBDU1NQYXJzZXI6OmlzQ29tcG9zaXRlT3BlcmF0b3IoQ1NTVmFsdWVJRCB2
YWx1ZUlEKQogCiBzdGF0aWMgdm9pZCBmaWx0ZXJJbmZvRm9yTmFtZShjb25zdCBDU1NQYXJzZXJT
dHJpbmcmIG5hbWUsIFdlYktpdENTU0ZpbHRlclZhbHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlJiBm
aWx0ZXJUeXBlLCB1bnNpZ25lZCYgbWF4aW11bUFyZ3VtZW50Q291bnQpCiB7Ci0gICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJncmF5c2NhbGUoIikpCisgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJncmF5c2NhbGUoIikpCiAgICAgICAgIGZpbHRlclR5
cGUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6R3JheXNjYWxlRmlsdGVyT3BlcmF0aW9uOwotICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJzZXBpYSgiKSkK
KyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2VwaWEoIikpCiAgICAgICAg
IGZpbHRlclR5cGUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2VwaWFGaWx0ZXJPcGVyYXRpb247
Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgInNhdHVy
YXRlKCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzYXR1cmF0ZSgi
KSkKICAgICAgICAgZmlsdGVyVHlwZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpTYXR1cmF0ZUZp
bHRlck9wZXJhdGlvbjsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiaHVlLXJvdGF0ZSgiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAiaHVlLXJvdGF0ZSgiKSkKICAgICAgICAgZmlsdGVyVHlwZSA9IFdlYktpdENTU0ZpbHRl
clZhbHVlOjpIdWVSb3RhdGVGaWx0ZXJPcGVyYXRpb247Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImludmVydCgiKSkKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShuYW1lLCAiaW52ZXJ0KCIpKQogICAgICAgICBmaWx0ZXJUeXBlID0gV2Vi
S2l0Q1NTRmlsdGVyVmFsdWU6OkludmVydEZpbHRlck9wZXJhdGlvbjsKLSAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAib3BhY2l0eSgiKSkKKyAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAib3BhY2l0eSgiKSkKICAgICAgICAgZmlsdGVy
VHlwZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpPcGFjaXR5RmlsdGVyT3BlcmF0aW9uOwotICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJicmlnaHRuZXNz
KCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJicmlnaHRuZXNzKCIp
KQogICAgICAgICBmaWx0ZXJUeXBlID0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkJyaWdodG5lc3NG
aWx0ZXJPcGVyYXRpb247Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgImNvbnRyYXN0KCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJjb250cmFzdCgiKSkKICAgICAgICAgZmlsdGVyVHlwZSA9IFdlYktpdENTU0ZpbHRlclZh
bHVlOjpDb250cmFzdEZpbHRlck9wZXJhdGlvbjsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiYmx1cigiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAiYmx1cigiKSkKICAgICAgICAgZmlsdGVyVHlwZSA9IFdlYktpdENTU0Zp
bHRlclZhbHVlOjpCbHVyRmlsdGVyT3BlcmF0aW9uOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJkcm9wLXNoYWRvdygiKSkgeworICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJkcm9wLXNoYWRvdygiKSkgewogICAgICAgICBmaWx0
ZXJUeXBlID0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb247
CiAgICAgICAgIG1heGltdW1Bcmd1bWVudENvdW50ID0gNDsgIC8vIHgtb2Zmc2V0LCB5LW9mZnNl
dCwgYmx1ci1yYWRpdXMsIGNvbG9yIC0tIHNwcmVhZCBhbmQgaW5zZXQgc3R5bGUgbm90IGFsbG93
ZWQuCiAgICAgfQpAQCAtMTAwOTUsMTEgKzEwMTE2LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZpbHRlcihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVlPiYg
cmVzCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogc3RhdGljIGJvb2wgdmFsaWRGbG93TmFtZShj
b25zdCBTdHJpbmcmIGZsb3dOYW1lKQogewotICAgIHJldHVybiAhKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGZsb3dOYW1lLCAiYXV0byIpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGZsb3dOYW1lLCAiZGVmYXVsdCIpCi0gICAgICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZsb3dOYW1lLCAiaW5oZXJpdCIpCi0gICAgICAgIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZsb3dOYW1lLCAiaW5pdGlhbCIpCi0gICAgICAg
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZsb3dOYW1lLCAibm9uZSIpKTsKKyAg
ICByZXR1cm4gIShlcXVhbElnbm9yaW5nQ2FzZShmbG93TmFtZSwgImF1dG8iKQorICAgICAgICAg
ICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmxvd05hbWUsICJkZWZhdWx0IikKKyAgICAgICAgICAg
IHx8IGVxdWFsSWdub3JpbmdDYXNlKGZsb3dOYW1lLCAiaW5oZXJpdCIpCisgICAgICAgICAgICB8
fCBlcXVhbElnbm9yaW5nQ2FzZShmbG93TmFtZSwgImluaXRpYWwiKQorICAgICAgICAgICAgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoZmxvd05hbWUsICJub25lIikpOwogfQogI2VuZGlmCiAKQEAgLTEy
MzQzLDcgKzEyMzY0LDcgQEAgcmVzdGFydEFmdGVyQ29tbWVudDoKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fcGFyc2luZ01vZGUgPT0g
TnRoQ2hpbGRNb2RlICYmIG1fdG9rZW4gPT0gSURFTlQgJiYgeXlsdmFsLT5zdHJpbmcubGVuZ3Ro
KCkgPT0gMiAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh5eWx2YWwtPnN0cmluZywg
Im9mIikpIHsKKyAgICAgICAgaWYgKG1fcGFyc2luZ01vZGUgPT0gTnRoQ2hpbGRNb2RlICYmIG1f
dG9rZW4gPT0gSURFTlQgJiYgeXlsdmFsLT5zdHJpbmcubGVuZ3RoKCkgPT0gMiAmJiB5eWx2YWwt
PnN0cmluZy5lcXVhbElnbm9yaW5nQ2FzZSgib2YiKSkgewogICAgICAgICAgICAgbV9wYXJzaW5n
TW9kZSA9IE5vcm1hbE1vZGU7CiAgICAgICAgICAgICBtX3Rva2VuID0gTlRIQ0hJTERTRUxFQ1RP
UlNFUEFSQVRPUjsKICAgICAgICAgfQpAQCAtMTI2MjYsNyArMTI2NDcsNyBAQCByZXN0YXJ0QWZ0
ZXJDb21tZW50OgogICAgICAgICAgICAgcGFyc2VJZGVudGlmaWVyKHJlc3VsdCwgeXlsdmFsLT5z
dHJpbmcsIGhhc0VzY2FwZSk7CiAgICAgICAgICAgICBtX3Rva2VuID0gSURFTlQ7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKG1fcGFyc2luZ01vZGUgPT0gTnRoQ2hpbGRNb2RlICYmIG1fdG9rZW4g
PT0gSURFTlQgJiYgeXlsdmFsLT5zdHJpbmcubGVuZ3RoKCkgPT0gMiAmJiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh5eWx2YWwtPnN0cmluZywgIm9mIikpIHsKKyAgICAgICAgaWYgKG1f
cGFyc2luZ01vZGUgPT0gTnRoQ2hpbGRNb2RlICYmIG1fdG9rZW4gPT0gSURFTlQgJiYgeXlsdmFs
LT5zdHJpbmcubGVuZ3RoKCkgPT0gMiAmJiB5eWx2YWwtPnN0cmluZy5lcXVhbElnbm9yaW5nQ2Fz
ZSgib2YiKSkgewogICAgICAgICAgICAgbV9wYXJzaW5nTW9kZSA9IE5vcm1hbE1vZGU7CiAgICAg
ICAgICAgICBtX3Rva2VuID0gTlRIQ0hJTERTRUxFQ1RPUlNFUEFSQVRPUjsKICAgICAgICAgfQpA
QCAtMTM2MjEsMTAgKzEzNjQyLDggQEAgYm9vbCBpc1ZhbGlkTnRoVG9rZW4oY29uc3QgQ1NTUGFy
c2VyU3RyaW5nJiB0b2tlbikKICAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGUge2lkZW50fSBydWxl
IHByZWNlZGVzIHRoZSB7bnRofSBydWxlLCBzb21lIG9mIHRob3NlCiAgICAgLy8gdG9rZW5zIGFy
ZSBpZGVudGlmaWVkIGFzIHN0cmluZyBsaXRlcmFsLiBGdXJ0aGVybW9yZSB3ZSBuZWVkIHRvIGFj
Y2VwdAogICAgIC8vICJvZGQiIGFuZCAiZXZlbiIgd2hpY2ggZG9lcyBub3QgbWF0Y2ggdG8gYW4r
Yi4KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJvZGQi
KQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgImV2ZW4i
KQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm4iKQot
ICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIi1uIik7Cisg
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLCAib2RkIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UodG9rZW4sICJldmVuIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodG9rZW4s
ICJuIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodG9rZW4sICItbiIpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IGU4ZjIwZTZkMWI3OWQxNTY0ZDI4NGM1
ZGEzMDMzYmM2NTYwOTUxMmQuLmZkOWI5ZDU0ZDA0NzhiOGY5ZDdiMmY3NDZhNDUyNjcyMGM2YWZi
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xODIsMTEgKzE4
MiwxMSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFs
dWUoKQogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpCiB7CiAg
ICAgQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc1R5cGUgcHNldWRvVHlwZTsKLSAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHNldWRvVHlwZVN0cmluZywgImZpcnN0Iikp
CisgICAgaWYgKHBzZXVkb1R5cGVTdHJpbmcuZXF1YWxJZ25vcmluZ0Nhc2UoImZpcnN0IikpCiAg
ICAgICAgIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzRmlyc3Q7Ci0g
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHNldWRvVHlwZVN0cmlu
ZywgImxlZnQiKSkKKyAgICBlbHNlIGlmIChwc2V1ZG9UeXBlU3RyaW5nLmVxdWFsSWdub3JpbmdD
YXNlKCJsZWZ0IikpCiAgICAgICAgIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVk
b0NsYXNzTGVmdDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
c2V1ZG9UeXBlU3RyaW5nLCAicmlnaHQiKSkKKyAgICBlbHNlIGlmIChwc2V1ZG9UeXBlU3RyaW5n
LmVxdWFsSWdub3JpbmdDYXNlKCJyaWdodCIpKQogICAgICAgICBwc2V1ZG9UeXBlID0gQ1NTU2Vs
ZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc1JpZ2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggZWNiNzlhYzUzYWQ0
YjliOTRmNmFiZmZlZjZkMWUzNDRiZTM1NGI4My4uY2U5YjUzMjA3MWM1N2I1ZDA0YjkxOWI2NTBl
MjFjOWM2NDgzMWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMTA3
LDggKzEwNyw2IEBAIHN0cnVjdCBDU1NQYXJzZXJTdHJpbmcgewogICAgIGJvb2wgbV9pczhCaXQ7
CiB9OwogCi10ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgY29uc3QgY2hhciAoJmxvd2VyY2Fz
ZUxldHRlcnMpW2xlbmd0aF0pOwotCiBzdHJ1Y3QgQ1NTUGFyc2VyRnVuY3Rpb247CiBzdHJ1Y3Qg
Q1NTUGFyc2VyVmFyaWFibGU7CiAKQEAgLTI3NywxMiArMjc1LDYgQEAgaW5saW5lIHZvaWQgQ1NT
UGFyc2VyVmFsdWU6OnNldEZyb21WYWx1ZUxpc3Qoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclZh
bHVlTGlzdD4KICAgICB0aGlzLT52YWx1ZUxpc3QgPSB2YWx1ZUxpc3QucmVsZWFzZSgpOwogICAg
IHVuaXQgPSBWYWx1ZUxpc3Q7CiB9Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5l
IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQ1NTUGFyc2VyU3RyaW5n
JiBzdHJpbmcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQotewotICAg
IHJldHVybiBXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKHN0cmluZywg
bG93ZXJjYXNlTGV0dGVycyk7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUuaAppbmRleCAwYjA2NDdjNGE5MGFlZDIxNDlk
OWY2YmZiMjk5YjMxMTlkYWU2MmIzLi5kMjc1M2JlMDBlNzgyYzJlZTUxYzY1NzFkOGY0NmUyMDY4
OWZkNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEZXBlbmRl
bnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURlcGVuZGVudFZh
bHVlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1
ZV9oCiAjZGVmaW5lIENTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWVfaAogCisjaW5jbHVkZSAiQ1NT
UGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
TGlzdC5jcHAKaW5kZXggYjdiZGIxMGQyZGRiOWQ4MThlMmI0OTc1MzgzNWZlM2E0NzU3ZDNkOS4u
MjgzNGY2OTllNDE2NGVlN2Y5NDBlNTdiYjBkMWIzMTc2M2E4OGZlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIHJlcG9ydE1lZGlhUXVlcnlXYXJu
aW5nSWZOZWVkZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBNZWRpYVF1ZXJ5U2V0KiBtZQog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVlcnlDb3VudDsgKytpKSB7CiAgICAgICAgIGNv
bnN0IE1lZGlhUXVlcnkqIHF1ZXJ5ID0gbWVkaWFRdWVyaWVzW2ldLmdldCgpOwogICAgICAgICBT
dHJpbmcgbWVkaWFUeXBlID0gcXVlcnktPm1lZGlhVHlwZSgpOwotICAgICAgICBpZiAoIXF1ZXJ5
LT5pZ25vcmVkKCkgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZSwg
InByaW50IikpIHsKKyAgICAgICAgaWYgKCFxdWVyeS0+aWdub3JlZCgpICYmICFlcXVhbElnbm9y
aW5nQ2FzZShtZWRpYVR5cGUsICJwcmludCIpKSB7CiAgICAgICAgICAgICBhdXRvJiBleHByZXNz
aW9ucyA9IHF1ZXJ5LT5leHByZXNzaW9ucygpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBleHByZXNzaW9ucy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgICAgIGNvbnN0
IE1lZGlhUXVlcnlFeHAqIGV4cCA9IGV4cHJlc3Npb25zLmF0KGopLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDk5YjU0YWUwNzM5ODY0YjNk
ZjI5YWVlZjEwNjQzYzBiOTMyOTAyMjMuLjQ5ZmYwMjIzNTllNGJlNGEzZmZlMWI3ZTdlNGE0ZmU2
ZTM5ZmZiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjp+TWVkaWFRdWVyeUV2YWx1
YXRvcigpCiBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlwZU1hdGNoKGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlVG9NYXRjaCkgY29uc3QKIHsKICAgICByZXR1cm4gbWVkaWFUeXBlVG9N
YXRjaC5pc0VtcHR5KCkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWVkaWFUeXBlVG9NYXRjaCwgImFsbCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1l
ZGlhVHlwZVRvTWF0Y2gsICJhbGwiKQogICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZWRp
YVR5cGVUb01hdGNoLCBtX21lZGlhVHlwZSk7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29s
IE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlwZU1hdGNoU3BlY2lmaWMoY29uc3QgY2hhciog
bWVkaWFUeXBlVG9NYXRjaCkgYwogICAgIC8vIExpa2UgbWVkaWFUeXBlTWF0Y2gsIGJ1dCB3aXRo
b3V0IHRoZSBzcGVjaWFsIGNhc2VzIGZvciAiIiBhbmQgImFsbCIuCiAgICAgQVNTRVJUKG1lZGlh
VHlwZVRvTWF0Y2gpOwogICAgIEFTU0VSVChtZWRpYVR5cGVUb01hdGNoWzBdICE9ICdcMCcpOwot
ICAgIEFTU0VSVCghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhtZWRp
YVR5cGVUb01hdGNoKSwgImFsbCIpKTsKKyAgICBBU1NFUlQoIWVxdWFsSWdub3JpbmdDYXNlKG1l
ZGlhVHlwZVRvTWF0Y2gsIFN0cmluZygiYWxsIikpKTsKICAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0Nhc2UobWVkaWFUeXBlVG9NYXRjaCwgbV9tZWRpYVR5cGUpOwogfQogCkBAIC0zMzIsOSArMzMy
LDkgQEAgc3RhdGljIGJvb2wgZXZhbFJlc29sdXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBGcmFtZSog
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKICAgICAvLyBpbiB0aGUgcXVlcnkuIFRodXMs
IGlmIGlmIHRoZSBkb2N1bWVudCdzIG1lZGlhIHR5cGUgaXMgInByaW50IiwgdGhlCiAgICAgLy8g
bWVkaWEgdHlwZSBvZiB0aGUgcXVlcnkgd2lsbCBlaXRoZXIgYmUgInByaW50IiBvciAiYWxsIi4K
ICAgICBTdHJpbmcgbWVkaWFUeXBlID0gdmlldy0+bWVkaWFUeXBlKCk7Ci0gICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZSwgInNjcmVlbiIpKQorICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGUsICJzY3JlZW4iKSkKICAgICAgICAgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBmcmFtZS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1lZGlhVHlwZSwgInByaW50IikpIHsK
KyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5cGUsICJwcmludCIpKSB7CiAg
ICAgICAgIC8vIFRoZSByZXNvbHV0aW9uIG9mIGltYWdlcyB3aGlsZSBwcmludGluZyBzaG91bGQg
bm90IGRlcGVuZCBvbiB0aGUgZHBpCiAgICAgICAgIC8vIG9mIHRoZSBzY3JlZW4uIFVudGlsIHdl
IHN1cHBvcnQgcHJvcGVyIHdheXMgb2YgcXVlcnlpbmcgdGhpcyBpbmZvCiAgICAgICAgIC8vIHdl
IHVzZSAzMDBweCB3aGljaCBpcyBjb25zaWRlcmVkIG1pbmltdW0gZm9yIGN1cnJlbnQgcHJpbnRl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JQc2V1ZG9UeXBlTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmgKaW5kZXggN2Yx
YjdjNDMyN2Y4MWI4OGM3YTgzYjA2YTIzZGQ4M2Q5NGZiOGU3Yy4uOGQ4MWFjZWRlNTExZTMwZDQ0
MDc3MWM2MDZhNmQ0ZjQ4M2Y1YWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yUHNldWRvVHlwZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvclBz
ZXVkb1R5cGVNYXAuaApAQCAtMjYsMTIgKzI2LDExIEBACiAjaWZuZGVmIFNlbGVjdG9yUHNldWRv
VHlwZU1hcF9oCiAjZGVmaW5lIFNlbGVjdG9yUHNldWRvVHlwZU1hcF9oCiAKKyNpbmNsdWRlICJD
U1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0cnVjdCBDU1NQYXJzZXJTdHJpbmc7Ci0KIHN0cnVjdCBQc2V1ZG9DbGFz
c09yQ29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQgewogICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1R5cGUgcHNldWRvQ2xhc3M7CiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBl
IGNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCmluZGV4IDM5NWJlOTEwZTJmNjkxYzgzNDBlYjFmYmM2MmJlMDU0ZDdh
MzMzODEuLmY2ZjczMTY0YzExYzcwNDdiNjYzNzIyZGJmYThjMWE3YjNmNTQxNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTEwMjUsNyArMTAyNSw3
IEBAIGlubGluZSBGb250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5CiAjaWYgUExBVEZPUk0oSU9TKQogaW5saW5lIGJv
b2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFN0cmluZ1Zh
bHVlKCksICJub25lIik7CisgICAgcmV0dXJuICFlcXVhbElnbm9yaW5nQ2FzZShkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFN0cmluZ1ZhbHVlKCksICJub25lIik7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVk
b0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
bWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weQppbmRl
eCA2M2NmZmU0ZGI3Y2YzNmMwM2M2YzE1MmUyZDczMTQwNDNlY2RiMWQzLi5hNTZmOGEyZWE0ZTkx
YzkzOTg5M2MzYjRhZTkwOGE4NGRjYmU5MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRp
YmlsaXR5RWxlbWVudE1hcC5weQpAQCAtOTEsOCArOTEsNiBAQCBvdXRwdXRfZmlsZS53cml0ZSgi
IiIKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWxlY3RvclBzZXVkb1R5cGVNYXAu
aCIKIAotI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgotCiAjaWYgZGVmaW5lZChfX2NsYW5n
X18pCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggMTU0NzliZDYwMDgxZWQ5NGMyMTNhZThlZDlkOWNmMjIzYzk0NTJmZC4uOWU0ZWZkMDhkMTI5
NDRmOGM2MDJjZGI4MWY5YzI2YTJiMDg0NTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0zMzQyLDcgKzMzNDIsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50
cygpCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5
Lgogdm9pZCBzZXRQYXJzZXJGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBEb2N1bWVudCogZG9jdW1lbnQsIHZvaWQqKQogewotICAgIGlmIChrZXkgPT0gInRl
bGVwaG9uZSIgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJubyIpKQor
ICAgIGlmIChrZXkgPT0gInRlbGVwaG9uZSIgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJu
byIpKQogICAgICAgICBkb2N1bWVudC0+c2V0SXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dl
ZChmYWxzZSk7CiB9CiAKQEAgLTMzNzAsMTMgKzMzNzAsMTMgQEAgdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5KQogCiAgICAgLy8gTm90ZSB0
aGF0IHdlJ3JlIHN1cHBvcnRpbmcgYm90aCB0aGUgc3RhbmRhcmQgYW5kIGxlZ2FjeSBrZXl3b3Jk
cyBmb3IgcmVmZXJyZXIKICAgICAvLyBwb2xpY2llcywgYXMgZGVmaW5lZCBieSBodHRwOi8vd3d3
LnczLm9yZy9UUi9yZWZlcnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeS1kZWxpdmVyeS1tZXRh
Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVy
cmVyIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibmV2ZXIiKSkK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocG9saWN5LCAibm8tcmVmZXJyZXIiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShwb2xpY3ksICJuZXZlciIpKQogICAgICAgICBzZXRSZWZlcnJlclBvbGlj
eShSZWZlcnJlclBvbGljeU5ldmVyKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNhZmUtdXJsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocG9saWN5LCAiYWx3YXlzIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UocG9saWN5LCAidW5zYWZlLXVybCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHBvbGljeSwgImFs
d2F5cyIpKQogICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeUFsd2F5cyk7
Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAib3Jp
Z2luIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocG9saWN5LCAib3JpZ2luIikp
CiAgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5T3JpZ2luKTsKLSAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJuby1yZWZlcnJl
ci13aGVuLWRvd25ncmFkZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGlj
eSwgImRlZmF1bHQiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwb2xpY3ksICJu
by1yZWZlcnJlci13aGVuLWRvd25ncmFkZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHBvbGljeSwg
ImRlZmF1bHQiKSkKICAgICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3lEZWZh
dWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNldCByZWZlcnJl
ciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUgb2YgJ25vLXJl
ZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScsIG9yICd1bnNh
ZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwpAQCAtNDE2MSwyMSArNDE2
MSwyMSBAQCBSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIFRoZSBmb2xsb3dpbmcgc3RyaW5ncyBh
cmUgdGhlIG9uZXMgZnJvbSB0aGUgRE9NIHNwZWNpZmljYXRpb24KICAgICAvLyA8aHR0cHM6Ly9k
b20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9jdW1lbnQtY3JlYXRlZXZlbnQ+LgogCi0gICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJjdXN0b21ldmVudCIpKQorICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJjdXN0b21ldmVudCIpKQogICAgICAg
ICByZXR1cm4gQ3VzdG9tRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh0eXBlLCAiZXZlbnQiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAiZXZlbnRzIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImh0bWxldmVudHMiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
ZXZlbnQiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJldmVudHMiKSB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJodG1sZXZlbnRzIikpCiAgICAgICAgIHJldHVybiBF
dmVudDo6Y3JlYXRlKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5
cGUsICJrZXlib2FyZGV2ZW50IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImtleWJvYXJkZXZlbnRzIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgImtleWJvYXJkZXZlbnQiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJrZXli
b2FyZGV2ZW50cyIpKQogICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKCk7Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJtZXNzYWdlZXZlbnQi
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibWVzc2FnZWV2ZW50Iikp
CiAgICAgICAgIHJldHVybiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOwotICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibW91c2VldmVudCIpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJtb3VzZWV2ZW50cyIpKQorICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHR5cGUsICJtb3VzZWV2ZW50IikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAibW91c2VldmVudHMiKSkKICAgICAgICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNy
ZWF0ZSgpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidWll
dmVudCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ1aWV2ZW50cyIp
KQorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ1aWV2ZW50IikgfHwgZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidWlldmVudHMiKSkKICAgICAgICAgcmV0dXJuIFVJ
RXZlbnQ6OmNyZWF0ZSgpOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRvdWNoZXZlbnQiKSkKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidG91Y2hldmVudCIpKQogICAgICAgICByZXR1
cm4gVG91Y2hFdmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKIApAQCAtNDE4NSw3ICs0MTg1LDcgQEAg
UmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGVyZSBpcyBubyBwcm92
aXNpb24gZm9yIGluaXRpYWxpemluZyB0aGUgZXZlbnQgb25jZSBpdCBpcyBjcmVhdGVkLAogICAg
IC8vIHRoZXJlIGlzIG5vIHByYWN0aWNhbCB2YWx1ZSBpbiB0aGlzIGZlYXR1cmUuCiAKLSAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInN2Z3pvb21ldmVudHMiKSkK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAic3Znem9vbWV2ZW50cyIpKQog
ICAgICAgICByZXR1cm4gU1ZHWm9vbUV2ZW50OjpjcmVhdGUoKTsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgc3RyaW5ncyBhcmUgZm9yIGV2ZW50IGNsYXNzZXMgd2hlcmUgV2ViS2l0IHN1cHBsaWVz
IGFuIGluaXQgZnVuY3Rpb24uCkBAIC00MTk1LDI1ICs0MTk1LDI1IEBAIFJlZlB0cjxFdmVudD4g
RG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgLy8gRklYTUU6IEZvciBlYWNoIG9mIHRoZSBzdHJpbmdzIGJlbG93LCBwcm92ZSB0
aGVyZSBpcyBubyBjb250ZW50IGRlcGVuZGluZyBvbiBpdCBhbmQgcmVtb3ZlCiAgICAgLy8gYm90
aCB0aGUgc3RyaW5nIGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbml0IGZ1bmN0aW9uIGZvciB0aGF0
IGNsYXNzLgogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJj
b21wb3NpdGlvbmV2ZW50IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
ImNvbXBvc2l0aW9uZXZlbnQiKSkKICAgICAgICAgcmV0dXJuIENvbXBvc2l0aW9uRXZlbnQ6OmNy
ZWF0ZSgpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiaGFz
aGNoYW5nZWV2ZW50IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImhh
c2hjaGFuZ2VldmVudCIpKQogICAgICAgICByZXR1cm4gSGFzaENoYW5nZUV2ZW50OjpjcmVhdGUo
KTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgIm11dGF0aW9u
ZXZlbnQiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibXV0YXRpb25l
dmVudHMiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibXV0YXRpb25l
dmVudCIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgIm11dGF0aW9uZXZlbnRzIikp
CiAgICAgICAgIHJldHVybiBNdXRhdGlvbkV2ZW50OjpjcmVhdGUoKTsKLSAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgIm92ZXJmbG93ZXZlbnQiKSkKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAib3ZlcmZsb3dldmVudCIpKQogICAgICAgICBy
ZXR1cm4gT3ZlcmZsb3dFdmVudDo6Y3JlYXRlKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHR5cGUsICJzdG9yYWdlZXZlbnQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZSh0eXBlLCAic3RvcmFnZWV2ZW50IikpCiAgICAgICAgIHJldHVybiBTdG9yYWdl
RXZlbnQ6OmNyZWF0ZSgpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0
eXBlLCAidGV4dGV2ZW50IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZSwg
InRleHRldmVudCIpKQogICAgICAgICByZXR1cm4gVGV4dEV2ZW50OjpjcmVhdGUoKTsKLSAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgIndoZWVsZXZlbnQiKSkKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAid2hlZWxldmVudCIpKQogICAgICAg
ICByZXR1cm4gV2hlZWxFdmVudDo6Y3JlYXRlKCk7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiZGV2
aWNlbW90aW9uZXZlbnQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
ZGV2aWNlbW90aW9uZXZlbnQiKSkKICAgICAgICAgcmV0dXJuIERldmljZU1vdGlvbkV2ZW50Ojpj
cmVhdGUoKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImRl
dmljZW9yaWVudGF0aW9uZXZlbnQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0
eXBlLCAiZGV2aWNlb3JpZW50YXRpb25ldmVudCIpKQogICAgICAgICByZXR1cm4gRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKIApAQCAtNTMzOCw3ICs1MzM4LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdEROU1ByZWZldGNoKCkKIAogdm9pZCBEb2N1bWVudDo6cGFyc2VE
TlNQcmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wp
CiB7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRuc1ByZWZldGNoQ29u
dHJvbCwgIm9uIikgJiYgIW1faGF2ZUV4cGxpY2l0bHlEaXNhYmxlZEROU1ByZWZldGNoKSB7Cisg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRuc1ByZWZldGNoQ29udHJvbCwgIm9uIikgJiYgIW1f
aGF2ZUV4cGxpY2l0bHlEaXNhYmxlZEROU1ByZWZldGNoKSB7CiAgICAgICAgIG1faXNETlNQcmVm
ZXRjaEVuYWJsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDliNmQwODY1ZDMyNmUwZTUzYzMxNGZhMWIzYTI3YTFjYjIyNzg3NDQuLjQz
YzMxMjI2NDZjMzkyMzMxMDllOGQxOTdhN2JmYzQ2MDJlM2Y5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTI4NzMsMTEgKzI4NzMsMTEgQEAgdm9pZCBFbGVtZW50OjpyZXF1ZXN0UG9pbnRl
ckxvY2soKQogU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIEVsZW1lbnQ6OnNwZWxsY2hlY2tBdHRy
aWJ1dGVTdGF0ZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZh
c3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcGVsbGNoZWNrQXR0cik7Ci0gICAgaWYgKHZhbHVl
LmlzTnVsbCgpKQorICAgIGlmICh2YWx1ZSA9PSBudWxsQXRvbSkKICAgICAgICAgcmV0dXJuIFNw
ZWxsY2hlY2tBdHRyaWJ1dGVEZWZhdWx0OwotICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ0cnVlIikpCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAi
IikpCiAgICAgICAgIHJldHVybiBTcGVsbGNoZWNrQXR0cmlidXRlVHJ1ZTsKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJmYWxzZSIpKQorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgIHJldHVybiBTcGVsbGNoZWNr
QXR0cmlidXRlRmFsc2U7CiAKICAgICByZXR1cm4gU3BlbGxjaGVja0F0dHJpYnV0ZURlZmF1bHQ7
CkBAIC0zMzcyLDcgKzMzNzIsNyBAQCB2b2lkIEVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcygpCiAKIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdAog
ewotICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFzdEdldEF0dHJp
YnV0ZShyb2xlQXR0ciksICJpbWciKTsKKyAgICByZXR1cm4gIWVxdWFsSWdub3JpbmdDYXNlKGZh
c3RHZXRBdHRyaWJ1dGUocm9sZUF0dHIpLCAiaW1nIik7CiB9CiAKIFN0cmluZyBFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5s
aW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuY3BwCmluZGV4IGU2ZTdhY2RiMDBhMDE0ZmI3OTU4ZDc2YzUyODNiZTA5MTcwMzY1
ZjEuLjQxYTIwNTY4NTAyNTUxODRiYzhhMjVlZmJkNjhiNmFkMmY3Njk5NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xMTQsMTMgKzExNCwx
MCBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y2xlYXJTaGVldCgpCiAKIGlubGluZSBi
b29sIGlzVmFsaWRDU1NDb250ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUpCiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gY3NzQ29udGVudFR5cGUoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIE1JTUUgdHlwZXMgcmVhbGx5IGJlIGNhc2Ugc2Vuc2l0
aXZlIGluIFhNTCBkb2N1bWVudHM/IERvZXNuJ3Qgc2VlbSBsaWtlIHRoZXkgc2hvdWxkLAotICAg
IC8vIGV2ZW4gdGhvdWdoIG90aGVyIHRoaW5ncyBhcmUgY2FzZSBzZW5zaXRpdmUgaW4gdGhhdCBj
b250ZXh0LiBNSU1FIHR5cGVzIHNob3VsZCBuZXZlciBiZSBjYXNlIHNlbnNpdGl2ZS4KLSAgICAv
LyBXZSBzaG91bGQgdmVyaWZ5IHRoaXMgYW5kIHRoZW4gcmVtb3ZlIHRoZSBpc0hUTUxFbGVtZW50
IGNoZWNrIGhlcmUuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gY3NzQ29udGVudFR5cGUoInRleHQvY3NzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpID8gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvY3NzIikgOiB0eXBlID09IGNzc0NvbnRl
bnRUeXBlOworICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSA/IGVxdWFsSWdub3Jp
bmdDYXNlKHR5cGUsIGNzc0NvbnRlbnRUeXBlKSA6IHR5cGUgPT0gY3NzQ29udGVudFR5cGU7CiB9
CiAKIHZvaWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
aW5kZXggZDljNTZmZTg0MjdjOGU5NzUwNGViMWMzYTgxYjdiN2QzOTIzNmI4NC4uMTg3OTFmMmZj
NTMzYzAyNjJhNzZkODBmOTVlMTM1MDlhNjc2NjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVz
dFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKICAgICAgICAgU3RyaW5nIGNyb3NzT3Jp
Z2luTW9kZSA9IG1fZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3Nvcmln
aW5BdHRyKTsKICAgICAgICAgaWYgKCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgIG1fcmVxdWVzdFVzZXNBY2Nlc3NDb250cm9sID0gdHJ1ZTsKLSAgICAgICAgICAgIFN0
b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShjcm9zc09yaWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgICAgICAgICBT
dG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzID0gZXF1YWxJZ25vcmluZ0Nhc2UoY3Jv
c3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
IDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgICAgICAgICAgdXBkYXRlUmVxdWVz
dEZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fZWxl
bWVudC5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIGFsbG93Q3JlZGVudGlhbHMpOwogICAg
ICAgICB9CiAgICAgICAgIHJlcXVlc3Quc2V0Q2hhcnNldChzY3JpcHRDaGFyc2V0KCkpOwpAQCAt
MzcxLDExICszNzEsMTEgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojppc1NjcmlwdEZvckV2ZW50U3Vw
cG9ydGVkKCkgY29uc3QKICAgICBTdHJpbmcgZm9yQXR0cmlidXRlID0gZm9yQXR0cmlidXRlVmFs
dWUoKTsKICAgICBpZiAoIWV2ZW50QXR0cmlidXRlLmlzTnVsbCgpICYmICFmb3JBdHRyaWJ1dGUu
aXNOdWxsKCkpIHsKICAgICAgICAgZm9yQXR0cmlidXRlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGZvckF0dHJpYnV0ZSk7Ci0gICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZm9yQXR0cmlidXRlLCAid2luZG93IikpCisgICAgICAgIGlmICghZXF1
YWxJZ25vcmluZ0Nhc2UoZm9yQXR0cmlidXRlLCAid2luZG93IikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgZXZlbnRBdHRyaWJ1dGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoZXZlbnRBdHRyaWJ1dGUpOwotICAgICAgICBpZiAoIWVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGV2ZW50QXR0cmlidXRlLCAib25sb2FkIikgJiYgIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV2ZW50QXR0cmlidXRlLCAib25sb2FkKCkiKSkKKyAgICAg
ICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShldmVudEF0dHJpYnV0ZSwgIm9ubG9hZCIpICYmICFl
cXVhbElnbm9yaW5nQ2FzZShldmVudEF0dHJpYnV0ZSwgIm9ubG9hZCgpIikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmNwcAppbmRleCAwM2VmNDBjMGIwMGYxMDgxN2I0ODEzNTQ1NzM1NDg4
Zjc5OTZiMTkwLi5jNWQ0MTI0YzUzNWU4MjNkNWRiZjdiNzYxNTU5ZjRhZDhlNDI1MzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcApAQCAtMTA0LDE4ICsxMDQsMTggQEAg
U2FuZGJveEZsYWdzIFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0
cmluZyYgcG9saWN5LCBTdHJpbmcmIGkKIAogICAgICAgICAvLyBUdXJuIG9mZiB0aGUgY29ycmVz
cG9uZGluZyBzYW5kYm94IGZsYWcgaWYgaXQncyBzZXQgYXMgImFsbG93ZWQiLgogICAgICAgICBT
dHJpbmcgc2FuZGJveFRva2VuID0gcG9saWN5LnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQp
OwotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2FuZGJveFRva2Vu
LCAiYWxsb3ctc2FtZS1vcmlnaW4iKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNh
bmRib3hUb2tlbiwgImFsbG93LXNhbWUtb3JpZ2luIikpCiAgICAgICAgICAgICBmbGFncyAmPSB+
U2FuZGJveE9yaWdpbjsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctZm9ybXMiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctZm9ybXMiKSkKICAgICAgICAgICAg
IGZsYWdzICY9IH5TYW5kYm94Rm9ybXM7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHNhbmRib3hUb2tlbiwgImFsbG93LXNjcmlwdHMiKSkgeworICAgICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1zY3JpcHRz
IikpIHsKICAgICAgICAgICAgIGZsYWdzICY9IH5TYW5kYm94U2NyaXB0czsKICAgICAgICAgICAg
IGZsYWdzICY9IH5TYW5kYm94QXV0b21hdGljRmVhdHVyZXM7Ci0gICAgICAgIH0gZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctdG9wLW5h
dmlnYXRpb24iKSkKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzYW5kYm94
VG9rZW4sICJhbGxvdy10b3AtbmF2aWdhdGlvbiIpKQogICAgICAgICAgICAgZmxhZ3MgJj0gflNh
bmRib3hUb3BOYXZpZ2F0aW9uOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzYW5kYm94VG9rZW4sICJhbGxvdy1wb3B1cHMiKSkKKyAgICAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctcG9wdXBzIikpCiAgICAg
ICAgICAgICBmbGFncyAmPSB+U2FuZGJveFBvcHVwczsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2FuZGJveFRva2VuLCAiYWxsb3ctcG9pbnRlci1sb2Nr
IikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNhbmRib3hUb2tlbiwgImFs
bG93LXBvaW50ZXItbG9jayIpKQogICAgICAgICAgICAgZmxhZ3MgJj0gflNhbmRib3hQb2ludGVy
TG9jazsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAobnVtYmVyT2ZUb2tlbkVycm9y
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDExMWQ0MmVk
ODdlMjE4MDMxNThkNTE4Yzk1YWQ1NWRlZjlhN2M0ODEuLmEyYjA0YTdjZTEwYjA0ZmJjMTgzOTgw
OTc0MjhmOGEyOWVkOWQ0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcApAQCAtMzE0LDkgKzMxNCw5IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKGNvbnN0
IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBECiAgICAgLy8g
MykgZGV2aWNlLXdpZHRoIGFuZCBkZXZpY2UtaGVpZ2h0IGFyZSB1c2VkIGFzIGtleXdvcmRzLgog
ICAgIC8vIDQpIE90aGVyIGtleXdvcmRzIGFuZCB1bmtub3duIHZhbHVlcyB0cmFuc2xhdGUgdG8g
MC4wLgogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlU3RyaW5n
LCAiZGV2aWNlLXdpZHRoIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5n
LCAiZGV2aWNlLXdpZHRoIikpCiAgICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVEZXZpY2VXaWR0aDsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlU3RyaW5nLCAiZGV2aWNlLWhlaWdodCIpKQogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlRGV2aWNlSGVpZ2h0OwogCiAgICAgZmxvYXQgdmFsdWUgPSBudW1lcmljUHJl
Zml4KGtleVN0cmluZywgdmFsdWVTdHJpbmcsIGRvY3VtZW50KTsKQEAgLTMzNSwxMyArMzM1LDEz
IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2NhbGVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywg
Y29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywKICAgICAvLyA0KSBkZXZpY2Utd2lkdGggYW5kIGRl
dmljZS1oZWlnaHQgYXJlIHRyYW5zbGF0ZWQgdG8gMTAuMC4KICAgICAvLyA1KSBubyBhbmQgdW5r
bm93biB2YWx1ZXMgYXJlIHRyYW5zbGF0ZWQgdG8gMC4wCiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWVTdHJpbmcsICJ5ZXMiKSkKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWVTdHJpbmcsICJ5ZXMiKSkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlU3RyaW5nLCAibm8iKSkKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJubyIpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWVTdHJpbmcsICJk
ZXZpY2Utd2lkdGgiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJk
ZXZpY2Utd2lkdGgiKSkKICAgICAgICAgcmV0dXJuIDEwOwotICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZVN0cmluZywgImRldmljZS1oZWlnaHQiKSkKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWVTdHJpbmcsICJkZXZpY2UtaGVpZ2h0IikpCiAgICAgICAg
IHJldHVybiAxMDsKIAogICAgIGZsb2F0IHZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXlTdHJpbmcs
IHZhbHVlU3RyaW5nLCBkb2N1bWVudCk7CkBAIC0zNjEsMTMgKzM2MSwxMyBAQCBzdGF0aWMgZmxv
YXQgZmluZEJvb2xlYW5WYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5n
JiB2YWx1ZVN0cmluZwogICAgIC8vIE51bWJlcnMgPj0gMSwgbnVtYmVycyA8PSAtMSwgZGV2aWNl
LXdpZHRoIGFuZCBkZXZpY2UtaGVpZ2h0IGFyZSBtYXBwZWQgdG8geWVzLgogICAgIC8vIE51bWJl
cnMgaW4gdGhlIHJhbmdlIDwtMSwgMT4sIGFuZCB1bmtub3duIHZhbHVlcywgYXJlIG1hcHBlZCB0
byBuby4KIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZVN0cmlu
ZywgInllcyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgInllcyIp
KQogICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodmFsdWVTdHJpbmcsICJubyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZVN0
cmluZywgIm5vIikpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh2YWx1ZVN0cmluZywgImRldmljZS13aWR0aCIpKQorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZVN0cmluZywgImRldmljZS13aWR0aCIpKQogICAgICAgICByZXR1
cm4gMTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWVTdHJpbmcs
ICJkZXZpY2UtaGVpZ2h0IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlU3RyaW5n
LCAiZGV2aWNlLWhlaWdodCIpKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGZsb2F0IHZhbHVl
ID0gbnVtZXJpY1ByZWZpeChrZXlTdHJpbmcsIHZhbHVlU3RyaW5nLCBkb2N1bWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA2MmNmN2VjZTVkMDRhNjY3
YTY2MDg3NjBkNmVhZGJkMzM0NzVlZjEzLi5jOTIzNTk4YTQ3NDRkMDBhMzYwZTQ4YmU5ZTAzZWNl
NWRkNWY5NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAg
LTI3OSw5ICsyNzksOSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQ2xlYXJUZXh0KEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdAogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJkaXYiKSkKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWUsICJkaXYiKSkKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0RGVmYXVs
dFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7Ci0gICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJwIikpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJwIikpCiAgICAgICAgIGZyYW1lLmVk
aXRvcigpLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJh
dG9ySXNQKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVJbmRlbnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRCYWNrdGFiKEZyYW1l
JiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpLT5ldmVudEhhbmRsZXIo
KS5oYW5kbGVUZXh0SW5wdXRFdmVudChBU0NJSUxpdGVyYWwoIlx0IiksIGV2ZW50LCBUZXh0RXZl
bnRJbnB1dEJhY2tUYWIpOworICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXHQiLCBldmVudCwgVGV4dEV2ZW50
SW5wdXRCYWNrVGFiKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEhvcml6b250YWxS
dWxlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRI
b3Jpem9udGFsUnVsZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRIVE1MKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBleGVj
dXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgdmFsdWUsIGVtcHR5U3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZXhlY3V0ZUlu
c2VydEZyYWdtZW50KGZyYW1lLCBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3Vt
ZW50KCksIHZhbHVlLCAiIikpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SW1hZ2Uo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVC
cmVhayhGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUoZnJhbWUsIGV2ZW50KS0+ZXZlbnRIYW5kbGVy
KCkuaGFuZGxlVGV4dElucHV0RXZlbnQoQVNDSUlMaXRlcmFsKCJcbiIpLCBldmVudCwgVGV4dEV2
ZW50SW5wdXRMaW5lQnJlYWspOworICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUoZnJhbWUsIGV2
ZW50KS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIFRl
eHRFdmVudElucHV0TGluZUJyZWFrKTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNh
c2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKICAgICAgICAgLy8gRG9lc24ndCBz
Y3JvbGwgdG8gbWFrZSB0aGUgc2VsZWN0aW9uIHZpc2libGUsIG9yIG1vZGlmeSB0aGUga2lsbCBy
aW5nLgpAQCAtNTAzLDcgKzUwMyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5lQnJl
YWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyCiBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0TmV3bGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBGcmFtZSogdGFyZ2V0RnJh
bWUgPSBXZWJDb3JlOjp0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpOwotICAgIHJldHVybiB0YXJn
ZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlVGV4dElucHV0RXZlbnQoQVNDSUlMaXRlcmFs
KCJcbiIpLCBldmVudCwgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRl
eHRFdmVudElucHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CisgICAgcmV0
dXJuIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4i
LCBldmVudCwgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVu
dElucHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVJbnNlcnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTI3LDcgKzUyNyw3
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRU
YWIoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHRhcmdldEZyYW1lKGZyYW1lLCBldmVudCktPmV2ZW50
SGFuZGxlcigpLmhhbmRsZVRleHRJbnB1dEV2ZW50KEFTQ0lJTGl0ZXJhbCgiXHQiKSwgZXZlbnQp
OworICAgIHJldHVybiB0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpLT5ldmVudEhhbmRsZXIoKS5o
YW5kbGVUZXh0SW5wdXRFdmVudCgiXHQiLCBldmVudCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVJbnNlcnRUZXh0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNTQ1LDIyICs1NDUsMjIgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZUluc2VydFVub3JkZXJlZExpc3QoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUp1c3RpZnlDZW50ZXIoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIHJldHVybiBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0
QWN0aW9uQ2VudGVyLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRlcmFsKCJjZW50ZXIi
KSk7CisgICAgcmV0dXJuIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3VyY2Us
IEVkaXRBY3Rpb25DZW50ZXIsIENTU1Byb3BlcnR5VGV4dEFsaWduLCAiY2VudGVyIik7CiB9CiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVKdXN0aWZ5RnVsbChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4
ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25KdXN0aWZ5
LCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRlcmFsKCJqdXN0aWZ5IikpOworICAgIHJl
dHVybiBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9u
SnVzdGlmeSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJqdXN0aWZ5Iik7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVKdXN0aWZ5TGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4ZWN1dGVBcHBs
eVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25BbGlnbkxlZnQsIENTU1By
b3BlcnR5VGV4dEFsaWduLCBBU0NJSUxpdGVyYWwoImxlZnQiKSk7CisgICAgcmV0dXJuIGV4ZWN1
dGVBcHBseVBhcmFncmFwaFN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25BbGlnbkxlZnQs
IENTU1Byb3BlcnR5VGV4dEFsaWduLCAibGVmdCIpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
SnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhlY3V0ZUFwcGx5UGFyYWdyYXBo
U3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvbkFsaWduUmlnaHQsIENTU1Byb3BlcnR5VGV4
dEFsaWduLCBBU0NJSUxpdGVyYWwoInJpZ2h0IikpOworICAgIHJldHVybiBleGVjdXRlQXBwbHlQ
YXJhZ3JhcGhTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQWxpZ25SaWdodCwgQ1NTUHJv
cGVydHlUZXh0QWxpZ24sICJyaWdodCIpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC0xMDM1LDMxICsxMDM1LDMxIEBAIHN0
YXRpYyBUZXh0RGVjb3JhdGlvbkNoYW5nZSB0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2dsaW5n
KEVkaXRvciYgZWRpdG9yLCBDU1NQCiBzdGF0aWMgYm9vbCBleGVjdXRlU3RyaWtldGhyb3VnaChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgUmVmPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRTdHJpa2VUaHJvdWdoQ2hhbmdlKHRleHREZWNvcmF0aW9u
Q2hhbmdlRm9yVG9nZ2xpbmcoZnJhbWUuZWRpdG9yKCksIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsIEFTQ0lJTGl0ZXJhbCgibGluZS10aHJvdWdoIikpKTsKKyAgICBz
dHlsZS0+c2V0U3RyaWtlVGhyb3VnaENoYW5nZSh0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2ds
aW5nKGZyYW1lLmVkaXRvcigpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LCAibGluZS10aHJvdWdoIikpOwogICAgIC8vIEZJWE1FOiBOZWVkcyBhIG5ldyBFZGl0QWN0
aW9uIQogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIEVkaXRB
Y3Rpb25VbmRlcmxpbmUsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5zZXRTaG91bGRTdHls
ZVdpdGhDU1MoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiZmFsc2UiKSk7
CisgICAgZnJhbWUuZWRpdG9yKCkuc2V0U2hvdWxkU3R5bGVXaXRoQ1NTKCFlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgImZhbHNlIikpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlVXNlQ1NTKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGZyYW1lLmVkaXRvcigpLnNldFNob3VsZFN0
eWxlV2l0aENTUyhlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImZhbHNlIikp
OworICAgIGZyYW1lLmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgImZhbHNlIikpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3Vic2NyaXB0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVRvZ2dsZVN0
eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25TdWJzY3JpcHQsIENTU1Byb3BlcnR5VmVydGlj
YWxBbGlnbiwgQVNDSUlMaXRlcmFsKCJiYXNlbGluZSIpLCBBU0NJSUxpdGVyYWwoInN1YiIpKTsK
KyAgICByZXR1cm4gZXhlY3V0ZVRvZ2dsZVN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25T
dWJzY3JpcHQsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgImJhc2VsaW5lIiwgInN1YiIpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVy
biBleGVjdXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvblN1cGVyc2NyaXB0
LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIEFTQ0lJTGl0ZXJhbCgiYmFzZWxpbmUiKSwgQVND
SUlMaXRlcmFsKCJzdXBlciIpKTsKKyAgICByZXR1cm4gZXhlY3V0ZVRvZ2dsZVN0eWxlKGZyYW1l
LCBzb3VyY2UsIEVkaXRBY3Rpb25TdXBlcnNjcmlwdCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWdu
LCAiYmFzZWxpbmUiLCAic3VwZXIiKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVN3YXBXaXRo
TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKQEAgLTEwODUsMTIgKzEwODUsMTIgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRha2VGaW5k
U3RyaW5nRnJvbVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWEKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZUJvbGQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleGVj
dXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvbkJvbGQsIENTU1Byb3BlcnR5
Rm9udFdlaWdodCwgQVNDSUlMaXRlcmFsKCJub3JtYWwiKSwgQVNDSUlMaXRlcmFsKCJib2xkIikp
OworICAgIHJldHVybiBleGVjdXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlv
bkJvbGQsIENTU1Byb3BlcnR5Rm9udFdlaWdodCwgIm5vcm1hbCIsICJib2xkIik7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleGVj
dXRlVG9nZ2xlU3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFjdGlvbkl0YWxpY3MsIENTU1Byb3Bl
cnR5Rm9udFN0eWxlLCBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpLCBBU0NJSUxpdGVyYWwoIml0YWxp
YyIpKTsKKyAgICByZXR1cm4gZXhlY3V0ZVRvZ2dsZVN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRB
Y3Rpb25JdGFsaWNzLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIm5vcm1hbCIsICJpdGFsaWMiKTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVRyYW5zcG9zZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTExMDIsNyArMTEwMiw3IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVUcmFuc3Bvc2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0CiBzdGF0aWMgYm9vbCBleGVjdXRlVW5kZXJsaW5lKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBSZWY8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKCk7Ci0gICAgVGV4dERlY29yYXRpb25DaGFuZ2UgY2hhbmdlID0gdGV4dERlY29yYXRpb25D
aGFuZ2VGb3JUb2dnbGluZyhmcmFtZS5lZGl0b3IoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwgQVNDSUlMaXRlcmFsKCJ1bmRlcmxpbmUiKSk7CisgICAgVGV4dERl
Y29yYXRpb25DaGFuZ2UgY2hhbmdlID0gdGV4dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGluZyhm
cmFtZS5lZGl0b3IoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwg
InVuZGVybGluZSIpOwogICAgIHN0eWxlLT5zZXRVbmRlcmxpbmVDaGFuZ2UoY2hhbmdlKTsKICAg
ICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5k
ZXJsaW5lLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMTIyLDcgKzExMjIsNyBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlVW5saW5rKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlVW5zY3JpcHQoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIHJldHVybiBleGVjdXRlQXBwbHlTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9u
VW5zY3JpcHQsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQVNDSUlMaXRlcmFsKCJiYXNlbGlu
ZSIpKTsKKyAgICByZXR1cm4gZXhlY3V0ZUFwcGx5U3R5bGUoZnJhbWUsIHNvdXJjZSwgRWRpdEFj
dGlvblVuc2NyaXB0LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sICJiYXNlbGluZSIpOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlVW5zZWxlY3QoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkBAIC0xMzA4LDEyICsxMzA4LDEyIEBAIHN0
YXRpYyBUcmlTdGF0ZSBzdGF0ZU5vbmUoRnJhbWUmLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0
ZSBzdGF0ZUJvbGQoRnJhbWUmIGZyYW1lLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIHN0YXRlU3R5
bGUoZnJhbWUsIENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQVNDSUlMaXRlcmFsKCJib2xkIikpOwor
ICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xk
Iik7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZUl0YWxpYyhGcmFtZSYgZnJhbWUsIEV2ZW50
KikKIHsKLSAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlGb250U3R5bGUs
IEFTQ0lJTGl0ZXJhbCgiaXRhbGljIikpOworICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBD
U1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVPcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTEzMjMsNyArMTMyMyw3IEBA
IHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVyZWRMaXN0KEZyYW1lJiBmcmFtZSwgRXZlbnQqKQog
CiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHJpa2V0aHJvdWdoKEZyYW1lJiBmcmFtZSwgRXZlbnQq
KQogewotICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0LCBBU0NJSUxpdGVyYWwoImxpbmUtdGhyb3VnaCIpKTsKKyAgICBy
ZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwgImxpbmUtdGhyb3VnaCIpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHls
ZVdpdGhDU1MoRnJhbWUmIGZyYW1lLCBFdmVudCopCkBAIC0xMzMzLDEyICsxMzMzLDEyIEBAIHN0
YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFRyaVN0YXRlIHN0YXRlU3Vic2NyaXB0KEZyYW1lJiBmcmFtZSwgRXZlbnQqKQogewot
ICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIEFT
Q0lJTGl0ZXJhbCgic3ViIikpOworICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQcm9w
ZXJ0eVZlcnRpY2FsQWxpZ24sICJzdWIiKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3Vw
ZXJzY3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIHN0YXRlU3R5bGUo
ZnJhbWUsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQVNDSUlMaXRlcmFsKCJzdXBlciIpKTsK
KyAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCAi
c3VwZXIiKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVGV4dFdyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHN0
YXRpYyBUcmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUm
IGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgQVNDSUlMaXRlcmFsKCJ1bmRlcmxpbmUi
KSk7CisgICAgcmV0dXJuIHN0YXRlU3R5bGUoZnJhbWUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlVW5vcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTEzNjgsMjIgKzEzNjgs
MjIgQEAgc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2
ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlSnVzdGlmeUNlbnRlcihGcmFtZSYgZnJhbWUs
IEV2ZW50KikKIHsKLSAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlUZXh0
QWxpZ24sIEFTQ0lJTGl0ZXJhbCgiY2VudGVyIikpOworICAgIHJldHVybiBzdGF0ZVN0eWxlKGZy
YW1lLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgImNlbnRlciIpOwogfQogCiBzdGF0aWMgVHJpU3Rh
dGUgc3RhdGVKdXN0aWZ5RnVsbChGcmFtZSYgZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4g
c3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIEFTQ0lJTGl0ZXJhbCgianVz
dGlmeSIpKTsKKyAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlUZXh0QWxp
Z24sICJqdXN0aWZ5Iik7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZUp1c3RpZnlMZWZ0KEZy
YW1lJiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQ
cm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRlcmFsKCJsZWZ0IikpOworICAgIHJldHVybiBzdGF0
ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgImxlZnQiKTsKIH0KIAogc3RhdGlj
IFRyaVN0YXRlIHN0YXRlSnVzdGlmeVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqKQogewotICAg
IHJldHVybiBzdGF0ZVN0eWxlKGZyYW1lLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQVNDSUlMaXRl
cmFsKCJyaWdodCIpKTsKKyAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTUHJvcGVydHlU
ZXh0QWxpZ24sICJyaWdodCIpOwogfQogCiAvLyBWYWx1ZSBmdW5jdGlvbnMKQEAgLTE0MzUsMTAg
KzE0MzUsMTAgQEAgc3RhdGljIFN0cmluZyB2YWx1ZUZvcm1hdEJsb2NrKEZyYW1lJiBmcmFtZSwg
RXZlbnQqKQogewogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uT3JwaGFu
ZWRDYXJldE9yUmFuZ2UoKSB8fCAhc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4gIiI7CiAgICAgRWxlbWVu
dCogZm9ybWF0QmxvY2tFbGVtZW50ID0gRm9ybWF0QmxvY2tDb21tYW5kOjplbGVtZW50Rm9yRm9y
bWF0QmxvY2tDb21tYW5kKHNlbGVjdGlvbi5maXJzdFJhbmdlKCkuZ2V0KCkpOwogICAgIGlmICgh
Zm9ybWF0QmxvY2tFbGVtZW50KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgcmV0dXJuICIiOwogICAgIHJldHVybiBmb3JtYXRCbG9ja0VsZW1lbnQtPmxvY2FsTmFtZSgp
OwogfQogCkBAIC0xNzQyLDcgKzE3NDIsNyBAQCBTdHJpbmcgRWRpdG9yOjpDb21tYW5kOjp2YWx1
ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50KSBjb25zdAogICAgIGlmICghaXNTdXBwb3J0ZWQoKSB8
fCAhbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChtX2NvbW1hbmQt
PnZhbHVlID09IHZhbHVlTnVsbCAmJiBtX2NvbW1hbmQtPnN0YXRlICE9IHN0YXRlTm9uZSkKLSAg
ICAgICAgcmV0dXJuIG1fY29tbWFuZC0+c3RhdGUoKm1fZnJhbWUsIHRyaWdnZXJpbmdFdmVudCkg
PT0gVHJ1ZVRyaVN0YXRlID8gQVNDSUlMaXRlcmFsKCJ0cnVlIikgOiBBU0NJSUxpdGVyYWwoImZh
bHNlIik7CisgICAgICAgIHJldHVybiBtX2NvbW1hbmQtPnN0YXRlKCptX2ZyYW1lLCB0cmlnZ2Vy
aW5nRXZlbnQpID09IFRydWVUcmlTdGF0ZSA/ICJ0cnVlIiA6ICJmYWxzZSI7CiAgICAgcmV0dXJu
IG1fY29tbWFuZC0+dmFsdWUoKm1fZnJhbWUsIHRyaWdnZXJpbmdFdmVudCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA0ODNhNGQ0NDAwYTQ0NWY1OWEy
Y2M4MzRmZjgyZDkxN2E5NTJmZDQ2Li4wNWU4YTA4ZTUxYTA1MmQwOWVmYTg0ZDgzMjc1MTFlMGUx
MGQ4MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yNjEs
NyArMjYxLDcgQEAgYm9vbCBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigq
cmVuZGVyZXItPm5vZGUoKSk7CiAgICAgICAgIGlmIChpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
PihlbGVtZW50KSB8fCBpczxIVE1MTGVnZW5kRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTE1l
dGVyRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTFByb2dyZXNzRWxlbWVudD4oZWxlbWVudCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShyb2xlQXR0ciksICJpbWciKSkK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShy
b2xlQXR0ciksICJpbWciKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggMmZlNTEwNzdkODEzMmJjZDRmZjdhNDc0Zjc2MzFjYTcx
NWFiNmFmNi4uMGY0Y2U5OTBhMDY3MDBlYTkwMDAzNDhlZGI0MzY3OTU1MjA3N2UzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYm9vbCBCbG9iOjppc05vcm1h
bGl6ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyc1tpXSA8IDB4MjAgfHwgY2hhcmFjdGVyc1tpXSA+IDB4N2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ld
KSkKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID49ICdBJyAmJiBjaGFyYWN0ZXJzW2ld
IDw9ICdaJykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgQmxvYjo6aXNOb3JtYWxpemVkQ29udGVu
dFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPCAw
eDIwIHx8IGNoYXJhY3RlcnNbaV0gPiAweDdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpXSkpCisgICAgICAg
ICAgICBpZiAoY2hhcmFjdGVyc1tpXSA+PSAnQScgJiYgY2hhcmFjdGVyc1tpXSA8PSAnWicpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTkwLDcg
KzE5MCw3IEBAIGJvb2wgQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QgQ1N0cmlu
ZyYgY29udGVudFR5cGUpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA8IDB4MjAgfHwgY2hhcmFjdGVyc1tpXSA+IDB4
N2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChpc0FTQ0lJVXBwZXIo
Y2hhcmFjdGVyc1tpXSkpCisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldID49ICdBJyAmJiBjaGFy
YWN0ZXJzW2ldIDw9ICdaJykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDI2
YmI3OTA2ZjRhOTJiMmNhYjgzOTUwMjFiYWYyZWZlYTZkMzMwYmQuLmI2MWRlNTYzMzI5MzY4NTdh
NDk4MWIxNTMyOGRmY2FiNTg2ZmUwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uY3BwCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0Rm9ybUluZm9G
cm9tUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9yZWZl
cnJlciA9IHJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CiAgICAgCi0gICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAicG9zdCIpKSB7CisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiUE9TVCIpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIGhhdmUgdG8gbWFrZSB0aGlzIHNtYXJ0IGVu
b3VnaCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUKICAgICAgICAgLy8gd2UgaGF2ZSBhIHN0cmVh
bSBmb3IgdGhlIGJvZHkgdG8gaGFuZGxlIHRoZSAiZGF0YSBpbnRlcnNwZXJzZWQgd2l0aCBmaWxl
cyIgZmVhdHVyZS4KICAgICAgICAgbV9mb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKaW5kZXggMjE4NmVmOTA1YjkzMGU1Yzg1
YWQ5YjZhNTI4NjM5ZmM4YmVkYTcxYS4uNWQyY2Y5OTYzNTc1NWMwYWQzNmU0OGFlY2M1ZGZmZGZl
ZDE0ZTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKQEAgLTMwLDE5
ICszMCw1NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlT24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IHZhbHVlT24oIm9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHZhbHVlT247Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlT2ZmKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3Ry
aW5nPiB2YWx1ZU9mZigib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgcmV0dXJuIHZhbHVlT2ZmOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZU5vbmUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHZhbHVlTm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHJldHVybiB2YWx1ZU5vbmU7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlV29yZHMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNT
dHJpbmc+IHZhbHVlV29yZHMoIndvcmRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgcmV0dXJuIHZhbHVlV29yZHM7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlU2VudGVuY2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbWljU3RyaW5nPiB2YWx1ZVNlbnRlbmNlcygic2VudGVuY2VzIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHZhbHVlU2VudGVuY2VzOworfQor
CitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZUFsbENoYXJhY3RlcnMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVlQWxsQ2hhcmFj
dGVycygiY2hhcmFjdGVycyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiB2YWx1ZUFsbENoYXJhY3RlcnM7Cit9CisKIFdlYkF1dG9jYXBpdGFsaXplVHlw
ZSBhdXRvY2FwaXRhbGl6ZVR5cGVGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVZhbHVlKQogewogICAgIC8vIE9taXR0ZWQgLyBtaXNzaW5nIHZhbHVlcyBhcmUg
dGhlIERlZmF1bHQgc3RhdGUuCi0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkKKyAg
ICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkgfHwgYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdDsKIAotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVWYWx1ZSwgIm9uIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlVmFsdWUsICJzZW50ZW5jZXMi
KSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlT24oKSkg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlU2VudGVuY2VzKCkpKQog
ICAgICAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzOwotICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVWYWx1ZSwgIm9mZiIpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVZhbHVlLCAibm9uZSIpKQorICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGVWYWx1ZSwgdmFsdWVPZmYoKSkgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlTm9uZSgpKSkKICAgICAgICAgcmV0
dXJuIFdlYkF1dG9jYXBpdGFsaXplVHlwZU5vbmU7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVZhbHVlLCAid29yZHMiKSkKKyAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlV29yZHMoKSkpCiAgICAgICAgIHJldHVybiBX
ZWJBdXRvY2FwaXRhbGl6ZVR5cGVXb3JkczsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXR0cmlidXRlVmFsdWUsICJjaGFyYWN0ZXJzIikpCisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCB2YWx1ZUFsbENoYXJhY3RlcnMoKSkpCiAgICAgICAg
IHJldHVybiBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVBbGxDaGFyYWN0ZXJzOwogCiAgICAgLy8gVW5y
ZWNvZ25pemVkIHZhbHVlcyBmYWxsIGJhY2sgdG8gIm9uIi4KQEAgLTU0LDIyICs5MCwxNCBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXplVHlwZShXZWJBdXRvY2Fw
aXRhbGl6ZVR5cGUgdHlwZSkKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdlYkF1dG9j
YXBpdGFsaXplVHlwZURlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxsQXRvbTsKLSAgICBjYXNl
IFdlYkF1dG9jYXBpdGFsaXplVHlwZU5vbmU6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdmFsdWVOb25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZU5vbmU7Ci0gICAgfQot
ICAgIGNhc2UgV2ViQXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzOiB7Ci0gICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVlU2VudGVuY2VzKCJzZW50
ZW5jZXMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAgICAgcmV0
dXJuIHZhbHVlU2VudGVuY2VzOwotICAgIH0KLSAgICBjYXNlIFdlYkF1dG9jYXBpdGFsaXplVHlw
ZVdvcmRzOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJp
bmc+IHZhbHVlV29yZHMoIndvcmRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZVdvcmRzOwotICAgIH0KLSAgICBjYXNlIFdlYkF1dG9j
YXBpdGFsaXplVHlwZUFsbENoYXJhY3RlcnM6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdmFsdWVBbGxDaGFyYWN0ZXJzKCJjaGFyYWN0ZXJzIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgICAgIHJldHVybiB2YWx1
ZUFsbENoYXJhY3RlcnM7Ci0gICAgfQorICAgIGNhc2UgV2ViQXV0b2NhcGl0YWxpemVUeXBlTm9u
ZToKKyAgICAgICAgcmV0dXJuIHZhbHVlTm9uZSgpOworICAgIGNhc2UgV2ViQXV0b2NhcGl0YWxp
emVUeXBlU2VudGVuY2VzOgorICAgICAgICByZXR1cm4gdmFsdWVTZW50ZW5jZXMoKTsKKyAgICBj
YXNlIFdlYkF1dG9jYXBpdGFsaXplVHlwZVdvcmRzOgorICAgICAgICByZXR1cm4gdmFsdWVXb3Jk
cygpOworICAgIGNhc2UgV2ViQXV0b2NhcGl0YWxpemVUeXBlQWxsQ2hhcmFjdGVyczoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlQWxsQ2hhcmFjdGVycygpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRl
eCBiYzEwMGE4NzAwNWYzODUwYTJlNThiMzJmNzJmYmU1NTNkYjc4ZjVkLi44OGYzMGRmMjVmOTE4
NWE3ODI5ZThkNDEzNjlmODBiMzhjMjdjNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcApAQCAtMjg1LDEwICsyODUsMTEgQEAgYm9vbCBIVE1MQW5jaG9yRWxl
bWVudDo6Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdAogCiBib29sIEhUTUxBbmNob3JFbGVtZW50
OjpkcmFnZ2FibGUoKSBjb25zdAogeworICAgIC8vIFNob3VsZCBiZSBkcmFnZ2FibGUgaWYgd2Ug
aGF2ZSBhbiBocmVmIGF0dHJpYnV0ZS4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
ZmFzdEdldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodmFsdWUsICJ0cnVlIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCAidHJ1ZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJmYWxzZSIpKQorICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gaGFzQXR0cmlidXRlKGhyZWZBdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcAppbmRleCAwOWRhODg2ODZlNzY5MmJiMThhMzc0ZTA4NmYyMzA0NjEzMDIzMjI3
Li5mY2ZlZWQ1ODFiMTc2ZWJmMTFkYWQzNTE4ODhkYmQ2NzYwNThjZGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAgUmVmPEhUTUxB
cmVhRWxlbWVudD4gSFRNTEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW0KIHZvaWQgSFRNTEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IHNoYXBlQXR0cikgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJkZWZhdWx0IikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgImRlZmF1bHQiKSkKICAgICAgICAgICAgIG1fc2hhcGUgPSBEZWZhdWx0Owot
ICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImNp
cmNsZSIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImNpcmNs
ZSIpKQogICAgICAgICAgICAgbV9zaGFwZSA9IENpcmNsZTsKLSAgICAgICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJwb2x5IikpCisgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicG9seSIpKQogICAgICAgICAgICAgbV9zaGFw
ZSA9IFBvbHk7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLCAicmVjdCIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgInJlY3QiKSkKICAgICAgICAgICAgIG1fc2hhcGUgPSBSZWN0OwogICAgICAgICBpbnZhbGlk
YXRlQ2FjaGVkUmVnaW9uKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvb3Jkc0F0dHIpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCmluZGV4IDM2Y2FkMTg1MzQxZDUzZWQ1
ZDc3MWQzMDNjMDJmODI0NDg2OGE2NjguLjlhMTgyYmViMWFjNTU3NzZlYTNkYzg3YTdjZTg1NjA3
ZTlkZTM5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCB2b2lkIEhUTUxCUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYQogICAgICAgICAvLyBJZiB0aGUgc3RyaW5n
IGlzIGVtcHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuCiAgICAgICAgIC8v
IDxiciBjbGVhcj4gYW5kIDxiciBjbGVhcj0iIj4gYXJlIGp1c3QgdHJlYXRlZCBsaWtlIDxicj4g
YnkgR2Vja28sIE1hYyBJRSwgZXRjLiAtZHdoCiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUs
ICJhbGwiKSkKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImFsbCIp
KQogICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlDbGVhciwgQ1NTVmFsdWVCb3RoKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5Q2xlYXIsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAppbmRleCBmYzYwNjJjYmM1NzdhMDA4ZTRjYzYxOTk4ZGZkOGYwZWQ5
OWM4MjI0Li43NzI1ODYwMzc0MzYzMTkzNGM1ZWM4NGRkMTgwNDI3YjhhYzhmMjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQg
SFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gdGV4dEF0dHIpIHsKICAg
ICAgICAgYWRkSFRNTENvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlDb2xvciwgdmFsdWUp
OwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBiZ3Byb3BlcnRpZXNBdHRyKSB7Ci0gICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImZpeGVkIikpCisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZpeGVkIikpCiAgICAgICAgICAgIGFkZFBy
b3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQXR0YWNobWVudCwgQ1NTVmFsdWVGaXhlZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhU
TUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFs
dWUsIHN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKaW5k
ZXggYjNhYTdhYWEyOTQ2NjE0OGJkNzZjZmZiZmRjZGZhYzdlZjExNzExMy4uZGY4ZTgzNDEyYmY0
NDUzZWU2YmExYjNjZmY5NGE0Yjg3MDc0NTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAKQEAgLTk2LDkgKzk2LDkgQEAgYm9vbCBIVE1MQnV0dG9uRWxlbWVu
dDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QKIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUg
PT0gdHlwZUF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLCAicmVzZXQiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAi
cmVzZXQiKSkKICAgICAgICAgICAgIG1fdHlwZSA9IFJFU0VUOwotICAgICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImJ1dHRvbiIpKQorICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJ1dHRvbiIpKQogICAgICAgICAgICAg
bV90eXBlID0gQlVUVE9OOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3R5cGUgPSBTVUJN
SVQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDI1NGMw
NzdkNDcwZGJhMmIxMTMzOWY2YTk4Y2JiYTM1NDFkOTJkMTYuLmZiOWQyYzExOGVmN2ZkNTk0ZDRi
ZDU2YmYyODQxODA4M2EwZDBjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCkBAIC00OTcsNyArNDk3LDcgQEAgU3RyaW5nIEhUTUxDYW52YXNFbGVtZW50Ojp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXQKICAg
ICB9CiAKICAgICBpZiAobV9zaXplLmlzRW1wdHkoKSB8fCAhYnVmZmVyKCkpCi0gICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoImRhdGE6LCIpOworICAgICAgICByZXR1cm4gU3RyaW5nKCJkYXRh
OiwiKTsKIAogICAgIFN0cmluZyBlbmNvZGluZ01pbWVUeXBlID0gdG9FbmNvZGluZ01pbWVUeXBl
KG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCBj
M2IxNmFjNzk1YzAxZjllMjhlNjMwMWMzZjdmNzc2ZjlkZGM5ZTYwLi4wNmIxODkyNmVjMTY1NThm
Yjk3M2EyOWFmYjUwYTBmMTFkYWRhZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmNwcApAQCAtNTcsMTEgKzU3LDExIEBAIGJvb2wgSFRNTERpdkVsZW1lbnQ6OmlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB2b2lkIEhU
TUxEaXZFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWxpZ25BdHRyKSB7Ci0g
ICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm1pZGRsZSIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY2VudGVyIikpCisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKHZhbHVlLCAiY2VudGVyIikpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1
ZVdlYmtpdENlbnRlcik7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAibGVmdCIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSh2YWx1ZSwgImxlZnQiKSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0
TGVmdCk7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZh
bHVlLCAicmlnaHQiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJyaWdodCIpKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBhMjAzZWUzYWM5MjIwNmI0N2E2N2VlMzRjZmJk
Y2M5M2YxMzY4MTE2Li4xMDYyOTllNzhjNWFkZTM1MTliOTAwMjc4MTEwZGI3YmE3MDQ5ZGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMjQsMTUgKzEyNCwxNSBAQCB2
b2lkIEhUTUxEb2N1bWVudDo6c2V0RGlyKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIFN0
cmluZyBIVE1MRG9jdW1lbnQ6OmRlc2lnbk1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBpbkRl
c2lnbk1vZGUoKSA/IEFTQ0lJTGl0ZXJhbCgib24iKSA6IEFTQ0lJTGl0ZXJhbCgib2ZmIik7Cisg
ICAgcmV0dXJuIGluRGVzaWduTW9kZSgpID8gIm9uIiA6ICJvZmYiOwogfQogCiB2b2lkIEhUTUxE
b2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEluaGVy
aXRlZEJvb2wgbW9kZTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWUsICJvbiIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm9uIikpCiAgICAg
ICAgIG1vZGUgPSBvbjsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh2YWx1ZSwgIm9mZiIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAi
b2ZmIikpCiAgICAgICAgIG1vZGUgPSBvZmY7CiAgICAgZWxzZQogICAgICAgICBtb2RlID0gaW5o
ZXJpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZDUyMjM4YzIyNDE3YzEw
MzA5ZjkxMTNjZDM5MmUzYmZiYWNhMWNjNy4uNzkyZDJmNjQ1MWJjZjQyYjQ0N2ZkYjAzMTdlZDQ4
NTM1YzllODlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTczLDggKzcz
LDggQEAgUmVmPEhUTUxFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKIAogU3RyaW5nIEhUTUxFbGVtZW50Ojpub2Rl
TmFtZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhbiBB
dG9taWNTdHJpbmcgbG9va3VwIGJhc2VkIG9mZiB1cHBlcmNhc2UKLSAgICAvLyBBU0NJSSBjaGFy
YWN0ZXJzIHRoYXQgZG9lcyBub3QgaGF2ZSB0byBjb3B5IHRoZSBzdHJpbmcgb24gYSBoaXQgaW4g
dGhlIGhhc2guCisgICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhbiBhdG9taWNz
dHJpbmcgbG9va3VwIGJhc2VkIG9mZiB1cHBlcmNhc2UKKyAgICAvLyBjaGFycyB0aGF0IGRvZXMg
bm90IGhhdmUgdG8gY29weSB0aGUgc3RyaW5nIG9uIGEgaGl0IGluIHRoZSBoYXNoLgogICAgIGlm
IChkb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKCF0YWdRTmFtZSgp
Lmhhc1ByZWZpeCgpKQogICAgICAgICAgICAgcmV0dXJuIHRhZ1FOYW1lKCkubG9jYWxOYW1lVXBw
ZXIoKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIEhUTUxFbGVtZW50Ojppc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiBzdGF0aWMgYm9v
bCBpc0xUUk9yUlRMSWdub3JpbmdDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgZGlyQXR0cmlidXRl
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpckF0
dHJpYnV0ZVZhbHVlLCAicnRsIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGly
QXR0cmlidXRlVmFsdWUsICJsdHIiKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZGly
QXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVW
YWx1ZSwgImx0ciIpOwogfQogCiBlbnVtIGNsYXNzIENvbnRlbnRFZGl0YWJsZVR5cGUgewpAQCAt
MTc5LDExICsxNzksMTEgQEAgc3RhdGljIGlubGluZSBDb250ZW50RWRpdGFibGVUeXBlIGNvbnRl
bnRFZGl0YWJsZVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDb250ZW50RWRpdGFibGVUeXBlOjpJbmhlcml0
OwotICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodmFsdWUsICJ0cnVlIikpCisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRFZGl0YWJsZVR5
cGU6OlRydWU7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
ZmFsc2UiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKQogICAg
ICAgICByZXR1cm4gQ29udGVudEVkaXRhYmxlVHlwZTo6RmFsc2U7Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicGxhaW50ZXh0LW9ubHkiKSkKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJwbGFpbnRleHQtb25seSIpKQogICAgICAgICByZXR1
cm4gQ29udGVudEVkaXRhYmxlVHlwZTo6UGxhaW50ZXh0T25seTsKIAogICAgIHJldHVybiBDb250
ZW50RWRpdGFibGVUeXBlOjpJbmhlcml0OwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBDb250
ZW50RWRpdGFibGVUeXBlIGNvbnRlbnRFZGl0YWJsZVR5cGUoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpCiB2b2lkIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWxp
Z25BdHRyKSB7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgIm1pZGRsZSIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJtaWRk
bGUiKSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlQ2VudGVyKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgdmFsdWUpOwpAQCAtMjI1LDEzICsyMjUsMTMg
QEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGlkZGVu
QXR0cikgewogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lKTsKICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gZHJhZ2dhYmxlQXR0cikgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJ0cnVlIikpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAidHJ1ZSIpKSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1Zh
bHVlRWxlbWVudCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25l
KTsKLSAgICAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgImZhbHNlIikpCisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJmYWxzZSIpKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOwog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBkaXJBdHRyKSB7Ci0gICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImF1dG8iKSkKKyAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHZhbHVlLCAiYXV0byIpKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCB1bmlj
b2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8oKnRoaXMpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoaXNMVFJPclJUTElnbm9yaW5nQ2FzZSh2YWx1ZSkpCkBAIC01MjYsMTEgKzUy
NiwxMiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgdG9WYWxpZERpclZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbHRyVmFsdWUoImx0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ0bFZhbHVl
KCJydGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdXRvVmFsdWUoImF1dG8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJsdHIiKSkKKworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgbHRyVmFsdWUpKQogICAgICAgICByZXR1cm4gbHRyVmFsdWU7Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicnRsIikpCisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHZhbHVlLCBydGxWYWx1ZSkpCiAgICAgICAgIHJldHVybiBydGxWYWx1ZTsKLSAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikpCisgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBhdXRvVmFsdWUpKQogICAgICAgICByZXR1cm4gYXV0
b1ZhbHVlOwogICAgIHJldHVybiBudWxsQXRvbTsKIH0KQEAgLTY0MCwxOCArNjQxLDE4IEBAIE5v
ZGUqIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudChjb25zdCBTdHJpbmcmIHdoZXJlLCBSZWY8
Tm9kZT4mJiBuZXdDaGlsZCwgRXhjCiAgICAgLy8gVGhpcyBpcyBpbXBvc3NpYmxlIGZvciB1cyB0
byBpbXBsZW1lbnQgYXMgdGhlIERPTSB0cmVlIGRvZXMgbm90IGFsbG93IGZvciBzdWNoIHN0cnVj
dHVyZXMsCiAgICAgLy8gT3BlcmEgYWxzbyBhcHBlYXJzIHRvIGRpc2FsbG93IHN1Y2ggdXNhZ2Uu
CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uod2hlcmUsICJiZWZvcmVi
ZWdpbiIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHdoZXJlLCAiYmVmb3JlQmVnaW4i
KSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSB0aGlzLT5wYXJlbnROb2RlKCk7
CiAgICAgICAgIHJldHVybiAocGFyZW50ICYmIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5ld0NoaWxk
LmNvcHlSZWYoKSwgdGhpcywgZWMpKSA/IG5ld0NoaWxkLnB0cigpIDogbnVsbHB0cjsKICAgICB9
CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uod2hlcmUsICJhZnRlcmJl
Z2luIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHdoZXJlLCAiYWZ0ZXJCZWdpbiIpKQog
ICAgICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKG5ld0NoaWxkLmNvcHlSZWYoKSwgZmlyc3RDaGls
ZCgpLCBlYykgPyBuZXdDaGlsZC5wdHIoKSA6IG51bGxwdHI7CiAKLSAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uod2hlcmUsICJiZWZvcmVlbmQiKSkKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2Uod2hlcmUsICJiZWZvcmVFbmQiKSkKICAgICAgICAgcmV0dXJuIGFwcGVuZENo
aWxkKG5ld0NoaWxkLmNvcHlSZWYoKSwgZWMpID8gbmV3Q2hpbGQucHRyKCkgOiBudWxscHRyOwog
Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHdoZXJlLCAiYWZ0ZXJlbmQi
KSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwgImFmdGVyRW5kIikpIHsKICAg
ICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gdGhpcy0+cGFyZW50Tm9kZSgpOwogICAgICAg
ICByZXR1cm4gKHBhcmVudCAmJiBwYXJlbnQtPmluc2VydEJlZm9yZShuZXdDaGlsZC5jb3B5UmVm
KCksIG5leHRTaWJsaW5nKCksIGVjKSkgPyBuZXdDaGlsZC5wdHIoKSA6IG51bGxwdHI7CiAgICAg
fQpAQCAtNjc3LDcgKzY3OCw3IEBAIEVsZW1lbnQqIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2Vu
dEVsZW1lbnQoY29uc3QgU3RyaW5nJiB3aGVyZSwgRWxlbWVudCogbmV3Q2hpCiAvLyBTdGVwIDMg
b2YgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvYXBpcy1pbi1odG1sLWRvY3VtZW50cy5odG1sI2luc2VydGFkamFjZW50aHRtbCgpCiBz
dGF0aWMgRWxlbWVudCogY29udGV4dEVsZW1lbnRGb3JJbnNlcnRpb24oY29uc3QgU3RyaW5nJiB3
aGVyZSwgRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHdoZXJlLCAiYmVmb3JlYmVnaW4iKSB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVyZW5kIikpIHsKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2Uod2hlcmUsICJiZWZvcmVCZWdpbiIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHdoZXJlLCAiYWZ0ZXJFbmQiKSkgewogICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgIWlzPEVsZW1l
bnQ+KCpwYXJlbnQpKSB7CiAgICAgICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUjsKQEAgLTY4Niw3ICs2ODcsNyBAQCBzdGF0aWMgRWxlbWVudCogY29udGV4dEVsZW1lbnRG
b3JJbnNlcnRpb24oY29uc3QgU3RyaW5nJiB3aGVyZSwgRWxlbWVudCogZWxlbWVudAogICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighcGFyZW50IHx8IGlzPEVsZW1lbnQ+
KCpwYXJlbnQpKTsKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KHBhcmVudCk7CiAg
ICAgfQotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImFmdGVy
YmVnaW4iKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3aGVyZSwgImJlZm9yZWVu
ZCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwgImFmdGVyQmVnaW4iKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwgImJlZm9yZUVuZCIpKQogICAgICAgICByZXR1cm4gZWxl
bWVudDsKICAgICBlYyA9ICBTWU5UQVhfRVJSOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtNzE1
LDI1ICs3MTYsMjUgQEAgdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVU
b1N0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYgYWxpZ25tZW50LAogICAgIENTU1ZhbHVlSUQgZmxv
YXRWYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKICAgICBDU1NWYWx1ZUlEIHZlcnRpY2FsQWxpZ25W
YWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShhbGlnbm1lbnQsICJhYnNtaWRkbGUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWxpZ25tZW50LCAiYWJzbWlkZGxlIikpCiAgICAgICAgIHZlcnRpY2FsQWxpZ25WYWx1ZSA9
IENTU1ZhbHVlTWlkZGxlOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGFsaWdubWVudCwgImFic2JvdHRvbSIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGFsaWdubWVudCwgImFic2JvdHRvbSIpKQogICAgICAgICB2ZXJ0aWNhbEFsaWduVmFsdWUg
PSBDU1NWYWx1ZUJvdHRvbTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShhbGlnbm1lbnQsICJsZWZ0IikpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhbGlnbm1lbnQsICJsZWZ0IikpIHsKICAgICAgICAgZmxvYXRWYWx1ZSA9IENTU1ZhbHVlTGVm
dDsKICAgICAgICAgdmVydGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVUb3A7Ci0gICAgfSBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhbGlnbm1lbnQsICJyaWdodCIpKSB7
CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhbGlnbm1lbnQsICJyaWdodCIpKSB7
CiAgICAgICAgIGZsb2F0VmFsdWUgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICB2ZXJ0aWNhbEFs
aWduVmFsdWUgPSBDU1NWYWx1ZVRvcDsKLSAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGFsaWdubWVudCwgInRvcCIpKQorICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYWxpZ25tZW50LCAidG9wIikpCiAgICAgICAgIHZlcnRpY2FsQWxpZ25WYWx1ZSA9
IENTU1ZhbHVlVG9wOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGFsaWdubWVudCwgIm1pZGRsZSIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFs
aWdubWVudCwgIm1pZGRsZSIpKQogICAgICAgICB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NWYWx1
ZVdlYmtpdEJhc2VsaW5lTWlkZGxlOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGFsaWdubWVudCwgImNlbnRlciIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFsaWdubWVudCwgImNlbnRlciIpKQogICAgICAgICB2ZXJ0aWNhbEFsaWduVmFsdWUg
PSBDU1NWYWx1ZU1pZGRsZTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShhbGlnbm1lbnQsICJib3R0b20iKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhbGlnbm1lbnQsICJib3R0b20iKSkKICAgICAgICAgdmVydGljYWxBbGlnblZhbHVlID0gQ1NT
VmFsdWVCYXNlbGluZTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShhbGlnbm1lbnQsICJ0ZXh0dG9wIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
YWxpZ25tZW50LCAidGV4dHRvcCIpKQogICAgICAgICB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NW
YWx1ZVRleHRUb3A7CiAKICAgICBpZiAoZmxvYXRWYWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCkBA
IC03NzAsMTMgKzc3MSwxMyBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSgp
IGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJp
bmcmIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAidHJ1ZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShlbmFibGVkLCAidHJ1ZSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRh
YmxlQXR0ciwgQXRvbWljU3RyaW5nKCJ0cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
YWJsZWQsICJmYWxzZSIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQs
ICJmYWxzZSIpKQogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgQXRv
bWljU3RyaW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbmFibGVkLCAicGxh
aW50ZXh0LW9ubHkiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAi
cGxhaW50ZXh0LW9ubHkiKSkKICAgICAgICAgc2V0QXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0
dHIsIEF0b21pY1N0cmluZygicGxhaW50ZXh0LW9ubHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZW5hYmxlZCwgImluaGVyaXQiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShl
bmFibGVkLCAiaW5oZXJpdCIpKQogICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29udGVudGVkaXRh
YmxlQXR0cik7CiAgICAgZWxzZQogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC03ODQsNyAr
Nzg1LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxlKGNvbnN0IFN0cmlu
ZyYgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmRyYWdn
YWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGZhc3RHZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciksICJ0cnVlIik7CisgICAgcmV0dXJuIGVx
dWFsSWdub3JpbmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciksICJ0cnVlIik7
CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldERyYWdnYWJsZShib29sIHZhbHVlKQpAQCAtODM0
LDkgKzgzNSw5IEBAIFRyYW5zbGF0ZUF0dHJpYnV0ZU1vZGUgSFRNTEVsZW1lbnQ6OnRyYW5zbGF0
ZUF0dHJpYnV0ZU1vZGUoKSBjb25zdAogCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gVHJhbnNsYXRlQXR0cmlidXRlSW5oZXJpdDsKLSAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSB8fCB2YWx1ZS5pc0VtcHR5KCkpCisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAieWVzIikgfHwgdmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gVHJhbnNsYXRlQXR0cmlidXRlWWVzOwotICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm5vIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAibm8iKSkKICAgICAgICAgcmV0dXJuIFRyYW5zbGF0ZUF0dHJpYnV0ZU5vOwog
CiAgICAgcmV0dXJuIFRyYW5zbGF0ZUF0dHJpYnV0ZUluaGVyaXQ7CkBAIC05MjUsNyArOTI2LDcg
QEAgdm9pZCBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiBib29sIEhUTUxFbGVtZW50OjpoYXNEaXJlY3Rpb25BdXRvKCkgY29uc3QKIHsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbiA9IGZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0
cik7Ci0gICAgcmV0dXJuIChoYXNUYWdOYW1lKGJkaVRhZykgJiYgZGlyZWN0aW9uLmlzTnVsbCgp
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rpb24sICJhdXRvIik7Cisg
ICAgcmV0dXJuIChoYXNUYWdOYW1lKGJkaVRhZykgJiYgZGlyZWN0aW9uLmlzTnVsbCgpKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb24sICJhdXRvIik7CiB9CiAKIFRleHREaXJlY3Rpb24g
SFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGJvb2wmIGlz
QXV0bykgY29uc3QKQEAgLTk1Myw3ICs5NTQsNyBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50
OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkgYwog
ICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAg
ICAgLy8gU2tpcCBiZGksIHNjcmlwdCwgc3R5bGUgYW5kIHRleHQgZm9ybSBjb250cm9scy4KLSAg
ICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5vZGUtPm5vZGVOYW1lKCks
ICJiZGkiKSB8fCBub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFt
ZShzdHlsZVRhZykKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5vZGUtPm5vZGVOYW1l
KCksICJiZGkiKSB8fCBub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgfHwgbm9kZS0+aGFzVGFn
TmFtZShzdHlsZVRhZykgCiAgICAgICAgICAgICB8fCAoaXM8RWxlbWVudD4oKm5vZGUpICYmIGRv
d25jYXN0PEVsZW1lbnQ+KCpub2RlKS5pc1RleHRGb3JtQ29udHJvbCgpKSkgewogICAgICAgICAg
ICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKCpub2RlLCB0aGlz
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTYyLDcgKzk2Myw3IEBAIFRleHREaXJlY3Rp
b24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlKSBjCiAgICAgICAgIC8vIFNraXAgZWxlbWVudHMgd2l0aCB2YWxpZCBkaXIgYXR0
cmlidXRlCiAgICAgICAgIGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAgIEF0
b21pY1N0cmluZyBkaXJBdHRyaWJ1dGVWYWx1ZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5m
YXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOwotICAgICAgICAgICAgaWYgKGlzTFRST3JSVExJZ25v
cmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7CisgICAgICAgICAgICBpZiAoaXNMVFJP
clJUTElnbm9yaW5nQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSkgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKICAgICAgICAgICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUsIHRoaXMpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtOTkxLDcgKzk5Miw3IEBAIHZvaWQg
SFRNTEVsZW1lbnQ6OmRpckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KHBhcmVudCkgJiYgcGFyZW50LT5zZWxmT3JBbmNl
c3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KCpwYXJlbnQpLmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRl
Q2hhbmdlZCh0aGlzKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgImF1dG8iKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhdXRvIikp
CiAgICAgICAgIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CiB9CiAKQEAgLTEx
NDIsNyArMTE0Myw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxDb2xvclRvU3R5bGUoTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5CiAgICAgU3RyaW5nIGNvbG9y
U3RyaW5nID0gYXR0cmlidXRlVmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKICAgICAvLyAidHJh
bnNwYXJlbnQiIGRvZXNuJ3QgYXBwbHkgYSBjb2xvciBlaXRoZXIuCi0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbG9yU3RyaW5nLCAidHJhbnNwYXJlbnQiKSkKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcsICJ0cmFuc3BhcmVudCIpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbmFtZWQgQ1NTIGNvbG9yIG9y
IGEgMy82LWRpZ2l0IGhleCBjb2xvciwgdXNlIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcAppbmRleCA1M2VjZjBhY2ZjMmE0Mzc0ZmJhYTdiNjA4YzUxYjhhOTEw
ODcyMTQ5Li5iODVhZGZhM2RmMDllZmQyNWQxMTY2Mzc1YWQxODI4NGZiODM5OGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9v
bCBIVE1MRW1iZWRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKSBjb25zdAogdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gaGlkZGVuQXR0cikgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgInRydWUiKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUsICJ5ZXMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRydWUiKSkgewogICAgICAg
ICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eVdpZHRoLCAwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlIZWlnaHQsIDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA0YTE3
MTVlY2U3MjU2YjAyYjEwNWU3ZDY4ZTQ1ODYwZTBlNTZjN2Y2Li4xODU1ODE5ZDJjMmMyNjNlYTlm
NDY2YzZhYjQxNjUyYTE5NGU0ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTU2MiwxNCArNTYyLDEzIEBAIGJvb2wgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKLQotLy8gRklYTUU6IFdl
IHNob3VsZCBsb29rIHRvIHNoYXJlIHRoaXMgY29kZSB3aXRoIGNsYXNzIEhUTUxGb3JtRWxlbWVu
dCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYy4KKy8vIEZJWE1FOiBXZSBzaG91bGQg
bG9vayB0byBzaGFyZSB0aGVzZSBtZXRob2RzIHdpdGggY2xhc3MgSFRNTEZvcm1FbGVtZW50IGlu
c3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlbS4KIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjphdXRvY29ycmVjdCgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvY29y
cmVjdFZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShhdXRvY29ycmVjdEF0dHIpOwogICAgIGlmICgh
YXV0b2NvcnJlY3RWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAhZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoYXV0b2NvcnJlY3RWYWx1ZSwgIm9mZiIpOworICAgICAgICByZXR1
cm4gIWVxdWFsSWdub3JpbmdDYXNlKGF1dG9jb3JyZWN0VmFsdWUsICJvZmYiKTsKICAgICBpZiAo
SFRNTEZvcm1FbGVtZW50KiBmb3JtID0gdGhpcy0+Zm9ybSgpKQogICAgICAgICByZXR1cm4gZm9y
bS0+YXV0b2NvcnJlY3QoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5OSw3ICs1OTgsNiBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgc2V0QXR0cmlidXRlKGF1dG9jYXBpdGFsaXplQXR0ciwg
dmFsdWUpOwogfQotCiAjZW5kaWYKIAogSFRNTEZvcm1Db250cm9sRWxlbWVudCogSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KE5vZGUqIG5vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggODBhMjhiNDljYmE1ZTJk
NTA4ZThhNWE4ZTRmNWQ3YmJlOTRmOWZjZS4uZWY5NTk0MThlMTViNjNhMWIzNWVmYjUwNGZhMzQw
NTBjOWFhNTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAt
Mzg4LDE0ICszODgsMTMgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KCkKIH0KIAogI2lm
IEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQotCi0vLyBGSVhNRTog
V2Ugc2hvdWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1Db250
cm9sRWxlbWVudCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYy4KKy8vIEZJWE1FOiBX
ZSBzaG91bGQgbG9vayB0byBzaGFyZSB0aGVzZSBtZXRob2RzIHdpdGggY2xhc3MgSFRNTEZvcm1D
b250cm9sRWxlbWVudCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZW0uCiAKIGJvb2wgSFRNTEZv
cm1FbGVtZW50OjphdXRvY29ycmVjdCgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhdXRvY29ycmVjdFZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShhdXRvY29ycmVjdEF0dHIpOwog
ICAgIGlmICghYXV0b2NvcnJlY3RWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXV0b2NvcnJlY3RWYWx1ZSwgIm9mZiIpOworICAg
ICAgICByZXR1cm4gIWVxdWFsSWdub3JpbmdDYXNlKGF1dG9jb3JyZWN0VmFsdWUsICJvZmYiKTsK
ICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gdGhpcy0+Zm9ybSgpKQogICAgICAgICBy
ZXR1cm4gZm9ybS0+YXV0b2NvcnJlY3QoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgzNCw3ICs4
MzMsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQqIG9sZERvY3VtZW50KQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvbXBs
ZXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGZhc3RHZXRBdHRyaWJ1dGUoYXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKTsKKyAgICByZXR1cm4g
IWVxdWFsSWdub3JpbmdDYXNlKGZhc3RHZXRBdHRyaWJ1dGUoYXV0b2NvbXBsZXRlQXR0ciksICJv
ZmYiKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDJh
YzU3NjlmNmI4ZDVmZTlkY2JkMWQzODI3YTk2OTg0ZjVjODc5Y2MuLmVhMzI2YmM2ZjM4MjZkNWJi
YjkyNmVkMDU5YTMyNjE1Y2VhNWFjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWkKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlz
IGhhcyBubyBlZmZlY3QuCiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNjcm9sbGluZ0F0dHIpIHsK
ICAgICAgICAgLy8gQXV0byBhbmQgeWVzIGJvdGggc2ltcGx5IG1lYW4gImFsbG93IHNjcm9sbGlu
Zy4iIE5vIG1lYW5zICJkb24ndCBhbGxvdyBzY3JvbGxpbmcuIgotICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAiYXV0byIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAieWVzIikpCiAg
ICAgICAgICAgICBtX3Njcm9sbGluZyA9IGRvY3VtZW50KCkuZnJhbWVFbGVtZW50c1Nob3VsZEln
bm9yZVNjcm9sbGluZygpID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xsYmFyQXV0bzsKLSAg
ICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJubyIp
KQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vIikpCiAgICAg
ICAgICAgICBtX3Njcm9sbGluZyA9IFNjcm9sbGJhckFsd2F5c09mZjsKICAgICAgICAgLy8gRklY
TUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCiAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRl
eCAxN2E5MDMxN2ZmN2I3YjcxYTNlOWZmYzg1MzUwNmJlNDFhNzkzYzNmLi5kYjg2OTdmNGRmYTA2
YjY1NmNkNzM0ZGM1ZDk4MWVlODRmZjFiNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgSFRNTEZyYW1l
U2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljCiAKICAgICBpZiAobmFtZSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKICAgICAgICAg
aWYgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAibm8iKSB8fCB2YWx1ZSA9PSAiMCIpIHsKKyAgICAgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWUsICIwIikpIHsKICAgICAgICAgICAgICAgICBtX2ZyYW1lYm9yZGVyID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgbV9mcmFtZWJvcmRlclNldCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAieWVzIikgfHwgdmFs
dWUgPT0gIjEiKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAieWVzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICIxIikpIHsKICAgICAgICAg
ICAgICAgICBtX2ZyYW1lYm9yZGVyU2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDQ3NDRjZGI2
NjE4M2QyMDBlZDY2MzljZGE0ZmM1Y2QzNjJmNjUyOWEuLmExMTFiN2YyZTg1YzE3MWQyNTUxMGVj
MGNkYzY4ZTY0ZWUyYTliYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhS
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcApA
QCAtNTksMTAgKzU5LDEwIEBAIGJvb2wgSFRNTEhSRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHZvaWQgSFRNTEhSRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsZWZ0IikpIHsKKyAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibGVmdCIpKSB7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFy
Z2luUmlnaHQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJyaWdodCIpKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJyaWdodCIpKSB7CiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgMCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4MDA4OTFiNDE0ZDZkNDQxM2JmNGIxYTc1ODQ0
ODRmY2I0NmVmN2MzLi5kYjYyOTcyMWFiYmI1MDI5MmQ1YzhhNGViMTFjYjVkNDJhNzAwODRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTQ4OSw3ICs0ODks
NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmFsdCgpIGNvbnN0CiBi
b29sIEhUTUxJbWFnZUVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gSW1hZ2Ug
ZWxlbWVudHMgYXJlIGRyYWdnYWJsZSBieSBkZWZhdWx0LgotICAgIHJldHVybiAhZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFzdEdldEF0dHJpYnV0ZShkcmFnZ2FibGVBdHRyKSwgImZh
bHNlIik7CisgICAgcmV0dXJuICFlcXVhbElnbm9yaW5nQ2FzZShmYXN0R2V0QXR0cmlidXRlKGRy
YWdnYWJsZUF0dHIpLCAiZmFsc2UiKTsKIH0KIAogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRI
ZWlnaHQoaW50IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggZGEyYTUzNTU3YTFmODgxZTdiNjU1NTJjZTc0N2NjYWNlYmI3MmZiNS4uMzNiZGE3MWVl
YWY1ZTJiY2UyMmI1NTJiMjk1Mzg5OGFlZDk3YWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHIKICAgICAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7CiAgICAgICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgfSBl
bHNlIGlmIChuYW1lID09IGF1dG9jb21wbGV0ZUF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAib2ZmIikpIHsKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLCAib2ZmIikpIHsKICAgICAgICAgICAgIG1fYXV0b2NvbXBsZXRl
ID0gT2ZmOwogICAgICAgICAgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRl
ZCgpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVt
ZW50LmNwcAppbmRleCBiNjE3YjAzMzZjYmM1YTM4ZWUxZjU4MDNkM2FkODFiYWM2OTQxMTM0Li44
OTQ0YWFiZmRjMGZlZjg5MDk1NjVjM2I2MzdjZmZjMDRiMzdjMThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgSFRN
TEtleWdlbkVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RlZF92YWx1
ZXMsIGJvb2wpCiB7CiAgICAgLy8gT25seSBSU0EgaXMgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4K
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtleVR5cGUgPSBmYXN0R2V0QXR0cmlidXRlKGtleXR5
cGVBdHRyKTsKLSAgICBpZiAoIWtleVR5cGUuaXNOdWxsKCkgJiYgIWVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleVR5cGUsICJyc2EiKSkKKyAgICBpZiAoIWtleVR5cGUuaXNOdWxsKCkg
JiYgIWVxdWFsSWdub3JpbmdDYXNlKGtleVR5cGUsICJyc2EiKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIFN0cmluZyB2YWx1ZSA9IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhzaGFkb3dTZWxlY3QoKS0+c2VsZWN0ZWRJbmRleCgpLCBmYXN0R2V0QXR0cmlidXRlKGNoYWxs
ZW5nZUF0dHIpLCBkb2N1bWVudCgpLmJhc2VVUkwoKSk7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IDZiZDY1
NDVhZmU1YjMzN2FiNzE3ZmRmYzllZGY4ODEzYzVlZWVhMDMuLjk5NThiYTFiMzM5NjMyYWU2MWNh
ZDc2ZmI2ZGM5ZTVlYTM0Zjc4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW0KICAg
ICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBsb29wQXR0cikgewog
ICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKHZhbHVlID09
ICItMSIgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJpbmZpbml0ZSIp
KQorICAgICAgICAgICAgaWYgKHZhbHVlID09ICItMSIgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUsICJpbmZpbml0ZSIpKQogICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
biwgQ1NTVmFsdWVJbmZpbml0ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
YWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0
aXRpb24sIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDM3YzQzNWE0N2Q5ZWVlYmE2OGQzYzI3YjVjN2E5OWU2NDlkYTVkZTAuLmYwNTNhY2UwNDEx
Mzg5Yzk2MmRlYTA2ODM2ZDA4ZDI1MjJiMGJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNjU5LDkgKzY1OSw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyCiAgICAgZWxzZSBpZiAobmFtZSA9PSBsb29wQXR0cikKICAgICAgICAgdXBkYXRlU2xlZXBE
aXNhYmxpbmcoKTsKICAgICBlbHNlIGlmIChuYW1lID09IHByZWxvYWRBdHRyKSB7Ci0gICAgICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm5vbmUiKSkKKyAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibm9uZSIpKQogICAgICAgICAgICAgbV9w
cmVsb2FkID0gTWVkaWFQbGF5ZXI6Ok5vbmU7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAibWV0YWRhdGEiKSkKKyAgICAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJtZXRhZGF0YSIpKQogICAgICAgICAgICAgbV9wcmVs
b2FkID0gTWVkaWFQbGF5ZXI6Ok1ldGFEYXRhOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIFRoZSBzcGVjIGRvZXMgbm90IGRlZmluZSBhbiAiaW52YWxpZCB2YWx1ZSBkZWZhdWx0IiBi
dXQgImF1dG8iIGlzIHN1Z2dlc3RlZCBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFF
bGVtZW50LmNwcAppbmRleCAxZTU3NmQxNDQwNTY3MmQ2YzFlZTVlZTRkMjc4MzM0N2U0YzhkMjYx
Li4xNzcwODEyNTM2NTIwMWQyOGIxMGFhZGMwZjZjNGRhMTczNjg5M2UyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBIVE1M
TWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQogICAgIGlmIChjb250ZW50VmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lKCksICJ2aWV3cG9ydCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lKCksICJ2
aWV3cG9ydCIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NWaWV3cG9ydChjb250ZW50VmFs
dWUsIFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOwogI2lmIFBMQVRGT1JNKElPUykK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lKCksICJmb3Jt
YXQtZGV0ZWN0aW9uIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSgpLCAi
Zm9ybWF0LWRldGVjdGlvbiIpKQogICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NGb3JtYXREZXRl
Y3Rpb24oY29udGVudFZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lKCksICJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiKSkKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lKCksICJhcHBsZS1tb2JpbGUtd2ViLWFw
cC1vcmllbnRhdGlvbnMiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzV2ViQXBwT3JpZW50
YXRpb25zKCk7CiAjZW5kaWYKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lKCksICJyZWZlcnJlciIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUoKSwgInJlZmVycmVyIikpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1JlZmVycmVy
UG9saWN5KGNvbnRlbnRWYWx1ZSk7CiAKICAgICAvLyBHZXQgdGhlIGRvY3VtZW50IHRvIHByb2Nl
c3MgdGhlIHRhZywgYnV0IG9ubHkgaWYgd2UncmUgYWN0dWFsbHkgcGFydCBvZiBET00gdHJlZSAo
Y2hhbmdpbmcgYSBtZXRhIHRhZyB3aGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAppbmRleCBjNmI2MjBmYTYwMTM3NDc2NDg0ODc4N2NmM2FiM2I0NThjOGMzYzM5
Li5jNDU2ZTQzNjQxN2M5MmNiYTVmNmMyNjY3NWRkZjFiZjhlNTI3NTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMTM4LDIwICsxMzgsMjEgQEAgdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0
UmVuZGVyVHJlZSk7CiB9CiAKLXN0YXRpYyB2b2lkIG1hcERhdGFQYXJhbVRvU3JjKFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitzdGF0aWMg
dm9pZCBtYXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiogcGFyYW1OYW1lcywgVmVjdG9y
PFN0cmluZz4qIHBhcmFtVmFsdWVzKQogewotICAgIC8vIFNvbWUgcGx1Z2lucyBkb24ndCB1bmRl
cnN0YW5kIHRoZSAiZGF0YSIgYXR0cmlidXRlIG9mIHRoZSBPQkpFQ1QgdGFnIChpLmUuIFJlYWwg
YW5kIFdNUCByZXF1aXJlICJzcmMiIGF0dHJpYnV0ZSkuCi0gICAgYm9vbCBmb3VuZFNyY1BhcmFt
ID0gZmFsc2U7Ci0gICAgU3RyaW5nIGRhdGFQYXJhbVZhbHVlOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwYXJhbU5hbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJhbU5hbWVzW2ldLCAic3JjIikpCi0gICAgICAgICAg
ICBmb3VuZFNyY1BhcmFtID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UocGFyYW1OYW1lc1tpXSwgImRhdGEiKSkKLSAgICAgICAgICAgIGRhdGFQ
YXJhbVZhbHVlID0gcGFyYW1WYWx1ZXNbaV07CisgICAgLy8gU29tZSBwbHVnaW5zIGRvbid0IHVu
ZGVyc3RhbmQgdGhlICJkYXRhIiBhdHRyaWJ1dGUgb2YgdGhlIE9CSkVDVCB0YWcgKGkuZS4gUmVh
bCBhbmQgV01QCisgICAgLy8gcmVxdWlyZSAic3JjIiBhdHRyaWJ1dGUpLgorICAgIGludCBzcmNJ
bmRleCA9IC0xLCBkYXRhSW5kZXggPSAtMTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBhcmFtTmFtZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSgoKnBhcmFtTmFtZXMpW2ldLCAic3JjIikpCisgICAgICAgICAgICBzcmNJbmRleCA9IGk7
CisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCgqcGFyYW1OYW1lcylbaV0sICJk
YXRhIikpCisgICAgICAgICAgICBkYXRhSW5kZXggPSBpOwogICAgIH0KLSAgICBpZiAoIWZvdW5k
U3JjUGFyYW0gJiYgIWRhdGFQYXJhbVZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHBhcmFtTmFt
ZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgic3JjIikpOwotICAgICAgICBwYXJhbVZhbHVlcy5hcHBl
bmQoV1RGTW92ZShkYXRhUGFyYW1WYWx1ZSkpOworICAgIAorICAgIGlmIChzcmNJbmRleCA9PSAt
MSAmJiBkYXRhSW5kZXggIT0gLTEpIHsKKyAgICAgICAgcGFyYW1OYW1lcy0+YXBwZW5kKCJzcmMi
KTsKKyAgICAgICAgcGFyYW1WYWx1ZXMtPmFwcGVuZCgoKnBhcmFtVmFsdWVzKVtkYXRhSW5kZXhd
KTsKICAgICB9CiB9CiAKQEAgLTE4MSwxMCArMTgyLDEwIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTCiAgICAgICAgIHBhcmFtVmFsdWVzLmFwcGVuZChwYXJhbS52YWx1ZSgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogdXJsIGFkanVzdG1lbnQgZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rp
b24uCi0gICAgICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIHVybFBhcmFtZXRlci5pc0VtcHR5KCkg
JiYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiY29kZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJ1cmwiKSkpCisgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIHVybFBhcmFt
ZXRlci5pc0VtcHR5KCkgJiYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzcmMiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
Y29kZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ1cmwiKSkpCiAgICAgICAgICAgICB1
cmxQYXJhbWV0ZXIgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGFyYW0udmFs
dWUoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBzZXJ2aWNlVHlwZSBjYWxjdWxhdGlvbiBkb2VzIG5v
dCBiZWxvbmcgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgaWYgKHNlcnZpY2VUeXBlLmlzRW1w
dHkoKSAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidHlwZSIpKSB7Cisg
ICAgICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgInR5cGUiKSkgewogICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwYXJhbS52YWx1ZSgpOwog
ICAgICAgICAgICAgc2l6ZV90IHBvcyA9IHNlcnZpY2VUeXBlLmZpbmQoJzsnKTsKICAgICAgICAg
ICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCkBAIC0yMTQsNyArMjE1LDcgQEAgdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBsdWdpbihWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgVmVjdG9yPFMKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBtYXBEYXRhUGFyYW1Ub1Ny
YyhwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CisgICAgbWFwRGF0YVBhcmFtVG9TcmMoJnBhcmFt
TmFtZXMsICZwYXJhbVZhbHVlcyk7CiAgICAgCiAgICAgLy8gSFRNTDUgc2F5cyB0aGF0IGFuIG9i
amVjdCByZXNvdXJjZSdzIFVSTCBpcyBzcGVjaWZpZWQgYnkgdGhlIG9iamVjdCdzIGRhdGEKICAg
ICAvLyBhdHRyaWJ1dGUsIG5vdCBieSBhIHBhcmFtIGVsZW1lbnQuIEhvd2V2ZXIsIGZvciBjb21w
YXRpYmlsaXR5LCBhbGxvdyB0aGUKQEAgLTI1OCwxMSArMjU5LDExIEBAIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OnNob3VsZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCkKICAgICBpZiAoIWRv
Y3VtZW50KCkucGFnZSgpCiAgICAgICAgIHx8ICFkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3Mo
KS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpCiAgICAgICAgIHx8IGhhc0ZhbGxiYWNrQ29udGVu
dCgpCi0gICAgICAgIHx8ICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYXN0R2V0QXR0
cmlidXRlKGNsYXNzaWRBdHRyKSwgImNsc2lkOjAyYmYyNWQ1LThjMTctNGIyMy1iYzgwLWQzNDg4
YWJkZGM2YiIpKQorICAgICAgICB8fCAhZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdldEF0dHJpYnV0
ZShjbGFzc2lkQXR0ciksICJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4OEFCRERD
NkIiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBtZXRhRWxlbWVu
dCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxNZXRhRWxlbWVudD4oZG9jdW1lbnQoKSkpIHsKLSAg
ICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1ldGFFbGVtZW50Lm5hbWUo
KSwgImdlbmVyYXRvciIpICYmIG1ldGFFbGVtZW50LmNvbnRlbnQoKS5zdGFydHNXaXRoKCJNYWMg
T1MgWCBTZXJ2ZXIgV2ViIFNlcnZpY2VzIFNlcnZlciIsIGZhbHNlKSkKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKG1ldGFFbGVtZW50Lm5hbWUoKSwgImdlbmVyYXRvciIpICYmIG1ldGFF
bGVtZW50LmNvbnRlbnQoKS5zdGFydHNXaXRoKCJNYWMgT1MgWCBTZXJ2ZXIgV2ViIFNlcnZpY2Vz
IFNlcnZlciIsIGZhbHNlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
NDc0LDcgKzQ3NSw3IEBAIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OmNvbnRhaW5zSmF2YUFwcGxl
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6
IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewotICAgICAgICBpZiAoY2hpbGQuaGFz
VGFnTmFtZShwYXJhbVRhZykgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY2hpbGQu
Z2V0TmFtZUF0dHJpYnV0ZSgpLCAidHlwZSIpCisgICAgICAgIGlmIChjaGlsZC5oYXNUYWdOYW1l
KHBhcmFtVGFnKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShjaGlsZC5nZXROYW1lQXR0cmlidXRlKCks
ICJ0eXBlIikKICAgICAgICAgICAgICYmIE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1J
TUVUeXBlKGNoaWxkLmdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLnN0cmluZygpKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoY2hpbGQuaGFzVGFnTmFtZShvYmplY3RUYWcp
ICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihjaGlsZCkuY29udGFpbnNKYXZhQXBwbGV0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCmluZGV4
IGNiMmVkZjVlMjcxNzljNTgxMTVlYTVjOTgwOTg4ZjI4NTEyNTk1YWMuLjVlOTVjZGMwZTYxZGU0
YTU3MGI0ODA3NTU3ZWE0NjAxYzllZTVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBhcmFncmFwaEVsZW1lbnQuY3BwCkBAIC01OCwxMSArNTgsMTEgQEAgYm9vbCBIVE1MUGFyYWdy
YXBoRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY28KIHZvaWQgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAibWlkZGxlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dmFsdWUsICJjZW50ZXIiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAi
bWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJjZW50ZXIiKSkKICAgICAgICAg
ICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKLSAgICAgICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsZWZ0IikpCisgICAgICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibGVmdCIpKQogICAgICAgICAgICAgYWRk
UHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJyaWdodCIpKQorICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInJpZ2h0IikpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5k
ZXggOWNmZWEyZDZjZmE4NjFkNWMzNzJlYzJlNjVhMzViZjBkNzc5NzlkOC4uYmZlZDQ3NzE3YjMz
YWFmNzA2NDVkMjAyNDlkZmRhMmMwMTFiYWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhbUVsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFN0cmluZyBIVE1MUGFyYW1FbGVtZW50
Ojp2YWx1ZSgpIGNvbnN0CiAKIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxQYXJhbWV0ZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiZGF0YSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsICJtb3ZpZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJzcmMi
KTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImRhdGEiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAibW92aWUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3Jj
Iik7CiB9CiAKIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcAppbmRleCA1NDEwNDU2ZjNkNmQwY2ZkZGNiNzhjMWVmN2ViMmRjZDZmNTQ3N2I5Li5l
YzY4OTE3ZjM3NWYyNDhmN2MzMzU1YzIxZDE5ZTJjMzA1MjBhN2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMwMSwyMSArMzAxLDIxIEBAIHN0YXRpYyBi
b29sIGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlLCBib29sJiBiCiAgICAgYm9yZGVyQm90dG9tID0gZmFsc2U7CiAgICAgYm9yZGVyTGVm
dCA9IGZhbHNlOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVl
LCAiYWJvdmUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhYm92ZSIpKQog
ICAgICAgICBib3JkZXJUb3AgPSB0cnVlOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAiYmVsb3ciKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgImJlbG93IikpCiAgICAgICAgIGJvcmRlckJvdHRvbSA9IHRydWU7Ci0gICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJoc2lkZXMiKSkK
KyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImhzaWRlcyIpKQogICAgICAg
ICBib3JkZXJUb3AgPSBib3JkZXJCb3R0b20gPSB0cnVlOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAidnNpZGVzIikpCisgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ2c2lkZXMiKSkKICAgICAgICAgYm9yZGVyTGVmdCA9IGJv
cmRlclJpZ2h0ID0gdHJ1ZTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgImxocyIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVl
LCAibGhzIikpCiAgICAgICAgIGJvcmRlckxlZnQgPSB0cnVlOwotICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicmhzIikpCisgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJyaHMiKSkKICAgICAgICAgYm9yZGVyUmlnaHQgPSB0cnVl
OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiYm94
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJib3JkZXIiKSkKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJveCIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKHZhbHVlLCAiYm9yZGVyIikpCiAgICAgICAgIGJvcmRlclRvcCA9IGJvcmRlckJvdHRv
bSA9IGJvcmRlckxlZnQgPSBib3JkZXJSaWdodCA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIWVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAidm9pZCIpKQorICAgIGVsc2UgaWYgKCFl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInZvaWQiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgSFRNTFRhYmxlRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmCiAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1h
cmdpblJpZ2h0LCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGFsaWduQXR0cikgewog
ICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY2VudGVyIikpIHsKKyAgICAgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImNlbnRlciIpKSB7CiAgICAgICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpblN0YXJ0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICAgICAgICAgIGFkZFBy
b3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5FbmQsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTQwMywx
NSArNDAzLDE1IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAgIG1fZnJhbWVBdHRy
ID0gZ2V0Qm9yZGVyc0Zyb21GcmFtZUF0dHJpYnV0ZVZhbHVlKHZhbHVlLCBib3JkZXJUb3AsIGJv
cmRlclJpZ2h0LCBib3JkZXJCb3R0b20sIGJvcmRlckxlZnQpOwogICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSBydWxlc0F0dHIpIHsKICAgICAgICAgbV9ydWxlc0F0dHIgPSBVbnNldFJ1bGVzOwotICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJub25lIikpCisg
ICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vbmUiKSkKICAgICAgICAgICAg
IG1fcnVsZXNBdHRyID0gTm9uZVJ1bGVzOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImdyb3VwcyIpKQorICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZSwgImdyb3VwcyIpKQogICAgICAgICAgICAgbV9ydWxlc0F0dHIg
PSBHcm91cHNSdWxlczsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUsICJyb3dzIikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCAicm93cyIpKQogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBSb3dzUnVsZXM7Ci0g
ICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY29s
cyIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImNvbHMiKSkK
ICAgICAgICAgICAgIG1fcnVsZXNBdHRyID0gQ29sc1J1bGVzOwotICAgICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImFsbCIpKQorICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImFsbCIpKQogICAgICAgICAgICAgbV9ydWxl
c0F0dHIgPSBBbGxSdWxlczsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2VsbHBhZGRpbmdBdHRy
KSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAppbmRleCA5YmM1YmRhN2Y5NjUwZTk4Nzk4ODRlZTAw
ZDgzZWRkYTQ1MWI0N2U2Li44MzVhZjQ2NDlhYzVlNGJmZDU0YzUzY2MyOWM5ZmFjYWM4Y2VhMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcApAQCAt
NTQsMjQgKzU0LDI0IEBAIHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKSkpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB2
YWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgInRvcCIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ0b3Ai
KSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZVRvcCk7Ci0gICAgICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAibWlkZGxlIikpCisg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibWlkZGxlIikpCiAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVNaWRkbGUpOwotICAgICAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImJvdHRvbSIpKQorICAgICAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJvdHRvbSIpKQogICAgICAgICAg
ICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eVZlcnRpY2FsQWxpZ24sIENTU1ZhbHVlQm90dG9tKTsKLSAgICAgICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJiYXNlbGluZSIpKQorICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJhc2VsaW5lIikpCiAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVCYXNlbGluZSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGFs
aWduQXR0cikgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWUsICJtaWRkbGUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImNl
bnRlciIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJtaWRkbGUiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImNlbnRlciIpKQogICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImFic21pZGRsZSIpKQorICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImFic21pZGRsZSIpKQogICAgICAgICAgICAgYWRk
UHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVDZW50ZXIpOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImxlZnQiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJsZWZ0IikpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NW
YWx1ZVdlYmtpdExlZnQpOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh2YWx1ZSwgInJpZ2h0IikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAicmlnaHQiKSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Vi
a2l0UmlnaHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCB2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBkNWY0
YzY3MmMyYWYzN2ZjNWYyZGQ1MTNmMTc3YjM0YzJlMjYzOGM1Li4yYzhjZTRmODQ3OGM2MDQ4MDA3
ZmI1YTA4YzEwYzIxMDFkNWVlNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTE5MCw5ICsxOTAsOSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
YwogICAgICAgICAvLyBUaGUgdmlydHVhbC9waHlzaWNhbCB2YWx1ZXMgd2VyZSBhIE5ldHNjYXBl
IGV4dGVuc2lvbiBvZiBIVE1MIDMuMCwgbm93IGRlcHJlY2F0ZWQuCiAgICAgICAgIC8vIFRoZSBz
b2Z0L2hhcmQgL29mZiB2YWx1ZXMgYXJlIGEgcmVjb21tZW5kYXRpb24gZm9yIEhUTUwgNCBleHRl
bnNpb24gYnkgSUUgYW5kIE5TIDQuCiAgICAgICAgIFdyYXBNZXRob2Qgd3JhcDsKLSAgICAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAicGh5c2ljYWwiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImhhcmQiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm9uIikpCisgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgInBoeXNpY2FsIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJo
YXJkIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJvbiIpKQogICAgICAgICAgICAgd3Jh
cCA9IEhhcmRXcmFwOwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgIm9mZiIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2
YWx1ZSwgIm9mZiIpKQogICAgICAgICAgICAgd3JhcCA9IE5vV3JhcDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgd3JhcCA9IFNvZnRXcmFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAxNDlmOWRiZjk1MWUwZTZlZjNh
MDU4OGM1NGFiMTZmM2I4MmVlOTU1Li4wOTYzNzIwZGQ5ZjBiMmE2OGQyMTY4OTZmYjcxNzYyMDBm
YzYwNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcApAQCAtMjQ0LDEyICsyNDQsMTIgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVuc2ln
bmUKIAogICAgIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc2VsZWN0aW9uTW9kZSwgInNlbGVjdCIpKSB7CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHNlbGVjdGlvbk1vZGUsICJzZWxlY3QiKSkgewogICAgICAgICBuZXdTZWxl
Y3Rpb25TdGFydCA9IHN0YXJ0OwogICAgICAgICBuZXdTZWxlY3Rpb25FbmQgPSBzdGFydCArIHJl
cGxhY2VtZW50TGVuZ3RoOwotICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc2VsZWN0aW9uTW9kZSwgInN0YXJ0IikpCisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShzZWxlY3Rpb25Nb2RlLCAic3RhcnQiKSkKICAgICAgICAgbmV3U2VsZWN0aW9uU3Rh
cnQgPSBuZXdTZWxlY3Rpb25FbmQgPSBzdGFydDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShzZWxlY3Rpb25Nb2RlLCAiZW5kIikpCisgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2Uoc2VsZWN0aW9uTW9kZSwgImVuZCIpKQogICAgICAgICBuZXdTZWxlY3Rp
b25TdGFydCA9IG5ld1NlbGVjdGlvbkVuZCA9IHN0YXJ0ICsgcmVwbGFjZW1lbnRMZW5ndGg7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIERlZmF1bHQgaXMgInByZXNlcnZlIi4KQEAgLTc0NSwxMCAr
NzQ1LDEwIEBAIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWN0aW9uRm9y
Rm9ybURhdGEoKSBjb25zdAogICAgICAgICBpZiAoZGlyQXR0cmlidXRlVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQorICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJydGwiKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImx0ciIpKQogICAgICAgICAgICAgcmV0dXJuIGRpckF0
dHJpYnV0ZVZhbHVlOwogCi0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShkaXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyQXR0cmlidXRlVmFsdWUsICJhdXRvIikpIHsKICAgICAgICAgICAgIGJvb2wgaXNB
dXRvOwogICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihlbGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1
dG9BdHRyaWJ1dGUoaXNBdXRvKTsKICAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09
IFJUTCA/ICJydGwiIDogImx0ciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCA5MTg1YjVkNzNlNWQwZTAxZjc0MGNmODFiNmJkMTM5OTQ2ODA0M2E0Li5lZGVj
NTQwNDQxNGFhMmZiZjNjYzlhNzU0YTc4YTBlZWY5NGYxNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cgogI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICAgICAgaWYgKG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIpIHsKICAgICAg
ICAgICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShmYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6d2Via2l0YWly
cGxheUF0dHIpLCAiZGVueSIpKQorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZh
c3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp3ZWJraXRhaXJwbGF5QXR0ciksICJkZW55IikpCiAg
ICAgICAgICAgICAgICAgZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgbWVkaWFTZXNzaW9u
KCkuc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKnRoaXMsIGRpc2FibGVkKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDdkYTRmNGFmZjU0YzRhZDZj
MDNlOWE0NDhiMmYyNzgxMTcyMTRmMWMuLmRhMzQ2NjA4NDdiZGNjNzI2MjdhZmM4ODdlZjUwNDdk
Y2I0MGQ4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTEwMDYsNyArMTAwNiw4
IEBAIHZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFCiAgICAgaWYgKG5ld1ZhbHVlIDwgc3RlcFJhbmdl
Lm1pbmltdW0oKSkKICAgICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UubWluaW11bSgpOwogCi0g
ICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSkKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBT
dHJpbmcgPSBlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKCFl
cXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCiAgICAgICAgIG5ld1ZhbHVlID0g
c3RlcFJhbmdlLmFsaWduVmFsdWVGb3JTdGVwKGN1cnJlbnQsIG5ld1ZhbHVlKTsKIAogICAgIGlm
IChuZXdWYWx1ZSAtIHN0ZXBSYW5nZS5tYXhpbXVtKCkgPiBhY2NlcHRhYmxlRXJyb3JWYWx1ZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5jcHAKaW5kZXggZDQ2MjE1NjY0
ZTEzMzY5ZTY1NDcwMGZjZDMzNzQ5NDNjNTU0MWE3ZC4uYWU3MGM2MjgxMTkyZWFlODljMjRhNTU4
MmRkZTI5NzAyMTFhNGQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVs
QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUu
Y3BwCkBAIC00MiwxOSArNDIsMTkgQEAgTGlua1JlbEF0dHJpYnV0ZTo6TGlua1JlbEF0dHJpYnV0
ZSgpCiAKIExpbmtSZWxBdHRyaWJ1dGU6OkxpbmtSZWxBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBy
ZWwpCiB7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlbCwgInN0eWxl
c2hlZXQiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQog
ICAgICAgICBpc1N0eWxlU2hlZXQgPSB0cnVlOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UocmVsLCAiaWNvbiIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24i
KSkKICAgICAgICAgaWNvblR5cGUgPSBGYXZpY29uOwogI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xP
QURJTkcpCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVsLCAi
YXBwbGUtdG91Y2gtaWNvbiIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwg
ImFwcGxlLXRvdWNoLWljb24iKSkKICAgICAgICAgaWNvblR5cGUgPSBUb3VjaEljb247Ci0gICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVsLCAiYXBwbGUtdG91Y2gt
aWNvbi1wcmVjb21wb3NlZCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwg
ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiKSkKICAgICAgICAgaWNvblR5cGUgPSBUb3Vj
aFByZWNvbXBvc2VkSWNvbjsKICNlbmRpZgotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICBpc0ROU1ByZWZldGNoID0g
dHJ1ZTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZWwsICJh
bHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
bCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgaXNTdHlsZVNoZWV0ID0gdHJ1
ZTsKICAgICAgICAgaXNBbHRlcm5hdGUgPSB0cnVlOwogICAgIH0gZWxzZSB7CkBAIC02NCwyMiAr
NjQsMjIgQEAgTGlua1JlbEF0dHJpYnV0ZTo6TGlua1JlbEF0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IHJlbCkKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbGlzdDsKICAgICAgICAgcmVsQ29weS5zcGxp
dCgnICcsIGxpc3QpOwogICAgICAgICBmb3IgKGF1dG8mIHdvcmQgOiBsaXN0KSB7Ci0gICAgICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uod29yZCwgInN0eWxlc2hlZXQi
KSkKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3b3JkLCAic3R5bGVzaGVldCIp
KQogICAgICAgICAgICAgICAgIGlzU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgICAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3b3JkLCAiYWx0ZXJuYXRlIikpCisg
ICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3b3JkLCAiYWx0ZXJuYXRlIikp
CiAgICAgICAgICAgICAgICAgaXNBbHRlcm5hdGUgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uod29yZCwgImljb24iKSkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHdvcmQsICJpY29uIikpCiAgICAgICAgICAg
ICAgICAgaWNvblR5cGUgPSBGYXZpY29uOwogI2lmIEVOQUJMRShUT1VDSF9JQ09OX0xPQURJTkcp
Ci0gICAgICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh3b3Jk
LCAiYXBwbGUtdG91Y2gtaWNvbiIpKQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2Uod29yZCwgImFwcGxlLXRvdWNoLWljb24iKSkKICAgICAgICAgICAgICAgICBpY29uVHlw
ZSA9IFRvdWNoSWNvbjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHdvcmQsICJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIikpCisgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3b3JkLCAiYXBwbGUtdG91Y2gtaWNvbi1w
cmVjb21wb3NlZCIpKQogICAgICAgICAgICAgICAgIGljb25UeXBlID0gVG91Y2hQcmVjb21wb3Nl
ZEljb247CiAjZW5kaWYKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICAgICAgICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHdvcmQsICJwcmVmZXRjaCIpKQor
ICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uod29yZCwgInByZWZldGNoIikp
CiAgICAgICAgICAgICAgICAgaXNMaW5rUHJlZmV0Y2ggPSB0cnVlOwotICAgICAgICAgICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uod29yZCwgInN1YnJlc291cmNlIikp
CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3b3JkLCAic3VicmVzb3Vy
Y2UiKSkKICAgICAgICAgICAgICAgICBpc0xpbmtTdWJyZXNvdXJjZSA9IHRydWU7CiAjZW5kaWYK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAK
aW5kZXggMWE0ZGU2NDBhNDQ3MDk5Nzg0YWFlMjVhY2E3NDc2MWRkMjg1NzVjYi4uYmI1ODBjMzJi
MmRlZDdkMGE3OGU1MjZhMTMzNGZjNTdjYjNlNDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0yMzcsMTEgKzIzNywxMSBAQCBib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgU3RyaW5nIGxlZ2FjeUFpcnBs
YXlBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6Ondl
YmtpdGFpcnBsYXlBdHRyKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIpKSB7CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSwgImRlbnkiKSkgewogICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSwgImFsbG93IikpIHsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UobGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiYWxsb3ci
KSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGxlZ2FjeSBh
dHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCA1MWQyNGU3N2QxZmVkNzBlYmVhNDY5NGY0ZGZi
OTRhMjFjNzJkMTAyLi5mNjYwNGU4N2U4NDEyN2EzMGZmYzZjYjUyMDIxNjgxOTA1ZDQ2ODY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xNjYsOCArMTY2LDgg
QEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQg
ZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmUKIHsKICAgICBwcmVmZXJyZWRTaXplID0gZGVmYXVs
dFNpemU7CiAKLSAgICBhdXRvJiBzdGVwU3RyaW5nID0gZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1
dGUoc3RlcEF0dHIpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdGVw
U3RyaW5nLCAiYW55IikpCisgICAgY29uc3QgU3RyaW5nIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCku
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0
ZXBTdHJpbmcsICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgRGVj
aW1hbCBtaW5pbXVtID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHAKaW5kZXggOGRhNWMyY2NhZGYwOGZkYTEzNDg5NjQ1OWUwNDc1NWUwZTZjMjZjNS4uOTk5OGJj
NjlmMzkyZTJmM2Q4ZjQ5OGQxOWYyN2VlMDBmOGFmZTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBTdGVwUmFuZ2UgUmFuZ2VJbnB1
dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBj
b25zdAogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVjaXNpb25WYWx1ZSA9IGVsZW1lbnQo
KS5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICghcHJlY2lzaW9uVmFs
dWUuaXNOdWxsKCkpIHsKLSAgICAgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpID8gRGVjaW1hbDo6bmFu
KCkgOiAxOworICAgICAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShw
cmVjaXNpb25WYWx1ZSwgImZsb2F0IikgPyBEZWNpbWFsOjpuYW4oKSA6IDE7CiAgICAgICAgIHJl
dHVybiBTdGVwUmFuZ2UobWluaW11bSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2Ny
aXB0aW9uKTsKICAgICB9CiAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBl
OjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAgICAvLyBGSVhN
RTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUgc3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdl
IGluY3JlYXNlCiAgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2
YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KLSAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShz
dGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmlt
dW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9
IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwg
ImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEw
MCA6IHN0ZXBSYW5nZS5zdGVwKCk7CiAgICAgY29uc3QgRGVjaW1hbCBiaWdTdGVwID0gc3RkOjpt
YXgoKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwLCBzdGVw
KTsKIAogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2Uu
Y3BwCmluZGV4IGMwY2I0ZmUxZDU1YWU0YTU4NmM5MGJjNTc2NmMyZDg1ODAxZTljY2IuLmViZjMx
ZDRhNTdjMjQzM2U3YWZiOWFlYTRhMTdkNDExNDc0ZDI4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBS
YW5nZS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgRGVjaW1hbCBTdGVwUmFuZ2U6OnBhcnNlU3RlcChB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHQKICAgICBp
ZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGVwRGVzY3JpcHRpb24u
ZGVmYXVsdFZhbHVlKCk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
c3RlcFN0cmluZywgImFueSIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ZXBTdHJp
bmcsICJhbnkiKSkgewogICAgICAgICBzd2l0Y2ggKGFueVN0ZXBIYW5kbGluZykgewogICAgICAg
ICBjYXNlIFJlamVjdEFueToKICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsOjpuYW4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCAxYzhiMjAzNTc4
NWI1M2IwN2E1MmI0OGJhMDhiMzllOWFiYWRlN2VmLi5iNjgzYTJlYTY5OWViYWNhOGEzNjUyMTcz
NmU3YTA4NTJkN2YxYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCkBAIC00NSw5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBDb2xv
clBhcnNlUmVzdWx0IHsgUGFyc2VkUkdCQSwgUGFyc2VkQ3VycmVudENvbG9yLCBQYXJzZWRTeXN0
ZW1Db2xvciwgUGFyc2VGYWlsZWQgfTsKIAotc3RhdGljIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VD
b2xvcihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBEb2N1
bWVudCogZG9jdW1lbnQgPSBudWxscHRyKQorc3RhdGljIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VD
b2xvcihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBEb2N1
bWVudCogZG9jdW1lbnQgPSAwKQogewotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb2xvclN0cmluZywgImN1cnJlbnRjb2xvciIpKQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShjb2xvclN0cmluZywgImN1cnJlbnRjb2xvciIpKQogICAgICAgICByZXR1cm4gUGFyc2Vk
Q3VycmVudENvbG9yOwogICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3IocGFyc2VkQ29sb3Is
IGNvbG9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIFBhcnNlZFJHQkE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNjZj
YmFmMzZmMDViZjc2ZDZhZDQzN2JhNmJmZDliYzgwZjA1ZWFlNC4uMTJlNDEwODc1N2U1ZmFiMDlk
YzZhMmQ2Y2UyMDM2YWMxMWQwYjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0Q29tcGF0aWJpbGl0eU1vZGVGcm9tRG9jdHlwZShj
b25zdCBTdHJpbmcmIG5hbWUsIGMKICAgICAgICAgfHwgcHVibGljSWQuc3RhcnRzV2l0aCgiLS8v
VzNDLy9EVEQgSFRNTCBFeHBlcmltZW50YWwgOTcwNDIxLy8iLCBmYWxzZSkKICAgICAgICAgfHwg
cHVibGljSWQuc3RhcnRzV2l0aCgiLS8vVzNDLy9EVEQgVzMgSFRNTC8vIiwgZmFsc2UpCiAgICAg
ICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1czTy8vRFREIFczIEhUTUwgMy4wLy8iLCBm
YWxzZSkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQs
ICItLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8iKQorICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQ2FzZShwdWJsaWNJZCwgIi0vL1czTy8vRFREIFczIEhUTUwgU3RyaWN0IDMuMC8v
RU4vLyIpCiAgICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dpdGgoIi0vL1dlYlRlY2hzLy9EVEQg
TW96aWxsYSBIVE1MIDIuMC8vIiwgZmFsc2UpCiAgICAgICAgIHx8IHB1YmxpY0lkLnN0YXJ0c1dp
dGgoIi0vL1dlYlRlY2hzLy9EVEQgTW96aWxsYSBIVE1MLy8iLCBmYWxzZSkKLSAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHVibGljSWQsICItL3czYy9kdGQgaHRtbCA0
LjAgdHJhbnNpdGlvbmFsL2VuIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocHVibGljSWQsICJodG1sIikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc3lzdGVtSWQsICJodHRwOi8vd3d3LmlibS5jb20vZGF0YS9kdGQvdjExL2libXho
dG1sMS10cmFuc2l0aW9uYWwuZHRkIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHVi
bGljSWQsICItL1czQy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsL0VOIikKKyAgICAgICAgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UocHVibGljSWQsICJIVE1MIikKKyAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0Nhc2Uoc3lzdGVtSWQsICJodHRwOi8vd3d3LmlibS5jb20vZGF0YS9kdGQvdjExL2libXho
dG1sMS10cmFuc2l0aW9uYWwuZHRkIikKICAgICAgICAgfHwgKHN5c3RlbUlkLmlzRW1wdHkoKSAm
JiBwdWJsaWNJZC5zdGFydHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvLyIs
IGZhbHNlKSkKICAgICAgICAgfHwgKHN5c3RlbUlkLmlzRW1wdHkoKSAmJiBwdWJsaWNJZC5zdGFy
dHNXaXRoKCItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy8iLCBmYWxzZSkpKSB7
CiAgICAgICAgIHNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGU6
OlF1aXJrc01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcAppbmRleCBjNzhkOTVlZGM1YjYzZDdiZDU5ODVhMGNjMDg1MDQxZmMzZDE4ZWEz
Li4xMzg5N2JmZTQ1NGYzZWMwYjI5OGU2YWNjOTRiYWIyMDZhZjFlNjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMjg0LDggKzI4
NCw4IEBAIGJvb2wgSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChIVE1M
U3RhY2tJdGVtJiBpdGVtKQogICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGVuY29kaW5nQXR0ciA9
IGl0ZW0uZmluZEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRyKTsKICAgICAgICAg
aWYgKGVuY29kaW5nQXR0cikgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBlbmNvZGluZyA9
IGVuY29kaW5nQXR0ci0+dmFsdWUoKTsKLSAgICAgICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShlbmNvZGluZywgInRleHQvaHRtbCIpCi0gICAgICAgICAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW5jb2RpbmcsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShlbmNvZGlu
ZywgInRleHQvaHRtbCIpCisgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZW5j
b2RpbmcsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggYWY5ZmQ1MGViOWVjMjg4YjY0MTMzYjI4ZjFk
OTU5OTI3Y2I1ZjNhYy4uNzUyZGJlZWRiMTc3OGU4MWJiNjRjMmI3NzViMDYyNjNiNTA2MDI5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgVGV4dEVuY29kaW5nIEhUTUxNZXRhQ2hhcnNl
dFBhcnNlcjo6ZW5jb2RpbmdGcm9tTWV0YUF0dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlTGkKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZS5zZWNvbmQ7CiAK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpIHsKLSAgICAgICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVWYWx1ZSwgImNv
bnRlbnQtdHlwZSIpKQorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0
ZVZhbHVlLCAiY29udGVudC10eXBlIikpCiAgICAgICAgICAgICAgICAgZ290UHJhZ21hID0gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmIChjaGFyc2V0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
aWYgKGF0dHJpYnV0ZU5hbWUgPT0gY2hhcnNldEF0dHIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGE2MmRlMzMwYjA5NmM4
NjQ4ODEyNWU2N2FjODNhYjU1M2VlNGI2MDAuLjJhODE2OGZkOWMyOWI0NWYzOWMxMzlhYTQwMjM1
YmY2NmQyYThlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcApAQCAtMjI5LDEzICsyMjksMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkKICAgICAgICAgICAgICAgICBz
ZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwogICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2go
YXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQotICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdl
ID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlVmFsdWUsICJpbWFnZSIp
OworICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
cmlidXRlVmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFRhZ0lkOjpNZXRhOgogICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJp
YnV0ZU5hbWUsIGNvbnRlbnRBdHRyKSkKICAgICAgICAgICAgICAgICBtX21ldGFDb250ZW50ID0g
YXR0cmlidXRlVmFsdWU7CiAgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1l
LCBuYW1lQXR0cikpCi0gICAgICAgICAgICAgICAgbV9tZXRhSXNWaWV3cG9ydCA9IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF0dHJpYnV0ZVZhbHVlLCAidmlld3BvcnQiKTsKKyAgICAg
ICAgICAgICAgICBtX21ldGFJc1ZpZXdwb3J0ID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRl
VmFsdWUsICJ2aWV3cG9ydCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGFn
SWQ6OkJhc2U6CiAgICAgICAgIGNhc2UgVGFnSWQ6OlN0eWxlOgpAQCAtMzE1LDcgKzMxNSw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGNyb3NzT3JpZ2luTW9kZUFsbG93c0Nvb2tpZXMoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRlbnRpYWxz
Iik7CisgICAgICAgIHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShtX2Nyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50aWFscyIpOwogICAgIH0K
IAogICAgIFRhZ0lkIG1fdGFnSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcAppbmRleCBhMjFjYzJkYzAzOWFmMzAwNWIzYzgwZmM4NGFlNTcxN2Y3
YWIzODVjLi5kYjgxN2E4OGEwZDUyZmRlNzE3NDhmOTZhYjRjNjQwYjdlMjExZjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTc3Nyw3
ICs3NzcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFj
dGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0U2VsZkNsb3Np
bmdIVE1MRWxlbWVudCgmdG9rZW4pOwogICAgICAgICBBdHRyaWJ1dGUqIHR5cGVBdHRyaWJ1dGUg
PSBmaW5kQXR0cmlidXRlKHRva2VuLmF0dHJpYnV0ZXMoKSwgdHlwZUF0dHIpOwotICAgICAgICBp
ZiAoIXR5cGVBdHRyaWJ1dGUgfHwgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGVB
dHRyaWJ1dGUtPnZhbHVlKCksICJoaWRkZW4iKSkKKyAgICAgICAgaWYgKCF0eXBlQXR0cmlidXRl
IHx8ICFlcXVhbElnbm9yaW5nQ2FzZSh0eXBlQXR0cmlidXRlLT52YWx1ZSgpLCAiaGlkZGVuIikp
CiAgICAgICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEwMTksNyArMTAxOSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgfQogICAgIGlmICh0
b2tlbi5uYW1lKCkgPT0gaW5wdXRUYWcpIHsKICAgICAgICAgQXR0cmlidXRlKiB0eXBlQXR0cmli
dXRlID0gZmluZEF0dHJpYnV0ZSh0b2tlbi5hdHRyaWJ1dGVzKCksIHR5cGVBdHRyKTsKLSAgICAg
ICAgaWYgKHR5cGVBdHRyaWJ1dGUgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZUF0dHJpYnV0ZS0+dmFsdWUoKSwgImhpZGRlbiIpKSB7CisgICAgICAgIGlmICh0eXBlQXR0cmli
dXRlICYmIGVxdWFsSWdub3JpbmdDYXNlKHR5cGVBdHRyaWJ1dGUtPnZhbHVlKCksICJoaWRkZW4i
KSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBtX3RyZWUu
aW5zZXJ0U2VsZkNsb3NpbmdIVE1MRWxlbWVudCgmdG9rZW4pOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBkZDAwZjY3
YmVmMWYyMDRkMGIzNWE3NmEzNjZhNjc4Mzc2YjE0OWQyLi5jMjZmZmM4YjNjOTkzOWNiNWRiODc1
ZDBlMzdhNDViMGQxNjRhNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIGlzTmFtZU9mSW5saW5lRXZl
bnRIYW5kbGVyKGNvbnN0IFZlY3RvcjxVQ2hhciwgMzI+JiBuYW1lKQogc3RhdGljIGJvb2wgaXNE
YW5nZXJvdXNIVFRQRXF1aXYoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTdHJpbmcgZXF1
aXYgPSB2YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZXF1aXYsICJyZWZyZXNoIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZXF1aXYsICJzZXQtY29va2llIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdD
YXNlKGVxdWl2LCAicmVmcmVzaCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGVxdWl2LCAic2V0LWNv
b2tpZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBkZWNvZGUxNkJpdFVuaWNvZGVFc2Nh
cGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOGU5MjYzMDI0ODY0NDYzMWZlMTlmYTdkMjFiZmQ2
YTdkNmJjMzNjZi4uOWViMTU5ZmYxMjAxYzFjNzgzMzU1OGY5ZjhkNTc3ODEwOWU0ODYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMjQ3LDggKzI0
NywxMiBAQCBib29sIFdlYlZUVFBhcnNlcjo6aGFzUmVxdWlyZWRGaWxlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGxpbmUpCiAgICAgLy8gQSBXZWJWVFQgZmlsZSBpZGVudGlmaWVyIGNvbnNpc3Rz
IG9mIGFuIG9wdGlvbmFsIEJPTSBjaGFyYWN0ZXIsCiAgICAgLy8gdGhlIHN0cmluZyAiV0VCVlRU
IiBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBzcGFjZSBvciB0YWIgY2hhcmFjdGVyLAogICAgIC8v
IGFuZCBhbnkgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGxpbmUgdGVybWluYXRv
cnMgLi4uCisgICAgaWYgKGxpbmUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aChmaWxlSWRlbnRpZmllciwgZmlsZUlkZW50aWZpZXJM
ZW5ndGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobGluZS5sZW5ndGgoKSA+
IGZpbGVJZGVudGlmaWVyTGVuZ3RoICYmICFpc0hUTUxTcGFjZShsaW5lW2ZpbGVJZGVudGlmaWVy
TGVuZ3RoXSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZmRh
NzdlNDM4NjY1OTAwOWNmZDkyNzA3YTQzNTk5MmE5YzVjY2VhZi4uZDY2MDIyNmI1NDEyM2I1MzEy
MGM0OGQ4Zjg2NjNjYTcxZTRkNDMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsCiAgICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUo
bWltZVR5cGUubG93ZXIoKSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmll
bnRYTUxEZWNvZGluZygpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIsICJVVEYtOCIpOwogICAgIGVsc2UKICAg
ICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIs
ICJVVEYtOCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZGJkNDMxYTNiYWI0ZmM3MmFlZDE0YjVjZWQyZWYzOTdiZDlkODVk
My4uMTVkNDgzOTljZWE2NWIwZTI3NGI2NDAzMDNjMzM4YWY3OTNkNWI0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVPdGhl
clJlc291cmNlVGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogICAgIGVsc2UgaWYgKERPTUltcGxl
bWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlLmxvd2VyKCkpKSB7CiAgICAgICAgIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwog
ICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCisg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQog
ICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwi
LCAiVVRGLTgiKTsKICAgICBlbHNlIGlmIChtaW1lVHlwZSA9PSAidGV4dC9wbGFpbiIpCiAgICAg
ICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAi
SVNPLTg4NTktMSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAppbmRleCAxN2EwYjBiZDI0ZWMyODE3ZjgyNThkMGYxMmIwYzI1ODhm
MjZjNTMxLi45ZmVmOGE3MmViMjYwNDFjMzEwZjEwYTc3MTVkYTI3NDIzMzA0MzhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApA
QCAtNTYsOSArNTYsOSBAQCBib29sIGlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdEhlYWRl
cldoaXRlbGlzdChIVFRQSGVhZGVyTmFtZSBuYW1lLCBjb25zdCBTdAogICAgIGNhc2UgSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRUeXBlOiB7CiAgICAgICAgIC8vIFByZWZsaWdodCBpcyByZXF1aXJl
ZCBmb3IgTUlNRSB0eXBlcyB0aGF0IGNhbiBub3QgYmUgc2VudCB2aWEgZm9ybSBzdWJtaXNzaW9u
LgogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUs
ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKQotICAgICAgICAgICAgfHwgZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgIm11bHRpcGFydC9mb3JtLWRhdGEiKQotICAg
ICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvcGxhaW4i
KTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRp
b24veC13d3ctZm9ybS11cmxlbmNvZGVkIikKKyAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdD
YXNlKG1pbWVUeXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpCisgICAgICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgInRleHQvcGxhaW4iKTsKICAgICB9CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggMTdhNjI4Yzk4MDk0NDcyYTZmZDQwMWRhYjNlZDYxYWIyMGI3YjEzYi4u
OTQ2MGI4NDA1MGZlZjNkMzhhZDI1YjI4NzgxOTMxZjMwNWQ3MzEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC03MTQsMTIgKzcxNCwxMiBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9s
aWN5KQogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBQb2xpY3lVc2U6IHsKICAgICAg
ICAgLy8gUHJldmVudCByZW1vdGUgd2ViIGFyY2hpdmVzIGZyb20gbG9hZGluZyBiZWNhdXNlIHRo
ZXkgY2FuIGNsYWltIHRvIGJlIGZyb20gYW55IGRvbWFpbiBhbmQgdGh1cyBhdm9pZCBjcm9zcy1k
b21haW4gc2VjdXJpdHkgY2hlY2tzICg0MTIwMjU1KS4KLSAgICAgICAgYm9vbCBpc1JlbW90ZVdl
YkFyY2hpdmUgPSAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiKQotICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94LW1pbWVhcmNoaXZlIikKKyAgICAg
ICAgYm9vbCBpc1JlbW90ZVdlYkFyY2hpdmUgPSAoZXF1YWxJZ25vcmluZ0Nhc2UoImFwcGxpY2F0
aW9uL3gtd2ViYXJjaGl2ZSIsIG1pbWVUeXBlKQorICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoImFwcGxpY2F0aW9uL3gtbWltZWFyY2hpdmUiLCBtaW1lVHlwZSkKICNpZiBQTEFURk9S
TShHVEspCi0gICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1l
VHlwZSwgIm1lc3NhZ2UvcmZjODIyIikKKyAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNl
KCJtZXNzYWdlL3JmYzgyMiIsIG1pbWVUeXBlKQogI2VuZGlmCi0gICAgICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgIm11bHRpcGFydC9yZWxhdGVkIikp
CisgICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZSgibXVsdGlwYXJ0L3JlbGF0ZWQiLCBt
aW1lVHlwZSkpCiAgICAgICAgICAgICAmJiAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYg
IVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29s
KCkpOwogICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhblNob3dNSU1FVHlw
ZShtaW1lVHlwZSkgfHwgaXNSZW1vdGVXZWJBcmNoaXZlKSB7CiAgICAgICAgICAgICBmcmFtZUxv
YWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2Fubm90U2hvd01JTUVUeXBlKG1fcmVzcG9uc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggNWM0ZDU4MWFiMzBh
MGFjZWZlNGJlZWFkOThkNTFiYzU0N2NlYTk0NC4uYTRhNGIzNzVhZWE5MTgyYmFmOTE5YTAyNzMw
NjZlOTFlMzRmNjYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRv
VVJMKFVSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKIHsKICAgICBTdHJpbmcg
Ym9keSA9IGRhdGEuZmxhdHRlblRvU3RyaW5nKCk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZW5jb2RpbmdUeXBlLCAidGV4dC9wbGFpbiIpKSB7CisgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGVuY29kaW5nVHlwZSwgInRleHQvcGxhaW4iKSkgewogICAgICAgICAv
LyBDb252ZW50aW9uIHNlZW1zIHRvIGJlIHRvIGRlY29kZSwgYW5kIHMvJi9cclxuLy4gQWxzbywg
c3BhY2VzIGFyZSBlbmNvZGVkIGFzICUyMC4KICAgICAgICAgYm9keSA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyhib2R5LnJlcGxhY2VXaXRoTGl0ZXJhbCgnJicsICJcclxuIikucmVwbGFjZSgn
KycsICcgJykgKyAiXHJcbiIpOwogICAgIH0KQEAgLTkwLDkgKzkwLDkgQEAgdm9pZCBGb3JtU3Vi
bWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VBY3Rpb24oY29uc3QgU3RyaW5nJiBhY3Rpb24pCiAK
IFN0cmluZyBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogewotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQogICAgICAgICByZXR1cm4gIm11bHRpcGFy
dC9mb3JtLWRhdGEiOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBl
LCAidGV4dC9wbGFpbiIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAidGV4dC9w
bGFpbiIpKQogICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iOwogICAgIHJldHVybiAiYXBwbGlj
YXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjp1cGRhdGVFbmNvZGluZ1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiBGb3JtU3VibWlzc2lvbjo6TWV0aG9kIEZvcm1TdWJtaXNzaW9uOjpBdHRy
aWJ1dGVzOjpwYXJzZU1ldGhvZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAicG9zdCIpID8gRm9ybVN1Ym1p
c3Npb246OlBvc3RNZXRob2QgOiBGb3JtU3VibWlzc2lvbjo6R2V0TWV0aG9kOworICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAicG9zdCIpID8gRm9ybVN1Ym1pc3Npb246OlBvc3RN
ZXRob2QgOiBGb3JtU3VibWlzc2lvbjo6R2V0TWV0aG9kOwogfQogCiB2b2lkIEZvcm1TdWJtaXNz
aW9uOjpBdHRyaWJ1dGVzOjp1cGRhdGVNZXRob2RUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDRkZjBhNjYwYmQzNWM4NGE0NjU0
YjljNjk3NzIxMTBkNzRkMzYzZTQuLjAyOTc3ZjYyNDVkNTRmM2E3MjRkNjlkMjA4MzQwODM3OTYx
NTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjgwNiw3ICsy
ODA2LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlv
bihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFMKIAogICAgIC8vIEZJWE1FOiBXaGF0IGFi
b3V0IGxvYWQgdHlwZXMgb3RoZXIgdGhhbiBTdGFuZGFyZCBhbmQgUmVsb2FkPwogCi0gICAgcmV0
dXJuICghaXNGb3JtU3VibWlzc2lvbiB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSho
dHRwTWV0aG9kLCAiZ2V0IikpCisgICAgcmV0dXJuICghaXNGb3JtU3VibWlzc2lvbiB8fCBlcXVh
bElnbm9yaW5nQ2FzZShodHRwTWV0aG9kLCAiR0VUIikpCiAgICAgICAgICYmIGxvYWRUeXBlICE9
IEZyYW1lTG9hZFR5cGU6OlJlbG9hZAogICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRU
eXBlOjpSZWxvYWRGcm9tT3JpZ2luCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5
cGU6OlNhbWUKQEAgLTMyMTYsNyArMzIxNiw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFRy
ZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBib29sIEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwuc3RyaW5n
KCksICJhYm91dDpzcmNkb2MiKSkKKyAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHVybC5zdHJp
bmcoKSwgImFib3V0OnNyY2RvYyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLm93bmVyRWxlbWVudCgpOwog
ICAgIGlmICghb3duZXJFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
aW5kZXggMzRiNGJhMzg3YTk2M2QzNTA0OGM3NjQ0YTk4YmExN2M3MDE3OWNkOS4uMjhlZjA3ZmI2
YmFkNDUxMjAwMmFkYjdiODZhN2RmMDMyZTU1ZjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRl
RnJvbUVsZW1lbnQoKQogCiAgICAgICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBlbGVtZW50
KCkuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cik7CiAgICAgICAg
IGlmICghY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBTdG9yZWRDcmVk
ZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOworICAgICAgICAgICAgU3RvcmVkQ3Jl
ZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IGVxdWFsSWdub3JpbmdDYXNlKGNyb3NzT3JpZ2lu
TW9kZSwgInVzZS1jcmVkZW50aWFscyIpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nl
c3NDb250cm9sKHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBkb2N1bWVudC5zZWN1
cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZGE0N2RkOWQyODNm
MTZkODJhNzExMzE2YzZkY2YwMGE5MjAyNzI1My4uZDdjYzQ4ZGQyZTk1ZDhjMGRlNTZiMDBmZjQ4
ZmMyMDg0NWQyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aQogCiAg
ICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBidWZmZXJpbmdQb2xpY3kgPSBvcHRpb25zICYgTG9hZE9w
dGlvbjo6QnVmZmVyRGF0YSA/IFdlYkNvcmU6OkJ1ZmZlckRhdGEgOiBXZWJDb3JlOjpEb05vdEJ1
ZmZlckRhdGE7CiAgICAgUmVxdWVzdE9yaWdpblBvbGljeSBjb3JzUG9saWN5ID0gIW1fY3Jvc3NP
cmlnaW5Nb2RlLmlzTnVsbCgpID8gUG90ZW50aWFsbHlDcm9zc09yaWdpbkVuYWJsZWQgOiBVc2VE
ZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZTsKLSAgICBTdG9yZWRDcmVkZW50aWFscyBh
bGxvd0NyZWRlbnRpYWxzID0gbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9jcm9zc09yaWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMi
KSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7
CisgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jvc3NPcmlnaW5N
b2RlLmlzTnVsbCgpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNl
LWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOwogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6
RG9Qb2xpY3lDaGVjayBpcyBhIHBsYWNlaG9sZGVyIHZhbHVlLiBJdCBkb2VzIG5vdCBhZmZlY3Qg
dGhlIHJlcXVlc3Qgc2luY2UgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZG9lcyBub3QgYXBwbHkg
dG8gcmF3IHJlc291cmNlcy4KICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0
KHJlcXVlc3QsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZm
Q29udGVudCwgYnVmZmVyaW5nUG9saWN5LCBhbGxvd0NyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVu
dEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJlcXVlc3RDcmVkZW50aWFs
cywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVy
c0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggMGRlNDM0YzczMzc2NDY0YTRhZjdhNTE3MjdhMzBk
MjBmZjcwOTBiOC4uYjViNmRhN2U4NDBhNTA4ZGUwYjBkMDVmNzJhODNkZDEwZjgyNDAxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC0yMzksOSArMjM5LDkg
QEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICBTdHJpbmcgY29kZUJhc2VVUkxTdHJpbmc7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtTmFtZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcmFtTmFtZXNbaV0s
ICJiYXNldXJsIikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwYXJhbU5hbWVzW2ld
LCAiYmFzZXVybCIpKQogICAgICAgICAgICAgYmFzZVVSTFN0cmluZyA9IHBhcmFtVmFsdWVzW2ld
OwotICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwYXJhbU5h
bWVzW2ldLCAiY29kZWJhc2UiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cGFyYW1OYW1lc1tpXSwgImNvZGViYXNlIikpCiAgICAgICAgICAgICBjb2RlQmFzZVVSTFN0cmlu
ZyA9IHBhcmFtVmFsdWVzW2ldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGJhNmJkZGIzNjQxMmEyNzZiZTE2OTYxYjU1ZDIx
NWJiMmEyNmJhYmYuLjJkN2VkNzI2MTM5M2ZkMmFjMGQyYmNiYmM3N2RjOTAzMTQ5NmE2YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMw
Miw5ICszMDIsOSBAQCBicmVha0JyZWFrOgogCiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpDb250ZW50
VHlwZSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpkZXRlcm1pbmVDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgInRleHQvY3NzIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBl
LCAidGV4dC9jc3MiKSkKICAgICAgICAgcmV0dXJuIENTUzsKLSAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKICAgICAgICAgcmV0dXJuIEhUTUw7
CiAgICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKICAg
ICAgICAgcmV0dXJuIFhNTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5j
cHAKaW5kZXggZTMwY2FlMmU0MjkyYzYyMTVjODg2Yzg3Y2NlZTQ2MGQ2NmMzNTViNS4uNmRhMTA4
MzA4MDg5YzIyZGI5OWJlZDJjNWQ1OTI2NjkwYzU3MTBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIFRleHRUcmFj
a0xvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1v
ZGUsIGJvb2wgaQogCiAgICAgaWYgKCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKICAgICAg
ICAgbV9jcm9zc09yaWdpbk1vZGUgPSBjcm9zc09yaWdpbk1vZGU7Ci0gICAgICAgIFN0b3JlZENy
ZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjcm9zc09yaWdpbk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgICAgIFN0b3JlZENyZWRl
bnRpYWxzIGFsbG93Q3JlZGVudGlhbHMgPSBlcXVhbElnbm9yaW5nQ2FzZShjcm9zc09yaWdpbk1v
ZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250
cm9sKGN1ZVJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSwgYWxsb3dDcmVkZW50aWFscyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
Q3Jvc3Mtb3JpZ2luIHJlc291cmNlcyB0aGF0IGFyZSBub3Qgc3VpdGFibHkgQ09SUy1lbmFibGVk
IG1heSBub3QgbG9hZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBkYjUxOGYwYjA4N2ExOTQzOTJiZTQ3MjliN2MzM2U2
NTc2MDM1ZDA3Li44ZDdmMGUyOGIxNDY1MGY3MzI4NWYyZmMyOTc2YjY1OTFlMzBhODE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUu
Y3BwCkBAIC0xMjMsOCArMTIzLDE0IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGlj
YXRpb25DYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAKIGJvb2wgQXBw
bGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiByZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0dHBN
ZXRob2QoKSwgImdldCIpOwotfQorICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWVxdWFs
SWdub3JpbmdDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfSAgICAKIAogQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGQ0NWYzNmU4ZTJjN2RmMTQyMzRkMDk3
ZmMzY2Y0YTk1YjY5ZGQ4ZGMuLjcwOTFmY2UyYTJjOWYzZTI3YjY4NDI0M2M3NjRjNmI4Yzc2OWY5
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmNhblVzZVNoZWV0KE1JTUVUeXBlQ2hlY2sgbWltZVR5cGVDaGVjaywgYm9vbCogaGFzVmFsaQog
ICAgIC8vIFRoaXMgY29kZSBkZWZhdWx0cyB0byBhbGxvd2luZyB0aGUgc3R5bGVzaGVldCBmb3Ig
bm9uLUhUVFAgcHJvdG9jb2xzIHNvCiAgICAgLy8gZm9sa3MgY2FuIHVzZSBzdGFuZGFyZHMgbW9k
ZSBmb3IgbG9jYWwgSFRNTCBkb2N1bWVudHMuCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFj
dE1JTUVUeXBlRnJvbU1lZGlhVHlwZShyZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUpKTsKLSAgICBib29sIHR5cGVPSyA9IG1pbWVUeXBlLmlzRW1w
dHkoKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvY3Nz
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94LXVua25vd24tY29udGVudC10eXBlIik7CisgICAgYm9vbCB0eXBlT0sgPSBtaW1lVHlwZS5p
c0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJ0ZXh0L2NzcyIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC11bmtub3duLWNvbnRlbnQt
dHlwZSIpOwogICAgIGlmIChoYXNWYWxpZE1JTUVUeXBlKQogICAgICAgICAqaGFzVmFsaWRNSU1F
VHlwZSA9IHR5cGVPSzsKICAgICByZXR1cm4gdHlwZU9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggYzNmMThhYjZkN2MxOTRmYjY0MzQz
MDM5N2JkMDBjYjE3YjA1MGJjOS4uNmI2YTkwYTg1YmRlYzE3NjYxZDg5NDI3ZjBiYTI2OTljZmFk
YjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCkBAIC0zNjIsMTQgKzM2MiwxNCBAQCBib29sIENhY2hlZFJlc291cmNlOjppc0V4cGlyZWQo
KSBjb25zdAogc3RhdGljIGlubGluZSBib29sIHNob3VsZENhY2hlU2NoZW1lSW5kZWZpbml0ZWx5
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUsICJhcHBsZXdlYmRhdGEiKSkKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiYXBwbGV3ZWJkYXRhIikpCiAgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHNjaGVtZSwgInJlc291cmNlIikpCisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHNjaGVtZSwgInJlc291cmNlIikpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNjaGVtZSwgImRh
dGEiKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiZGF0YSIpOwogfQog
CiBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZl
dGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBhMzdmOTlkZWJlNTJkNjMzZWFjODI2YWMzMTY5MjE5
NDgyMjg5NjFjLi5kYjkxYTFkYzFmODJmOGU0ZGJiM2YyNDcwN2E4MDY3MzA3MjBiYjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0yODMsNDMgKzI4Myw0MyBAQCB2b2lk
IERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgYWx0ZXJTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uU3RyaQogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZVNlbGVjdGlv
bjo6RUFsdGVyYXRpb24gYWx0ZXI7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGFsdGVyU3RyaW5nLCAiZXh0ZW5kIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFs
dGVyU3RyaW5nLCAiZXh0ZW5kIikpCiAgICAgICAgIGFsdGVyID0gRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQ7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoYWx0ZXJTdHJpbmcsICJtb3ZlIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
YWx0ZXJTdHJpbmcsICJtb3ZlIikpCiAgICAgICAgIGFsdGVyID0gRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25Nb3ZlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShkaXJlY3Rpb25TdHJpbmcsICJmb3J3YXJkIikpCiAgICAgICAgIGRpcmVjdGlvbiA9IERpcmVj
dGlvbkZvcndhcmQ7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShkaXJlY3Rpb25TdHJpbmcsICJiYWNrd2FyZCIpKQogICAgICAgICBkaXJlY3Rpb24gPSBE
aXJlY3Rpb25CYWNrd2FyZDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShkaXJlY3Rpb25TdHJpbmcsICJsZWZ0IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQogICAgICAgICBkaXJlY3Rpb24gPSBEaXJl
Y3Rpb25MZWZ0OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRp
cmVjdGlvblN0cmluZywgInJpZ2h0IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyZWN0aW9uU3RyaW5nLCAicmlnaHQiKSkKICAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9u
UmlnaHQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51
bGFyaXR5U3RyaW5nLCAiY2hhcmFjdGVyIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdy
YW51bGFyaXR5U3RyaW5nLCAiY2hhcmFjdGVyIikpCiAgICAgICAgIGdyYW51bGFyaXR5ID0gQ2hh
cmFjdGVyR3JhbnVsYXJpdHk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJ3b3JkIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJ3b3JkIikpCiAgICAgICAgIGdyYW51bGFyaXR5
ID0gV29yZEdyYW51bGFyaXR5OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAic2VudGVuY2UiKSkKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShncmFudWxhcml0eVN0cmluZywgInNlbnRlbmNlIikpCiAgICAgICAgIGdy
YW51bGFyaXR5ID0gU2VudGVuY2VHcmFudWxhcml0eTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgImxpbmUiKSkKKyAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShncmFudWxhcml0eVN0cmluZywgImxpbmUiKSkKICAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBMaW5lR3JhbnVsYXJpdHk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGgiKSkKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFw
aCIpKQogICAgICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEdyYW51bGFyaXR5OwotICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAi
bGluZWJvdW5kYXJ5IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ3JhbnVsYXJp
dHlTdHJpbmcsICJsaW5lYm91bmRhcnkiKSkKICAgICAgICAgZ3JhbnVsYXJpdHkgPSBMaW5lQm91
bmRhcnk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVs
YXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5IikpCiAgICAgICAg
IGdyYW51bGFyaXR5ID0gU2VudGVuY2VCb3VuZGFyeTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaGJvdW5kYXJ5
IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJw
YXJhZ3JhcGhib3VuZGFyeSIpKQogICAgICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEJvdW5k
YXJ5OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFy
aXR5U3RyaW5nLCAiZG9jdW1lbnRib3VuZGFyeSIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAiZG9jdW1lbnRib3VuZGFyeSIpKQogICAgICAgICBn
cmFudWxhcml0eSA9IERvY3VtZW50Qm91bmRhcnk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDVmNmM4YjU0OTczZmJkZWVhZDlk
YWY3MjI1NTVjNGI1NTcxMzYzZDUuLjU1M2YxYThlMDFkYzQ0ZGRlYTE4ZjBhYWJiMTIyOGY1ZmQy
NDRlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3AKICAgICBpZiAocmVzcG9uc2VJc1ZhbGlkKSB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNoYXJzZXQsIHRoZSBvbmx5IGFsbG93ZWQgdmFs
dWUgaXMgVVRGLTggKGNhc2UtaW5zZW5zaXRpdmUpLgotICAgICAgICByZXNwb25zZUlzVmFsaWQg
PSBjaGFyc2V0LmlzRW1wdHkoKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjaGFy
c2V0LCAidXRmLTgiKTsKKyAgICAgICAgcmVzcG9uc2VJc1ZhbGlkID0gY2hhcnNldC5pc0VtcHR5
KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoY2hhcnNldCwgIlVURi04Iik7CiAgICAgICAgIGlmICgh
cmVzcG9uc2VJc1ZhbGlkKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgY2hhcnNldCAoXCIiLCBjaGFyc2V0LCAi
XCIpIHRoYXQgaXMgbm90IFVURi04LiBBYm9ydGluZyB0aGUgY29ubmVjdGlvbi4iKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBhcmUgbWlzc2luZyB0aGUgc291cmNlIGxpbmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYTI1ZWZlOWY3ZDhhNjNhMWVmYTZkMTExMjQ4NWI4NWVi
MGZhMDU0NC4uYzlhNzM1OGI4MDI4MzcxNTZmMmQ2ZjM5YmE0NGEyZjkxZDhhNmQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjA2NSw3ICsyMDY1LDcgQEAgYm9vbCBGcmFtZVZp
ZXc6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgIAogICAgIC8v
IEltcGxlbWVudCB0aGUgcnVsZSB0aGF0ICIiIGFuZCAidG9wIiBib3RoIG1lYW4gdG9wIG9mIHBh
Z2UgYXMgaW4gb3RoZXIgYnJvd3NlcnMuCi0gICAgaWYgKCFhbmNob3JFbGVtZW50ICYmICEobmFt
ZS5pc0VtcHR5KCkgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgInRvcCIp
KSkKKyAgICBpZiAoIWFuY2hvckVsZW1lbnQgJiYgIShuYW1lLmlzRW1wdHkoKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAidG9wIikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
b250YWluZXJOb2RlKiBzY3JvbGxQb3NpdGlvbkFuY2hvciA9IGFuY2hvckVsZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IGEzZTJjZjYxNDg1NmU0M2U3ZmZmMDNmNjU2
YjM2ODVkNmM4MjI4NTAuLmJiMjkzMmNiNGEzM2VlMDJjZTAyZWM1NGY5NTQyYTJjNWM3MjVhZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0xMTYsMjAgKzExNiwxOSBAQCBQ
YXNzUmVmUHRyPFBlcmZvcm1hbmNlRW50cnlMaXN0PiBQZXJmb3JtYW5jZTo6d2Via2l0R2V0RW50
cmllc0J5VHlwZShjb25zdCBTdHJpbgogICAgIFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5TGlzdD4g
ZW50cmllcyA9IFBlcmZvcm1hbmNlRW50cnlMaXN0OjpjcmVhdGUoKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9USU1JTkcpCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVu
dHJ5VHlwZSwgInJlc291cmNlIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW50cnlU
eXBlLCAicmVzb3VyY2UiKSkKICAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IG1fcmVzb3Vy
Y2VUaW1pbmdCdWZmZXIpCiAgICAgICAgICAgICBlbnRyaWVzLT5hcHBlbmQocmVzb3VyY2UpOwot
ICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAKICNpZiBF
TkFCTEUoVVNFUl9USU1JTkcpCiAgICAgaWYgKG1fdXNlclRpbWluZykgewotICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZW50cnlUeXBlLCAibWFyayIpKQorICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW50cnlUeXBlLCAibWFyayIpKQogICAgICAgICAgICAg
ZW50cmllcy0+YXBwZW5kQWxsKG1fdXNlclRpbWluZy0+Z2V0TWFya3MoKSk7Ci0gICAgICAgIGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVudHJ5VHlwZSwgIm1lYXN1cmUi
KSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW50cnlUeXBlLCAibWVhc3Vy
ZSIpKQogICAgICAgICAgICAgZW50cmllcy0+YXBwZW5kQWxsKG1fdXNlclRpbWluZy0+Z2V0TWVh
c3VyZXMoKSk7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFVTRVJfVElNSU5HKQog
CiAgICAgZW50cmllcy0+c29ydCgpOwogICAgIHJldHVybiBlbnRyaWVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKaW5kZXggMzFiODk3
MTM3ZjUxMWU0NWY3NzU3ZTk1NmMyNmYzNzU4N2FiNmE2MC4uYTQ2YWMyNDFlNTcwMGI5ZmFjMDQ5
M2M0ODIwY2I2NWZiNTNmMDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBib29sIHBh
c3Nlc1RpbWluZ0FsbG93Q2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERv
Y3VtZW50KiByCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgU3RyaW5nJiB0aW1p
bmdBbGxvd09yaWdpblN0cmluZyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6VGltaW5nQWxsb3dPcmlnaW4pOwotICAgIGlmICh0aW1pbmdBbGxvd09yaWdpblN0cmlu
Zy5pc0VtcHR5KCkgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodGltaW5nQWxsb3dP
cmlnaW5TdHJpbmcsICJudWxsIikpCisgICAgaWYgKHRpbWluZ0FsbG93T3JpZ2luU3RyaW5nLmlz
RW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSh0aW1pbmdBbGxvd09yaWdpblN0cmluZywgIm51
bGwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHRpbWluZ0FsbG93T3JpZ2lu
U3RyaW5nID09ICIqIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
OGZlN2U2MDY5NDA4Mjg3ODBlY2Q5YzI4MTY3MzJlNTlhZWZmMTI2MC4uNTgwMzM2Y2M1NTcyMjZh
YWM1MTY3NjZkNTBlZmVjZmZjMjJlOTkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAKQEAgLTEwOSw4ICsxMDksOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5p
cXVlT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogfQogCiBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4oY29uc3QgVVJMJiB1cmwpCi0gICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlz
TnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkpCi0gICAgLCBt
X2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgpLmxv
d2VyKCkpCisgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1
cmwucHJvdG9jb2woKS5sb3dlcigpKQorICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkg
PyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQogICAg
ICwgbV9pc1VuaXF1ZShmYWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQpAQCAt
MTMzLDkgKzEzMyw5IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwm
IHVybCkKIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKCkKLSAgICA6IG1fcHJv
dG9jb2woZW1wdHlTdHJpbmcoKSkKLSAgICAsIG1faG9zdChlbXB0eVN0cmluZygpKQotICAgICwg
bV9kb21haW4oZW1wdHlTdHJpbmcoKSkKKyAgICA6IG1fcHJvdG9jb2woIiIpCisgICAgLCBtX2hv
c3QoIiIpCisgICAgLCBtX2RvbWFpbigiIikKICAgICAsIG1fcG9ydChJbnZhbGlkUG9ydCkKICAg
ICAsIG1faXNVbmlxdWUodHJ1ZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQpAQCAt
NDYyLDkgKzQ2Miw5IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzVW5pcXVl
KCkpCi0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgcmV0dXJu
ICJudWxsIjsKICAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgbV9lbmZvcmNlRmlsZVBh
dGhTZXBhcmF0aW9uKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsIik7CisgICAg
ICAgIHJldHVybiAibnVsbCI7CiAgICAgcmV0dXJuIHRvUmF3U3RyaW5nKCk7CiB9CiAKQEAgLTU1
Miw3ICs1NTIsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigp
IGNvbnN0CiAgICAgLy8gTm93IHRoYXQgd2UndmUgZml4ZWQgdGhhdCBidWcsIHdlIHN0aWxsIG5l
ZWQgdG8gcHJvZHVjZSB0aGlzIHN0cmluZwogICAgIC8vIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0
aW5nIHBlcnNpc3RlbnQgc3RhdGUuCiAgICAgaWYgKG1fbmVlZHNEYXRhYmFzZUlkZW50aWZpZXJR
dWlya0ZvckZpbGVzKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmaWxlX18wIik7Cisg
ICAgICAgIHJldHVybiAiZmlsZV9fMCI7CiAKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobV9wcm90b2NvbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggOWRiYTkxYzVlNzAyOGJi
MTk0ZjdmYmI3NGNmZWU2MjY3NjVjYTljNy4uNjU2OWNkYzBjM2Q0YmM3NTdmOWFiZjIzOWJlOTE0
NzE5MzBlNDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFy
c2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogCiAgICAgaW50IHBhdGhTdGFydFBvcyA9IDA7CiAK
LSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9zY2hlbWUsICJmaWxlIikp
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1fc2NoZW1lLCAiZmlsZSIpKQogICAgICAgICBw
YXRoU3RhcnRQb3MgPSBob3N0U3RhcnRQb3M7CiAgICAgZWxzZSB7CiAgICAgICAgIHNpemVfdCBo
b3N0RW5kUG9zID0gcGF0dGVybi5maW5kKCcvJywgaG9zdFN0YXJ0UG9zKTsKQEAgLTExNyw3ICsx
MTcsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBVUkwmIHRl
c3QpIGNvbnN0CiAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZSh0ZXN0LnByb3RvY29sKCksIG1f
c2NoZW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtX3NjaGVtZSwgImZpbGUiKSAmJiAhbWF0Y2hlc0hvc3QodGVzdCkp
CisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShtX3NjaGVtZSwgImZpbGUiKSAmJiAhbWF0Y2hl
c0hvc3QodGVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtYXRjaGVz
UGF0aCh0ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IDc4OGU4ZmQyYmI5ZjQ4NjRi
ZjNiZDE2OWUwNWRkMDAyNjlkM2VkM2QuLjg4OWI3NDYzMTA1NGE5MmM4ZjBkN2M4NTc0ZDczZTIy
YzBkZjg0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtNzg3LDcgKzc4Nyw3IEBAIGJv
b2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHByb3RvY29sKSBjb25zdAogCiAgICAgLy8g
SmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBp
ZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgogICAgIC8vIFRoZSBmcmVlIGZ1bmN0aW9u
IHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCi0gICAgQVNT
RVJUKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHByb3RvY29sKSwg
ImphdmFzY3JpcHQiKSk7CisgICAgQVNTRVJUKCFlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwg
U3RyaW5nKCJqYXZhc2NyaXB0IikpKTsKIAogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCmluZGV4IDEzZmQ0ZjNhZDZkNWQyMzEzZTIzZTdkMGQ4MzJiYzM5OTAxMTll
ODguLjA1YjUwMGUzYTUzNzVmZmUxYjUwZTQyNTk2NDIzMzkwMmY5ZTVjMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC03Mywy
MyArNzMsMjIgQEAgYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tl
eVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2UKICAgICBpZiAoIXN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtaW1l
VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghbWltZVR5cGUu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgImtl
eXJlbGVhc2UiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGlnbm9yaW5nIGNhc2Ugc2luY2UgdGhlIGNoZWNrIGluIHN1cHBvcnRzTUlNRVR5
cGUgaXMgY2hlY2tpbmcgY2FzZT8KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJrZXlyZWxlYXNlIikpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgIHBhcmFt
ZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CisgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IG1p
bWVUeXBlOwogCi0gICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
ICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgcGFyYW1ldGVycy50eXBl
ID0gbWltZVR5cGU7CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CisgICAgfQogCi0gICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpJc05v
dFN1cHBvcnRlZDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
Ci0gICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGNoZWNraW5nIGNhc2Ugc2luY2UgdGhlIGNoZWNr
IGluIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgaXMgaWdub3JpbmcgY2FzZT8KICAgICBp
ZiAobWltZVR5cGUgPT0gImtleXJlbGVhc2UiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbi5tbQppbmRleCAyN2I3ODkxMTBhZWNhZDA3YzZiZDIzMDZhNWJhZjI5MmNlY2U5ZDRhLi43
ZTZjZmVlNDQ4MDg3YzEzZmYzYzMyZmUzMDU3ZGE5N2I3NzhlN2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpA
QCAtMTU3LDcgKzE1Nyw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAKICAgICBtX2luaXRE
YXRhID0gaW5pdERhdGE7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWltZVR5cGUsICJrZXlyZWxlYXNlIikpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWlt
ZVR5cGUsICJrZXlyZWxlYXNlIikpIHsKICAgICAgICAgbV9tb2RlID0gS2V5UmVsZWFzZTsKICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoZXJyb3JDb2RlLCBzeXN0ZW1D
b2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5tbQppbmRleCBlMDFiZTY0NGRjNzEwNDA4YjA4ODI5NWQ3MjBmNDcwZTRi
YjQ0Yzg4Li45MGFhYWYwM2Y2N2E5MWE3YjVmMjI1YzNlMDc0NDE2NTQ1M2MyOWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0K
QEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbQogCiAgICAgbV9pbml0
RGF0YSA9IGluaXREYXRhOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAia2V5cmVsZWFzZSIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1p
bWVUeXBlLCAia2V5cmVsZWFzZSIpKSB7CiAgICAgICAgIG1fbW9kZSA9IEtleVJlbGVhc2U7CiAg
ICAgICAgIHJldHVybiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKGVycm9yQ29kZSwgc3lzdGVt
Q29kZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA5NWU0YjE1OGFlYTZhZDY5OTY3ODUxNDU1Y2M1
OTc0NGIyZjJmOTcyLi4zYjdiNGRiY2VmMjUwM2UwOWUzOTViN2MyOWI4NmE4MmEyMDY3YzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtNDE3LDExICs0MTcsMTEgQEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgc3RhdGlj
IGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOwogICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlR0lGID0gQ0ZTVFIoImNvbS5jb21wdXNl
cnZlLmdpZiIpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAiaW1hZ2UvcG5nIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAi
aW1hZ2UvcG5nIikpCiAgICAgICAgIHJldHVybiBrVVRUeXBlUE5HOwotICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdlL2pwZWciKSkKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobWltZVR5cGUsICJpbWFnZS9qcGVnIikpCiAgICAgICAgIHJldHVy
biBqcGVnVVRJKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAiaW1hZ2UvZ2lmIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1pbWVUeXBlLCAi
aW1hZ2UvZ2lmIikpCiAgICAgICAgIHJldHVybiBrVVRUeXBlR0lGOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNmQzMjVjMGEzOGJlMjli
NDg4MTI1OTc5ZThjYjU5MTdlNTgyYzBmMy4uMTUzNzcxZjUxYWRlNjYxYjdmNWRmOThmNmE3NmU2
OTIyYWQ5NjAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNTA0LDE2ICs1MDQsMTcg
QEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXQKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBT
dWJzdGl0dXRlIHRoZSBkZWZhdWx0IG1vbm9zcGFjZSBmb250IGZvciB3ZWxsLWtub3duIG1vbm9z
cGFjZSBmb250cy4KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5
LCAibW9uYWNvIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAibWVu
bG8iKSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjb3Vy
aWVyKCJjb3VyaWVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbW9uYWNvKCJtb25hY28iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBtZW5sbygibWVubG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjb3Vy
aWVyKCJjb3VyaWVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgbW9uYWNvKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHksIG1lbmxvKSkKICAgICAgICAgcmV0dXJuIGZvbnRGb3JGYW1pbHkoZGVzY3JpcHRp
b24sIGNvdXJpZXIpOwotICAgIH0KIAogICAgIC8vIFN1YnN0aXR1dGUgVmVyZGFuYSBmb3IgTHVj
aWRhIEdyYW5kZS4KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5
LCAibHVjaWRhIGdyYW5kZSIpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IHZlcmRhbmEoInZlcmRhbmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsdWNpZGFH
cmFuZGUoImx1Y2lkYSBncmFuZGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2ZXJkYW5hKCJ2ZXJk
YW5hIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGZhbWlseSwgbHVjaWRhR3JhbmRlKSkKICAgICAgICAgcmV0dXJuIGZvbnRG
b3JGYW1pbHkoZGVzY3JpcHRpb24sIHZlcmRhbmEpOwotICAgIH0KICNlbmRpZgogCiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYXJhYmljKEFTQ0lJTGl0ZXJhbCgiQXJhYmljIikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRD
YWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2Fj
aGVJT1MubW0KaW5kZXggNWE4MmExM2QzODdiNWI0YmI0YjBlYTdhZWM0NDZjZTRkMjJkMDY2YS4u
ZmQ0ZTEwMDA4ZmUwYWJkYWY1MjM0ZjBjNGFmODE4ZmQxNWJiZGQ1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tCkBAIC0x
NDYsMTAgKzE0NiwxMyBAQCBSZXRhaW5QdHI8Q1RGb250UmVmPiBwbGF0Zm9ybUZvbnRXaXRoRmFt
aWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbAogICAgICAgICByZXR1cm4g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0
KCksIHNpemUsIG51bGxwdHIpKTsKICAgICB9CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZmFtaWx5LCAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zeXN0ZW0iKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtc3lzdGVtLWZvbnQiKSkgeworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN5c3RlbVVJRm9udFdpdGhXZWJL
aXRQcmVmaXgoIi13ZWJraXQtc3lzdGVtLWZvbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzeXN0
ZW1VSUZvbnRXaXRoQXBwbGVQcmVmaXgoIi1hcHBsZS1zeXN0ZW0iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBzeXN0ZW1VSUZvbnRXaXRoQXBwbGVBbHRlcm5hdGVQcmVmaXgoIi1hcHBsZS1zeXN0ZW0t
Zm9udCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShmYW1pbHksIHN5c3RlbVVJRm9udFdpdGhXZWJLaXRQcmVmaXgpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGZhbWlseSwgc3lzdGVtVUlGb250V2l0aEFwcGxlUHJlZml4KSB8fCBl
cXVhbElnbm9yaW5nQ2FzZShmYW1pbHksIHN5c3RlbVVJRm9udFdpdGhBcHBsZUFsdGVybmF0ZVBy
ZWZpeCkpIHsKICAgICAgICAgQ1RGb250VUlGb250VHlwZSBmb250VHlwZSA9IGtDVEZvbnRVSUZv
bnRTeXN0ZW07CiAgICAgICAgIGlmICh3ZWlnaHQgPiBGb250V2VpZ2h0MzAwKSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgY29kZSBiZWxvdyBoYXMgYmVlbiBjb3BpZWQgZnJvbSBDb3JlVGV4dC9VSUZv
dW5kYXRpb24uIEhvd2V2ZXIsIGluIFdlYktpdCB3ZSBzeW50aGVzaXplIHRoZSBvYmxpcXVlLAor
ICAgICAgICAgICAgLy8gVGhlIGNvbW1lbnQgYmVsb3cgaGFzIGJlZW4gY29waWVkIGZyb20gQ29y
ZVRleHQvVUlGb3VuZGF0aW9uLiBIb3dldmVyLCBpbiBXZWJLaXQgd2Ugc3ludGhlc2l6ZSB0aGUg
b2JsaXF1ZSwKICAgICAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGUgcmVz
dWx0IDxyZGFyOi8vcHJvYmxlbS8xNDQ0OTM0MD46CiAgICAgICAgICAgICBpZiAodHJhaXRzICYg
a0NURm9udFRyYWl0Qm9sZCkKICAgICAgICAgICAgICAgICBmb250VHlwZSA9IGtDVEZvbnRVSUZv
bnRFbXBoYXNpemVkU3lzdGVtOwpAQCAtMTY1LDcgKzE2OCw4IEBAIFJldGFpblB0cjxDVEZvbnRS
ZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlsCiAgICAgICAgIHJldHVybiBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3Jp
cHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOwogICAgIH0KIAotICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtc3lzdGVt
LW1vbm9zcGFjZWQtbnVtYmVycyIpKSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gc3lzdGVtVUlNb25vc3BhY2VkTnVtYmVyc0ZvbnRXaXRoQXBwbGVQcmVmaXgoIi1h
cHBsZS1zeXN0ZW0tbW9ub3NwYWNlZC1udW1iZXJzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgc3lzdGVtVUlN
b25vc3BhY2VkTnVtYmVyc0ZvbnRXaXRoQXBwbGVQcmVmaXgpKSB7CiAgICAgICAgIFJldGFpblB0
cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBzeXN0ZW1Gb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RG
b250RGVzY3JpcHRvckNyZWF0ZUZvclVJVHlwZShrQ1RGb250VUlGb250U3lzdGVtLCBzaXplLCBu
dWxscHRyKSk7CiAgICAgICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBtb25vc3Bh
Y2VGb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRo
RmVhdHVyZShzeXN0ZW1Gb250RGVzY3JpcHRvci5nZXQoKSwgKENGTnVtYmVyUmVmKUAoa051bWJl
clNwYWNpbmdUeXBlKSwgKENGTnVtYmVyUmVmKUAoa01vbm9zcGFjZWROdW1iZXJzU2VsZWN0b3Ip
KSk7CiAgICAgICAgIHJldHVybiBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRv
cihtb25vc3BhY2VGb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0K
aW5kZXggYTRkMTliYTk0OWI0M2ExYzJjMDE5NDQ0MWNlMDIyZTdmMzk4NjBjNS4uYjMzZjRhMGNk
MTkzMGY4NGYyODM5ZmIyYWExNDYxZDM2YjU0YzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCkBAIC0yMDksNyArMjA5
LDkgQEAgc3RhdGljIENHRmxvYXQgdG9OU0ZvbnRXZWlnaHQoRm9udFdlaWdodCBmb250V2VpZ2h0
KQogCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBwbGF0Zm9ybUZvbnRXaXRoRmFtaWx5U3BlY2lhbENh
c2UoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIEZvbnRXZWlnaHQgd2VpZ2h0LCBDVEZvbnRT
eW1ib2xpY1RyYWl0cyBkZXNpcmVkVHJhaXRzLCBmbG9hdCBzaXplKQogewotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItd2Via2l0LXN5c3RlbS1mb250Iikg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAiLWFwcGxlLXN5c3RlbSIp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zeXN0ZW0t
Zm9udCIpKSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAiLXdlYmtp
dC1zeXN0ZW0tZm9udCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5
LCAiLWFwcGxlLXN5c3RlbSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFt
aWx5LCAiLWFwcGxlLXN5c3RlbS1mb250IikpIHsKICAgICAgICAgUmV0YWluUHRyPENURm9udFJl
Zj4gcmVzdWx0ID0gdG9DVEZvbnQoW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOnNpemUgd2VpZ2h0
OnRvTlNGb250V2VpZ2h0KHdlaWdodCldKTsKICAgICAgICAgaWYgKGRlc2lyZWRUcmFpdHMgJiBr
Q1RGb250SXRhbGljVHJhaXQpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGl0YWxpY2l6ZWRGb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJhaXRzKHJlc3VsdC5nZXQo
KSwgc2l6ZSwgbnVsbHB0ciwgZGVzaXJlZFRyYWl0cywgZGVzaXJlZFRyYWl0cykpKQpAQCAtMjE4
LDcgKzIyMCw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlT
cGVjaWFsQ2FzZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlsCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZhbWls
eSwgIi1hcHBsZS1zeXN0ZW0tbW9ub3NwYWNlZC1udW1iZXJzIikpIHsKKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtc3lzdGVtLW1vbm9zcGFjZWQtbnVtYmVy
cyIpKSB7CiAgICAgICAgIGludCBudW1iZXJTcGFjaW5nVHlwZSA9IGtOdW1iZXJTcGFjaW5nVHlw
ZTsKICAgICAgICAgaW50IG1vbm9zcGFjZWROdW1iZXJzU2VsZWN0b3IgPSBrTW9ub3NwYWNlZE51
bWJlcnNTZWxlY3RvcjsKICAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBudW1iZXJTcGFj
aW5nTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmbnVtYmVyU3BhY2luZ1R5cGUpKTsKQEAgLTIzNiwxMCArMjM4LDEw
IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBsYXRmb3JtRm9udFdpdGhGYW1pbHlTcGVjaWFsQ2Fz
ZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlsCiAgICAgICAgIHJldHVybiBhZG9wdENGKENURm9u
dENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhyZXN1bHQuZ2V0KCksIHNpemUsIG51bGxwdHIsIGFk
b3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0
KCkpKS5nZXQoKSkpOwogICAgIH0KIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShmYW1pbHksICItYXBwbGUtbWVudSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGZhbWlseSwgIi1hcHBsZS1tZW51IikpCiAgICAgICAgIHJldHVybiB0b0NURm9udChbTlNG
b250IG1lbnVGb250T2ZTaXplOnNpemVdKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtc3RhdHVzLWJhciIpKQorICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zdGF0dXMtYmFyIikpCiAgICAgICAgIHJl
dHVybiB0b0NURm9udChbTlNGb250IGxhYmVsRm9udE9mU2l6ZTpzaXplXSk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBkYzM5YWY0NWIy
ZmJhY2Q5ZjQ0NzJhNmQxMTRlNGY3MWJiYzMwODI0Li42ZjdhOGEwN2NhMjhlM2E2MzE3ZTVjNjRh
MDEyNzY5YjhkOTZlMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Nywx
MiArNTcsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKIAogYm9vbCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKIHsKLSAgICBy
ZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZm9ybWF0LCAidHJ1ZXR5cGUiKQot
ICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3JtYXQsICJvcGVudHlw
ZSIpCisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGZvcm1hdCwgInRydWV0eXBlIikgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAib3BlbnR5cGUiKQogI2lmIChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCi0g
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZvcm1hdCwgIndvZmYyIikK
KyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAid29mZjIiKQogI2VuZGlmCi0g
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZvcm1hdCwgIndvZmYiKTsK
KyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAid29mZiIpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDJlZDUx
YzY1MDUxNzhjNTA1NjM3MjczMWQ4NzJiOWU2ZGEwODk0OWMuLjdiYjMwZjM4N2RjNzJiNTA0ZTBj
YTU4OTM0NmE3NTA3ZTgzYmVmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC01MDUsNyArNTA1LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIC8vIEdyYWIgdGhlIHZhbHVlIG9mZiB0
aGUgcGFzdGVib2FyZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb2NvYVR5cGUKICAgICBpZiAoY29j
b2FUeXBlID09IFN0cmluZyhOU1VSTFBib2FyZFR5cGUpKSB7CiAgICAgICAgIC8vICJ1cmwiIGFu
ZCAidGV4dC91cmwtbGlzdCIgYm90aCBtYXAgdG8gTlNVUkxQYm9hcmRUeXBlIGluIGNvY29hVHlw
ZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSgpLCAidXJsIiBvbmx5IHdhbnRzIHRoZSBmaXJzdCBVUkwK
LSAgICAgICAgYm9vbCBvbmx5Rmlyc3RVUkwgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAidXJsIik7CisgICAgICAgIGJvb2wgb25seUZpcnN0VVJMID0gKGVxdWFsSWdub3Jp
bmdDYXNlKHR5cGUsICJ1cmwiKSk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFic29sdXRlVVJM
cyA9IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUsIG9ubHlGaXJz
dFVSTCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWJzb2x1dGVVUkxzLnNpemUo
KTsgaSsrKQogICAgICAgICAgICAgY29jb2FWYWx1ZSA9IGkgPyAiXG4iICsgYWJzb2x1dGVVUkxz
W2ldOiBhYnNvbHV0ZVVSTHNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggYzA2ZGZmNzZmZjI1ZmJkMTU0
OTA3ZmM1ZWExY2Q0NWI5ZDkzYjI5ZC4uZjIxZmE1Y2QyZTUxYWZiZTZkZDRjYjI2NWE5MGIxN2Yw
NWE0YmY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTM3LDE1ICsxMzcsMTUgQEAgdm9pZCBCbG9iUmVz
b3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3IKIFBhc3NSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZUFzeW5jKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewogICAgIC8vIEZJ
WE1FOiBTaG91bGQgcHJvYmFibHkgY2FsbCBkaWRGYWlsKCkgaW5zdGVhZCBvZiBibG9ja2luZyB0
aGUgbG9hZCB3aXRob3V0IGV4cGxhbmF0aW9uLgotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJnZXQiKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2Qo
KSwgIkdFVCIpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QmxvYlJlc291cmNlSGFuZGxlKGJsb2JEYXRhLCByZXF1ZXN0LCBjbGllbnQsIHRydWUpKTsKIH0K
IAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxv
YkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBk
YXRhKQogewotICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVxdWVzdC5o
dHRwTWV0aG9kKCksICJnZXQiKSkgeworICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UocmVxdWVz
dC5odHRwTWV0aG9kKCksICJHRVQiKSkgewogICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Io
d2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCByZXNwb25zZS51cmwo
KSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHAKaW5kZXggODEyNjE2NmViODMxZWRiYjY5MWE2ZTBmMzljZjNkM2EwMTg2NWRmMy4uOWQx
ZTc1Y2ZkMjhiOWFkMjAzYjYwZjNmNmZjZTliZWQ1MDI0Y2Q0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMjgwLDEz
ICsyODAsMTMgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVj
dGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICAgICAgICAgIC8vIEEgbm8t
Y2FjaGUgZGlyZWN0aXZlIHdpdGggYSB2YWx1ZSBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHByb3h5
IGNhY2hlcy4KICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IGEgYnJvd3Nl
ciBsZXZlbCBjYWNoZS4KICAgICAgICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzcyMzQjc2VjdGlvbi01LjIuMi4yCi0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm5vLWNhY2hlIikgJiYgZGlyZWN0
aXZlc1tpXS5zZWNvbmQuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJuby1jYWNoZSIpICYmIGRpcmVjdGl2ZXNbaV0uc2Vj
b25kLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXN1bHQubm9DYWNoZSA9IHRydWU7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rp
dmVzW2ldLmZpcnN0LCAibm8tc3RvcmUiKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJuby1zdG9yZSIpKQogICAgICAgICAgICAg
ICAgIHJlc3VsdC5ub1N0b3JlID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtdXN0LXJldmFsaWRh
dGUiKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNb
aV0uZmlyc3QsICJtdXN0LXJldmFsaWRhdGUiKSkKICAgICAgICAgICAgICAgICByZXN1bHQubXVz
dFJldmFsaWRhdGUgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm1heC1hZ2UiKSkgeworICAgICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm1h
eC1hZ2UiKSkgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubWF4QWdlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEZpcnN0IG1heC1hZ2UgZGlyZWN0aXZlIHdpbnMgaWYgdGhlcmUgYXJl
IG11bHRpcGxlIG9uZXMuCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk1LDcg
KzI5NSw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3Rp
dmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAgICAgICAgICAgICAgICAgZG91Ymxl
IG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgICAgICAg
ICAgICAgaWYgKG9rKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gZHVyYXRp
b25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9uPGRvdWJsZT4obWF4QWdlKSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGl2ZXNb
aV0uZmlyc3QsICJtYXgtc3RhbGUiKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4LXN0YWxlIikpIHsKICAgICAgICAg
ICAgICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTUu
Mi4xLjIKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lm1heFN0YWxlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIEZpcnN0IG1heC1zdGFsZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUg
bXVsdGlwbGUgb25lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCBiNzM0YmIxMjUwNGJkYTEwODU1YzQ3YzhjZjM4MTFkYWMyYjliOTMyLi5lYmEyMWE2
OGE2YTgxNWE4N2IzMjY5YTgwYTA0N2Q3YmI4NmEzMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yNDUsOSArMjQ1LDkgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEVuY29kaW5nVHlwZSBwYXJzZUVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiAgICAgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgInRleHQvcGxhaW4iKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0
ZXh0L3BsYWluIikpCiAgICAgICAgICAgICByZXR1cm4gVGV4dFBsYWluOwotICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgIm11bHRpcGFydC9mb3JtLWRhdGEi
KSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJtdWx0aXBhcnQvZm9ybS1k
YXRhIikpCiAgICAgICAgICAgICByZXR1cm4gTXVsdGlwYXJ0Rm9ybURhdGE7CiAgICAgICAgIHJl
dHVybiBGb3JtVVJMRW5jb2RlZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDMyMzI5NjQ3YzQwMThkYjQyYTcwNzYwMjg5
MzdlMTBjZjIwODZiZDMuLjVkMzAwZDA0MTE0OTU4NjQzZjRjMzM1M2E5NzA3MTc1NzQ1ZGEyNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CkBAIC0xNTcsNyArMTU3LDcgQEAgQ29udGVudERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9z
aXRpb25UeXBlKGNvbnN0IFN0cmluZyYgY29udGVudERpc3Bvc2l0aW9uKQogICAgIFN0cmluZyBk
aXNwb3NpdGlvblR5cGUgPSBwYXJhbWV0ZXJzWzBdOwogICAgIGRpc3Bvc2l0aW9uVHlwZS5zdHJp
cFdoaXRlU3BhY2UoKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShk
aXNwb3NpdGlvblR5cGUsICJpbmxpbmUiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlz
cG9zaXRpb25UeXBlLCAiaW5saW5lIikpCiAgICAgICAgIHJldHVybiBDb250ZW50RGlzcG9zaXRp
b25JbmxpbmU7CiAKICAgICAvLyBTb21lIGJyb2tlbiBzaXRlcyBqdXN0IHNlbmQgYm9ndXMgaGVh
ZGVycyBsaWtlCkBAIC00ODMsMTEgKzQ4MywxMSBAQCBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24g
cGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaGVhZGVycy5zaXplKCk7IGkrKykgewogICAgICAgICBTdHJpbmcg
Y3VycmVudEhlYWRlciA9IGhlYWRlcnNbaV0uc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIFhG
cmFtZU9wdGlvbnNEaXNwb3NpdGlvbiBjdXJyZW50VmFsdWUgPSBYRnJhbWVPcHRpb25zTm9uZTsK
LSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGN1cnJlbnRIZWFkZXIs
ICJkZW55IikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjdXJyZW50SGVhZGVyLCAi
ZGVueSIpKQogICAgICAgICAgICAgY3VycmVudFZhbHVlID0gWEZyYW1lT3B0aW9uc0Rlbnk7Ci0g
ICAgICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGN1cnJlbnRIZWFk
ZXIsICJzYW1lb3JpZ2luIikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGN1
cnJlbnRIZWFkZXIsICJzYW1lb3JpZ2luIikpCiAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBY
RnJhbWVPcHRpb25zU2FtZU9yaWdpbjsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY3VycmVudEhlYWRlciwgImFsbG93YWxsIikpCisgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGN1cnJlbnRIZWFkZXIsICJhbGxvd2FsbCIpKQogICAgICAg
ICAgICAgY3VycmVudFZhbHVlID0gWEZyYW1lT3B0aW9uc0FsbG93QWxsOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBYRnJhbWVPcHRpb25zSW52YWxpZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAKaW5kZXggOTJhYjI0YmM3ODZlNTIwNGM2Y2E1NjVjNjhjMGQ5NzU1NWNkOTIwOS4u
N2U4NzRmMGY1OWIxN2NlZGEwMTM0MTNjOTJkMTk2NzVkMTk1ZjYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKQEAgLTk2LDEyICs5NiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKAogICAgIHJldHVy
biBhc1Jlc291cmNlUmVzcG9uc2UoKS5kb1BsYXRmb3JtQ29weURhdGEoV1RGTW92ZShkYXRhKSk7
CiB9CiAKLS8vIEZJWE1FOiBOYW1lIGRvZXMgbm90IG1ha2UgaXQgY2xlYXIgdGhpcyBpcyB0cnVl
IGZvciBIVFRQUyEKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNvbnN0CiB7
CiAgICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKLSAgICByZXR1cm4gbV91cmwucHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpOworICAgIFN0cmluZyBwcm90b2NvbCA9IG1fdXJsLnByb3Rv
Y29sKCk7CisKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikg
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cHMiKTsKIH0KIAogY29uc3QgVVJM
JiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkgY29uc3QKQEAgLTQ2NSwxMCArNDY2LDE1IEBA
IGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgpIGNvbnN0CiB7CiAgICAg
bGF6eUluaXQoQWxsRmllbGRzKTsKIAotICAgIGF1dG8gdmFsdWUgPSBtX2h0dHBIZWFkZXJGaWVs
ZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pOwotICAgIHJldHVybiBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSku
c3RyaXBXaGl0ZVNwYWNlKCksICJhdHRhY2htZW50Iik7Ci19CisgICAgU3RyaW5nIHZhbHVlID0g
bV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bvc2l0aW9u
KTsKKyAgICBzaXplX3QgbG9jID0gdmFsdWUuZmluZCgnOycpOworICAgIGlmIChsb2MgIT0gbm90
Rm91bmQpCisgICAgICAgIHZhbHVlID0gdmFsdWUubGVmdChsb2MpOworICAgIHZhbHVlID0gdmFs
dWUuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodmFs
dWUsICJhdHRhY2htZW50Iik7Cit9CisgIAogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlNvdXJjZSBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c291cmNlKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChBbGxG
aWVsZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZS5jcHAKaW5kZXggY2ZmOTFjZDM5NDk1MTYwNDgzMzFmODA2MzljMDU4MGUxZmE4NTdlYS4uMjgx
YTdiNjJlYmQ5NjJmOTA1MmIzNDM3M2Y4OGJmY2ViYmY5ZGZlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCkBAIC0xNjQsNyArMTY0LDcg
QEAgUmVzb3VyY2VSZXF1ZXN0IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6
OmNyZWF0ZVJlc291cmNlUmVxdWVzdChDRlUKICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhU
VFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQo
KSk7CiAKICAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLmh0dHBCb2R5KCk7Ci0gICAgICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJnZXQiKSAmJiBi
b2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdD
YXNlKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCksICJHRVQiKSAmJiBib2R5
ICYmICFib2R5LT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJv
ZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkpOwogCiAgICAgICAgICAgICBTdHJpbmcgb3Jp
Z2luYWxDb250ZW50VHlwZSA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5
cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggNzk1MjRhNTJjMTAwZWI4NzU3ZjQzOTk0MzAyZTcx
YzA5Zjk1YjdiZC4uZTI1ZmM3NDFhYWIxOTNhOTk0ODUxYmM2ZWQyNDc1NGY2Mjc0YWU2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0KQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
cwogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKGxhc3RIVFRQTWV0aG9kKTsKICAg
ICAKICAgICAgICAgICAgIEZvcm1EYXRhKiBib2R5ID0gZC0+bV9maXJzdFJlcXVlc3QuaHR0cEJv
ZHkoKTsKLSAgICAgICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGFz
dEhUVFBNZXRob2QsICJnZXQiKSAmJiBib2R5ICYmICFib2R5LT5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGxhc3RIVFRQTWV0aG9kLCAiR0VUIikgJiYgYm9k
eSAmJiAhYm9keS0+aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkoYm9keSk7CiAKICAgICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gZC0+
bV9maXJzdFJlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCBkMzU1YjgxNTFlZTZkYTgwZTc3OGRi
OWNkNGI1MDQwODJlZDY1YWRhLi5kMTIwMzc4MTJjOGZmYWQ4YjAwODUwODZhMWViZTk0ZDFmOGI3
NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAKQEAgLTExOCwxMiArMTE4LDEyIEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBmb3JXZWJTUUxEYXRhYmFzZSkKICAgICBTUUxpdGVTdGF0
ZW1lbnQgd2FsU3RhdGVtZW50KCp0aGlzLCBBU0NJSUxpdGVyYWwoIlBSQUdNQSBqb3VybmFsX21v
ZGU9V0FMOyIpKTsKICAgICBpbnQgcmVzdWx0ID0gd2FsU3RhdGVtZW50LnN0ZXAoKTsKICAgICBp
ZiAocmVzdWx0ICE9IFNRTElURV9PSyAmJiByZXN1bHQgIT0gU1FMSVRFX1JPVykKLSAgICAgICAg
TE9HX0VSUk9SKCJTUUxpdGUgZGF0YWJhc2UgZmFpbGVkIHRvIHNldCBqb3VybmFsX21vZGUgdG8g
V0FMLCBlcnJvcjogJXMiLCBsYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigiU1FM
aXRlIGRhdGFiYXNlIGZhaWxlZCB0byBzZXQgam91cm5hbF9tb2RlIHRvIFdBTCwgZXJyb3I6ICVz
IiwgIGxhc3RFcnJvck1zZygpKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAocmVzdWx0ID09
IFNRTElURV9ST1cpIHsKICAgICAgICAgU3RyaW5nIG1vZGUgPSB3YWxTdGF0ZW1lbnQuZ2V0Q29s
dW1uVGV4dCgwKTsKLSAgICAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
b2RlLCAid2FsIikpCisgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UobW9kZSwgIndhbCIp
KQogICAgICAgICAgICAgTE9HX0VSUk9SKCJqb3VybmFsX21vZGUgb2YgZGF0YWJhc2Ugc2hvdWxk
IGJlICd3YWwnLCBidXQgaXMgJyVzJyIsIG1vZGUudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
CmluZGV4IGU4NmFmYTMxYzJmMWUzNDQwOWNlOWRlZWVlMzI5NDM1Yzc0ZTI0MjQuLjEzNWMwMGIx
NmQyMzg0NGUwODkzOTYyODRjN2JmN2I4MGFlZDY1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0yODgsNyArMjg4LDggQEAgYm9v
bCBTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCkKICAgICAg
ICAgaWYgKHByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9kZWNsdHlw
ZTE2KG1fc3RhdGVtZW50LCBjb2wpKSksICJibG9iIik7CisKKyAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0Nhc2UoU3RyaW5nKCJCTE9CIiksIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVD
aGFyKj4oc3FsaXRlM19jb2x1bW5fZGVjbHR5cGUxNihtX3N0YXRlbWVudCwgY29sKSkpKTsKIH0K
IAogU3RyaW5nIFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNw
cAppbmRleCAxNzFhYmY0Njc5OTIyOTg1ZjMzY2FhNDFkMmJiNGY2YjRlOTI3NDBhLi5iNGVhNDNk
YmMzZjg2MzVhOTA1ZDBkMjFhZWNjYmIxMzc5YWViOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMzU3LDEx
ICszNTcsMTEgQEAgU3RyaW5nIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lRm9yU3lzdGVtTGFuZ3Vh
Z2UoKQogICAgIC8vIElDVSB1c2VzIHRoaXMgbmFtZSBmb3IgYSBkaWZmZXJlbnQgZW5jb2Rpbmcs
IHNvIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBuYW1lIHRvIGEgdmFsdWUgdGhhdCBhY3R1YWxseSBn
aXZlcyB1cyB3aW5kb3dzLTk0OS4KICAgICAvLyBJbiBhZGRpdGlvbiwgdGhpcyB2YWx1ZSBtdXN0
IG1hdGNoIHdoYXQgaXMgdXNlZCBpbiBTYWZhcmksIHNlZSA8cmRhcjovL3Byb2JsZW0vNTU3OTI5
Mj4uCiAgICAgLy8gT24gc29tZSBPUyB2ZXJzaW9ucywgdGhlIHJlc3VsdCBpcyBDUDk0OSAodXBw
ZXJjYXNlKS4KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3lzdGVtRW5j
b2RpbmdOYW1lLCAiY3A5NDkiKSkKLSAgICAgICAgc3lzdGVtRW5jb2RpbmdOYW1lID0gQVNDSUlM
aXRlcmFsKCJrc19jXzU2MDEtMTk4NyIpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzeXN0
ZW1FbmNvZGluZ05hbWUsICJjcDk0OSIpKQorICAgICAgICBzeXN0ZW1FbmNvZGluZ05hbWUgPSAi
a3NfY181NjAxLTE5ODciOwogICAgIHJldHVybiBzeXN0ZW1FbmNvZGluZ05hbWU7CiAjZWxzZQot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIklTTy04ODU5LTEiKTsKKyAgICByZXR1cm4gU3RyaW5n
KCJJU08tODg1OS0xIik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA0MGQxMzAw
ZTNjMTJiNDU2MWFjY2VmODNiZWJhYzNiNmIwYmM2OGI1Li5kZDE4NjkzNGQxZTFiMmY0NDgwODFj
NjY1MDk2ZDdjMTA2ZWU4NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtNzAsMTEgKzcwLDExIEBA
IHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogICAgIFN0
cmluZyB0aGlja25lc3MgPSBlbGVtZW50KCkuZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpsaW5l
dGhpY2tuZXNzQXR0cik7CiAgICAgbV9saW5lVGhpY2tuZXNzID0gZ0xpbmVNZWRpdW07Ci0gICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgInRoaW4iKSkKKyAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tuZXNzLCAidGhpbiIpKQogICAgICAgICBtX2xp
bmVUaGlja25lc3MgPSBnTGluZVRoaW47Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodGhpY2tuZXNzLCAibWVkaXVtIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodGhpY2tuZXNzLCAibWVkaXVtIikpCiAgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9
IGdMaW5lTWVkaXVtOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHRoaWNrbmVzcywgInRoaWNrIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhp
Y2tuZXNzLCAidGhpY2siKSkKICAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gZ0xpbmVUaGljazsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIHRoaWNrbmVz
cyBhdHRyaWJ1dGUgdXNpbmcgZ0xpbmVNZWRpdW0gYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCAyYTI3NzU1MGU0YTk2OWRkYjY0ZDMzNjFj
OGZlNDcxMzdhOGViZDc1Li5kNzVmODFhM2JjNGI2MjdmMDE5ZGQwNDE1MjQ5MzM1YjBhNDE2NjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBA
IC0xMzYxLDggKzEzNjEsOCBAQCBib29sIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29tcGFyZUNv
ZGVwb2ludHNMZXhpY29ncmFwaGljYWxseShjb25zdCBHbHlwaERhdGEmCiAgICAgfQogCiAgICAg
aWYgKGl0ZXJhdG9yMSA9PSBjb2RlUG9pbnRzMS5lbmQoKSAmJiBpdGVyYXRvcjIgPT0gY29kZVBv
aW50czIuZW5kKCkpIHsKLSAgICAgICAgYm9vbCBmaXJzdElzSXNvbGF0ZWQgPSBkYXRhMS5nbHlw
aEVsZW1lbnQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGF0YTEuZ2x5cGhFbGVt
ZW50LT5mYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjphcmFiaWNfZm9ybUF0dHIpLCAiaXNvbGF0
ZWQiKTsKLSAgICAgICAgYm9vbCBzZWNvbmRJc0lzb2xhdGVkID0gZGF0YTIuZ2x5cGhFbGVtZW50
ICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRhdGEyLmdseXBoRWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShTVkdOYW1lczo6YXJhYmljX2Zvcm1BdHRyKSwgImlzb2xhdGVkIik7Cisg
ICAgICAgIGJvb2wgZmlyc3RJc0lzb2xhdGVkID0gZGF0YTEuZ2x5cGhFbGVtZW50ICYmIGVxdWFs
SWdub3JpbmdDYXNlKGRhdGExLmdseXBoRWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShTVkdOYW1l
czo6YXJhYmljX2Zvcm1BdHRyKSwgImlzb2xhdGVkIik7CisgICAgICAgIGJvb2wgc2Vjb25kSXNJ
c29sYXRlZCA9IGRhdGEyLmdseXBoRWxlbWVudCAmJiBlcXVhbElnbm9yaW5nQ2FzZShkYXRhMi5n
bHlwaEVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmFyYWJpY19mb3JtQXR0ciks
ICJpc29sYXRlZCIpOwogICAgICAgICByZXR1cm4gZmlyc3RJc0lzb2xhdGVkICYmICFzZWNvbmRJ
c0lzb2xhdGVkOwogICAgIH0KICAgICByZXR1cm4gaXRlcmF0b3IxID09IGNvZGVQb2ludHMxLmVu
ZCgpOwpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09U
RkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAg
ICBpZiAobV9jb2RlcG9pbnRzVG9JbmRpY2VzTWFwLmlzVmFsaWRLZXkoZ2x5cGguY29kZXBvaW50
cykpIHsKICAgICAgICAgICAgIGF1dG8mIGdseXBoVmVjdG9yID0gbV9jb2RlcG9pbnRzVG9JbmRp
Y2VzTWFwLmFkZChnbHlwaC5jb2RlcG9pbnRzLCBWZWN0b3I8R2x5cGg+KCkpLml0ZXJhdG9yLT52
YWx1ZTsKICAgICAgICAgICAgIC8vIFByZWZlciBpc29sYXRlZCBhcmFiaWMgZm9ybXMKLSAgICAg
ICAgICAgIGlmIChnbHlwaC5nbHlwaEVsZW1lbnQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZ2x5cGguZ2x5cGhFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKFNWR05hbWVzOjphcmFi
aWNfZm9ybUF0dHIpLCAiaXNvbGF0ZWQiKSkKKyAgICAgICAgICAgIGlmIChnbHlwaC5nbHlwaEVs
ZW1lbnQgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoZ2x5cGguZ2x5cGhFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKFNWR05hbWVzOjphcmFiaWNfZm9ybUF0dHIpLCAiaXNvbGF0ZWQiKSkKICAgICAgICAg
ICAgICAgICBnbHlwaFZlY3Rvci5pbnNlcnQoMCwgaSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgZ2x5cGhWZWN0b3IuYXBwZW5kKGkpOwpAQCAtMTQ2OSw3ICsxNDY5LDcgQEAg
U1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9u
dEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBzZWdtZW50czsK
ICAgICAgICAgbV9mb250RmFjZUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZv
bnRfd2VpZ2h0QXR0cikuc3RyaW5nKCkuc3BsaXQoJyAnLCBzZWdtZW50cyk7CiAgICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKSB7Ci0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc2VnbWVudCwgImJvbGQiKSkgeworICAgICAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHNlZ21lbnQsICJib2xkIikpIHsKICAgICAgICAgICAgICAgICBt
X3dlaWdodCA9IDc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
NDgyLDcgKzE0ODIsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZl
cnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgICAgIH0KICAgICAg
ICAgbV9mb250RmFjZUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZvbnRfc3R5
bGVBdHRyKS5zdHJpbmcoKS5zcGxpdCgnICcsIHNlZ21lbnRzKTsKICAgICAgICAgZm9yIChhdXRv
JiBzZWdtZW50IDogc2VnbWVudHMpIHsKLSAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzZWdtZW50LCAiaXRhbGljIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoc2VnbWVudCwgIm9ibGlxdWUiKSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHNlZ21lbnQsICJpdGFsaWMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShzZWdtZW50
LCAib2JsaXF1ZSIpKSB7CiAgICAgICAgICAgICAgICAgbV9pdGFsaWMgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggMWM1YjNiY2ZlYzg5ZjRhYTk5ZDliM2UzNDRiYmZm
ODYxYTkzNmNjYi4uZWUzZDE1ZDgzMDNlOTM4MWViYjY5NjNlMTZmZGNmZWJiNjFhNjgzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0zNzksMTMg
KzM3OSwxMyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFdpcmVsZXNzUGxheWJhY2tEaXNh
YmxlZChib29sIGF2YWlsYWJsZSkKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0RWRpdGluZ0Jl
aGF2aW9yKGNvbnN0IFN0cmluZyYgZWRpdGluZ0JlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlZGl0aW5nQmVoYXZpb3IsICJ3aW4iKSkKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWRpdGluZ0JlaGF2aW9yLCAid2luIikpCiAgICAgICAgIHNl
dHRpbmdzKCktPnNldEVkaXRpbmdCZWhhdmlvclR5cGUoRWRpdGluZ1dpbmRvd3NCZWhhdmlvcik7
Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZWRpdGluZ0JlaGF2
aW9yLCAibWFjIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWRpdGluZ0JlaGF2
aW9yLCAibWFjIikpCiAgICAgICAgIHNldHRpbmdzKCktPnNldEVkaXRpbmdCZWhhdmlvclR5cGUo
RWRpdGluZ01hY0JlaGF2aW9yKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShlZGl0aW5nQmVoYXZpb3IsICJ1bml4IikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZWRpdGluZ0JlaGF2aW9yLCAidW5peCIpKQogICAgICAgICBzZXR0aW5ncygpLT5z
ZXRFZGl0aW5nQmVoYXZpb3JUeXBlKEVkaXRpbmdVbml4QmVoYXZpb3IpOwotICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVkaXRpbmdCZWhhdmlvciwgImlvcyIpKQor
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVkaXRpbmdCZWhhdmlvciwgImlvcyIpKQog
ICAgICAgICBzZXR0aW5ncygpLT5zZXRFZGl0aW5nQmVoYXZpb3JUeXBlKEVkaXRpbmdJT1NCZWhh
dmlvcik7CiAgICAgZWxzZQogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC00MDAsMTEgKzQw
MCwxMSBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZERpc3BsYXlUcmFja0tpbmQo
Y29uc3QgU3RyaW5nJiBraW5kLCBib29sIGVuYWJsZQogICAgICAgICByZXR1cm47CiAgICAgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFnZSgpLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGtpbmQsICJzdWJ0aXRsZXMiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoa2lu
ZCwgIlN1YnRpdGxlcyIpKQogICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVm
ZXJzU3VidGl0bGVzKGVuYWJsZWQpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtpbmQsICJjYXB0aW9ucyIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGtpbmQsICJDYXB0aW9ucyIpKQogICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFVz
ZXJQcmVmZXJzQ2FwdGlvbnMoZW5hYmxlZCk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2luZCwgInRleHRkZXNjcmlwdGlvbnMiKSkKKyAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShraW5kLCAiVGV4dERlc2NyaXB0aW9ucyIpKQogICAgICAgICBjYXB0
aW9uUHJlZmVyZW5jZXMtPnNldFVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhlbmFibGVkKTsK
ICAgICBlbHNlCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTQyMywxMSArNDIzLDExIEBA
IGJvb2wgSW50ZXJuYWxTZXR0aW5nczo6c2hvdWxkRGlzcGxheVRyYWNrS2luZChjb25zdCBTdHJp
bmcmIGtpbmQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlKCktPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoa2luZCwgInN1YnRpdGxlcyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5k
LCAiU3VidGl0bGVzIikpCiAgICAgICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQ
cmVmZXJzU3VidGl0bGVzKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGtpbmQsICJjYXB0aW9ucyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiQ2Fw
dGlvbnMiKSkKICAgICAgICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnND
YXB0aW9ucygpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShraW5kLCAi
dGV4dGRlc2NyaXB0aW9ucyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShraW5kLCAiVGV4
dERlc2NyaXB0aW9ucyIpKQogICAgICAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT51c2Vy
UHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKTsKIAogICAgIGVjID0gU1lOVEFYX0VSUjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1YTUwODJjNjRmNzViZGVjMTUxZjE2NDhh
ODUwMTgwZDNhM2I1NjVjLi4xM2ZmZDQ1MGQyNDMwODU2ZmY1YTFlM2NlODRlMmVkYWI2NzE0ZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yOTQsMjggKzI5NCwyOCBA
QCBib29sIEluc3BlY3RvclN0dWJGcm9udGVuZDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIAogc3RhdGljIGJvb2wgbWFya2VyVHlwZUZyb20oY29uc3QgU3Ry
aW5nJiBtYXJrZXJUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSYgcmVzdWx0KQogewot
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYXJrZXJUeXBlLCAic3BlbGxp
bmciKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWFya2VyVHlwZSwgIlNwZWxsaW5nIikp
CiAgICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYXJrZXJUeXBlLCAiZ3JhbW1hciIpKQor
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1hcmtlclR5cGUsICJHcmFtbWFyIikpCiAg
ICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwotICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hcmtlclR5cGUsICJ0ZXh0bWF0Y2giKSkKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtYXJrZXJUeXBlLCAiVGV4dE1hdGNoIikpCiAg
ICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2g7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFya2VyVHlwZSwgInJlcGxhY2VtZW50Iikp
CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWFya2VyVHlwZSwgIlJlcGxhY2VtZW50
IikpCiAgICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudDsKLSAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYXJrZXJUeXBlLCAiY29ycmVj
dGlvbmluZGljYXRvciIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1hcmtlclR5
cGUsICJDb3JyZWN0aW9uSW5kaWNhdG9yIikpCiAgICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFy
a2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1hcmtlclR5cGUsICJyZWplY3RlZGNvcnJlY3Rpb24iKSkKKyAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShtYXJrZXJUeXBlLCAiUmVqZWN0ZWRDb3JyZWN0aW9uIikp
CiAgICAgICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb247Ci0g
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFya2VyVHlwZSwgImF1
dG9jb3JyZWN0ZWQiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtYXJrZXJUeXBl
LCAiQXV0b2NvcnJlY3RlZCIpKQogICAgICAgICByZXN1bHQgPSBEb2N1bWVudE1hcmtlcjo6QXV0
b2NvcnJlY3RlZDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
YXJrZXJUeXBlLCAic3BlbGxjaGVja2luZ2V4ZW1wdGlvbiIpKQorICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG1hcmtlclR5cGUsICJTcGVsbENoZWNraW5nRXhlbXB0aW9uIikpCiAgICAg
ICAgIHJlc3VsdCA9IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uOwotICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hcmtlclR5cGUsICJkZWxl
dGVkYXV0b2NvcnJlY3Rpb24iKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtYXJr
ZXJUeXBlLCAiRGVsZXRlZEF1dG9jb3JyZWN0aW9uIikpCiAgICAgICAgIHJlc3VsdCA9IERvY3Vt
ZW50TWFya2VyOjpEZWxldGVkQXV0b2NvcnJlY3Rpb247Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFya2VyVHlwZSwgImRpY3RhdGlvbmFsdGVybmF0aXZlcyIp
KQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1hcmtlclR5cGUsICJEaWN0YXRpb25B
bHRlcm5hdGl2ZXMiKSkKICAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlv
bkFsdGVybmF0aXZlczsKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCi0g
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFya2VyVHlwZSwgInRl
bGVwaG9uZW51bWJlciIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1hcmtlclR5
cGUsICJUZWxlcGhvbmVOdW1iZXIiKSkKICAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnRNYXJrZXI6
OlRlbGVwaG9uZU51bWJlcjsKICNlbmRpZgogICAgIGVsc2UKQEAgLTMyOCw3ICszMjgsNyBAQCBz
dGF0aWMgYm9vbCBtYXJrZXJUeXBlc0Zyb20oY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZQogewogICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
IHNpbmd1bGFyUmVzdWx0OwogCi0gICAgaWYgKG1hcmtlclR5cGUuaXNFbXB0eSgpIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hcmtlclR5cGUsICJhbGwiKSkKKyAgICBpZiAobWFy
a2VyVHlwZS5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWFya2VyVHlwZSwgImFsbCIp
KQogICAgICAgICByZXN1bHQgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpOwogICAgIGVs
c2UgaWYgKG1hcmtlclR5cGVGcm9tKG1hcmtlclR5cGUsIHNpbmd1bGFyUmVzdWx0KSkKICAgICAg
ICAgcmVzdWx0ID0gc2luZ3VsYXJSZXN1bHQ7CkBAIC0yNTg5LDExICsyNTg5LDExIEBAIGJvb2wg
SW50ZXJuYWxzOjptZWRpYUVsZW1lbnRIYXNDaGFyYWN0ZXJpc3RpYyhOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIGNoYXJhY3RlCiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gZG93
bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4obm9kZSk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoY2hhcmFjdGVyaXN0aWMsICJhdWRpYmxlIikpCisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGNoYXJhY3RlcmlzdGljLCAiQXVkaWJsZSIpKQogICAgICAgICByZXR1cm4g
ZWxlbWVudC0+aGFzQXVkaW8oKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY2hhcmFjdGVyaXN0aWMsICJ2aXN1YWwiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
Y2hhcmFjdGVyaXN0aWMsICJWaXN1YWwiKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1Zp
ZGVvKCk7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNoYXJhY3Rlcmlz
dGljLCAibGVnaWJsZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjaGFyYWN0ZXJpc3Rp
YywgIkxlZ2libGUiKSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0Nsb3NlZENhcHRpb25z
KCk7CiAKICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC0yNjc2LDExICsyNjc2LDExIEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoY29uc3QgU3RyaW5nJiBtb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAo
KS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKICAgICAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobW9kZSwgImF1dG9tYXRpYyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShtb2RlLCAiQXV0b21hdGljIikpCiAgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0Q2Fw
dGlvbkRpc3BsYXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYyk7Ci0gICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgImZvcmNlZG9ubHki
KSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtb2RlLCAiRm9yY2VkT25seSIpKQog
ICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldENhcHRpb25EaXNwbGF5TW9kZShDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpGb3JjZWRPbmx5KTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAiYWx3YXlzb24iKSkKKyAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShtb2RlLCAiQWx3YXlzT24iKSkKICAgICAgICAgY2FwdGlvblByZWZlcmVuY2Vz
LT5zZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QWx3YXlzT24p
OwogICAgIGVsc2UKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtMjc4NCwxMSArMjc4NCwx
MSBAQCB2b2lkIEludGVybmFsczo6YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oY29uc3Qg
U3RyaW5nJiBpbnRlcnJ1cHRpb25TdHJpbmcsCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246
OkludGVycnVwdGlvblR5cGUgaW50ZXJydXB0aW9uID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5
c3RlbUludGVycnVwdGlvbjsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShpbnRlcnJ1cHRpb25TdHJpbmcsICJzeXN0ZW0iKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoaW50ZXJydXB0aW9uU3RyaW5nLCAiU3lzdGVtIikpCiAgICAgICAgIGludGVycnVwdGlvbiA9
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb247Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW50ZXJydXB0aW9uU3RyaW5nLCAic3lzdGVt
c2xlZXAiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpbnRlcnJ1cHRpb25TdHJp
bmcsICJTeXN0ZW1TbGVlcCIpKQogICAgICAgICBpbnRlcnJ1cHRpb24gPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U3lzdGVtU2xlZXA7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoaW50ZXJydXB0aW9uU3RyaW5nLCAiZW50ZXJpbmdiYWNrZ3JvdW5kIikpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaW50ZXJydXB0aW9uU3RyaW5nLCAiRW50ZXJpbmdC
YWNrZ3JvdW5kIikpCiAgICAgICAgIGludGVycnVwdGlvbiA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbnRlcmluZ0JhY2tncm91bmQ7CiAgICAgZWxzZSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOwpAQCAtMjgwMiw3ICsyODAyLDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuZE1lZGlh
U2Vzc2lvbkludGVycnVwdGlvbihjb25zdCBTdHJpbmcmIGZsYWdzU3RyaW5nKQogewogICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncyA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb0ZsYWdzOwogCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGZsYWdzU3RyaW5nLCAibWF5cmVzdW1lcGxheWluZyIpKQorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShmbGFnc1N0cmluZywgIk1heVJlc3VtZVBsYXlpbmciKSkKICAgICAgICAgZmxh
Z3MgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZzsKICAgICAKICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5lbmRJbnRlcnJ1cHRp
b24oZmxhZ3MpOwpAQCAtMjgyMSwxMSArMjgyMSwxMSBAQCB2b2lkIEludGVybmFsczo6YXBwbGlj
YXRpb25XaWxsRW50ZXJCYWNrZ3JvdW5kKCkgY29uc3QKIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRp
YVNlc3Npb25SZXN0cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVzdHJpY3Rpb25zU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb25lOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtZWRp
YVR5cGVTdHJpbmcsICJ2aWRlbyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtZWRpYVR5
cGVTdHJpbmcsICJWaWRlbyIpKQogICAgICAgICBtZWRpYVR5cGUgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6VmlkZW87Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWVkaWFUeXBlU3RyaW5nLCAiYXVkaW8iKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShtZWRpYVR5cGVTdHJpbmcsICJBdWRpbyIpKQogICAgICAgICBtZWRpYVR5cGUgPSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6QXVkaW87Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWVkaWFUeXBlU3RyaW5nLCAid2ViYXVkaW8iKSkKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShtZWRpYVR5cGVTdHJpbmcsICJXZWJBdWRpbyIpKQogICAgICAgICBtZWRp
YVR5cGUgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87CiAgICAgZWxzZSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwpAQCAtMjg0MCwxMyArMjg0MCwxMyBAQCB2b2lk
IEludGVybmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlU3RyaW5nLCBjb25zdAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3RyaWN0aW9uc0FycmF5
OwogICAgIHJlc3RyaWN0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCByZXN0cmljdGlvbnNB
cnJheSk7CiAgICAgZm9yIChhdXRvJiByZXN0cmljdGlvblN0cmluZyA6IHJlc3RyaWN0aW9uc0Fy
cmF5KSB7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmlj
dGlvblN0cmluZywgImNvbmN1cnJlbnRwbGF5YmFja25vdHBlcm1pdHRlZCIpKQorICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJDb25jdXJyZW50UGxheWJh
Y2tOb3RQZXJtaXR0ZWQiKSkKICAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OkNvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZDsKLSAgICAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAi
YmFja2dyb3VuZHByb2Nlc3NwbGF5YmFja3Jlc3RyaWN0ZWQiKSkKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFj
a1Jlc3RyaWN0ZWQiKSkKICAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkOwotICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJiYWNrZ3JvdW5kdGFicGxheWJhY2tyZXN0cmljdGVkIikpCisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywgIkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3Ry
aWN0ZWQiKSkKICAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7Ci0gICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgImludGVycnVw
dGVkcGxheWJhY2tub3RwZXJtaXR0ZWQiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlc3RyaWN0aW9uU3RyaW5nLCAiSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCIpKQog
ICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
SW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZDsKICAgICB9CiAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkUmVzdHJpY3Rpb24obWVkaWFUeXBl
LCByZXN0cmljdGlvbnMpOwpAQCAtMjg2NywzMSArMjg2NywzMSBAQCB2b2lkIEludGVybmFsczo6
c2V0TWVkaWFFbGVtZW50UmVzdHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFN0cgogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3RyaWN0aW9uc0FycmF5OwogICAgIHJlc3Ry
aWN0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCByZXN0cmljdGlvbnNBcnJheSk7CiAgICAg
Zm9yIChhdXRvJiByZXN0cmljdGlvblN0cmluZyA6IHJlc3RyaWN0aW9uc0FycmF5KSB7Ci0gICAg
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywg
Im5vcmVzdHJpY3Rpb25zIikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmlj
dGlvblN0cmluZywgIk5vUmVzdHJpY3Rpb25zIikpCiAgICAgICAgICAgICByZXN0cmljdGlvbnMg
fD0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6Tm9SZXN0cmljdGlvbnM7Ci0gICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2Vy
Z2VzdHVyZWZvcmxvYWQiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0
aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCIpKQogICAgICAgICAgICAgcmVz
dHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckxv
YWQ7Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlv
blN0cmluZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcnJhdGVjaGFuZ2UiKSkKKyAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJl
Rm9yUmF0ZUNoYW5nZSIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVu
dFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2U7Ci0gICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1
c2VyZ2VzdHVyZWZvcmZ1bGxzY3JlZW4iKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiIpKQog
ICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVV
c2VyR2VzdHVyZUZvckZ1bGxzY3JlZW47Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudHRvbG9hZG1l
ZGlhIikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvblN0cmluZywg
IlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhIikpCiAgICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWE7
Ci0gICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0
cmluZywgInJlcXVpcmVwYWdlY29uc2VudHRvcmVzdW1lbWVkaWEiKSkKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVBhZ2VDb25zZW50VG9S
ZXN1bWVNZWRpYSIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVudFNl
c3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWE7CiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAicmVxdWlyZXVzZXJnZXN0dXJldG9zaG93cGxheWJh
Y2t0YXJnZXRwaWNrZXIiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0
aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIi
KSkKICAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjsKLSAgICAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAid2lyZWxlc3N2
aWRlb3BsYXliYWNrZGlzYWJsZWQiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJl
c3RyaWN0aW9uU3RyaW5nLCAiV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQiKSkKICAgICAg
ICAgICAgIHJlc3RyaWN0aW9ucyB8PSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZDsKICNlbmRpZgotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJldXNlcmdlc3R1cmVmb3JhdWRp
b3JhdGVjaGFuZ2UiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9u
U3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlIikpCiAgICAgICAg
ICAgICByZXN0cmljdGlvbnMgfD0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0
dXJlRm9yQXVkaW9SYXRlQ2hhbmdlOwotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJtZXRhZGF0YXByZWxvYWRpbmdub3RwZXJtaXR0
ZWQiKSkKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAi
TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkIikpCiAgICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gTWVkaWFFbGVtZW50U2Vzc2lvbjo6TWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVk
OwotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25T
dHJpbmcsICJhdXRvcHJlbG9hZGluZ25vdHBlcm1pdHRlZCIpKQorICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRl
ZCIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IE1lZGlhRWxlbWVudFNlc3Npb246OkF1
dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkOwotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJpbnZpc2libGVhdXRvcGxheW5vdHBlcm1p
dHRlZCIpKQorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCIpKQogICAgICAgICAgICAgcmVzdHJpY3Rp
b25zIHw9IE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
OwogICAgIH0KICAgICBlbGVtZW50LT5tZWRpYVNlc3Npb24oKS5hZGRCZWhhdmlvclJlc3RyaWN0
aW9uKHJlc3RyaWN0aW9ucyk7CkBAIC0yOTAxLDIxICsyOTAxLDIxIEBAIHZvaWQgSW50ZXJuYWxz
Ojpwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kU3RyaW5nLCBF
eGNlcHRpb25DCiB7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZSBjb21tYW5kOwogICAgIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb21tYW5kU3RyaW5nLCAicGxheSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShj
b21tYW5kU3RyaW5nLCAiUGxheSIpKQogICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlDb21tYW5kOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGNvbW1hbmRTdHJpbmcsICJwYXVzZSIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGNvbW1hbmRTdHJpbmcsICJQYXVzZSIpKQogICAgICAgICBjb21tYW5kID0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb21tYW5kU3RyaW5nLCAic3RvcCIpKQorICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJTdG9wIikpCiAgICAgICAgIGNvbW1hbmQg
PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7Ci0gICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29tbWFuZFN0cmluZywgInRvZ2dsZXBsYXlwYXVzZSIp
KQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJUb2dnbGVQ
bGF5UGF1c2UiKSkKICAgICAgICAgY29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dn
bGVQbGF5UGF1c2VDb21tYW5kOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGNvbW1hbmRTdHJpbmcsICJiZWdpbnNlZWtpbmdiYWNrd2FyZCIpKQorICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGNvbW1hbmRTdHJpbmcsICJCZWdpblNlZWtpbmdCYWNrd2Fy
ZCIpKQogICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2lu
Z0JhY2t3YXJkQ29tbWFuZDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb21tYW5kU3RyaW5nLCAiZW5kc2Vla2luZ2JhY2t3YXJkIikpCisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoY29tbWFuZFN0cmluZywgIkVuZFNlZWtpbmdCYWNrd2FyZCIpKQog
ICAgICAgICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2Fy
ZENvbW1hbmQ7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29t
bWFuZFN0cmluZywgImJlZ2luc2Vla2luZ2ZvcndhcmQiKSkKKyAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShjb21tYW5kU3RyaW5nLCAiQmVnaW5TZWVraW5nRm9yd2FyZCIpKQogICAgICAg
ICBjb21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21t
YW5kOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbW1hbmRT
dHJpbmcsICJlbmRzZWVraW5nZm9yd2FyZCIpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGNvbW1hbmRTdHJpbmcsICJFbmRTZWVraW5nRm9yd2FyZCIpKQogICAgICAgICBjb21tYW5k
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdGb3J3YXJkQ29tbWFuZDsKICAgICBl
bHNlIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CkBAIC0zMDAzLDExICszMDAz
LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcKICAgICBWZWN0b3I8U3RyaW5nPiByZXN0cmlj
dGlvbnNBcnJheTsKICAgICByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnLCBmYWxzZSwgcmVz
dHJpY3Rpb25zQXJyYXkpOwogICAgIGZvciAoYXV0byYgcmVzdHJpY3Rpb25TdHJpbmcgOiByZXN0
cmljdGlvbnNBcnJheSkgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocmVzdHJpY3Rpb25TdHJpbmcsICJub3Jlc3RyaWN0aW9ucyIpKQorICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJOb1Jlc3RyaWN0aW9ucyIpKQogICAg
ICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7Ci0g
ICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmlu
ZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcmF1ZGlvc3RhcnQiKSkKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uU3RyaW5nLCAiUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVk
aW9TdGFydCIpKQogICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dDo6UmVx
dWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOwotICAgICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJlcGFn
ZWNvbnNlbnRmb3JhdWRpb3N0YXJ0IikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShy
ZXN0cmljdGlvblN0cmluZywgIlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnQiKSkKICAg
ICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2Vu
dEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKICAgICB9CiAgICAgY29udGV4dC0+YWRkQmVoYXZp
b3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwpAQCAtMzA0NCwxMSArMzA0NCwxMSBAQCB2b2lk
IEludGVybmFsczo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmIGRldmljZU5hbWUsCiAKICAgICBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3Rh
dGUgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6VW5rbm93bjsKIAotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkZXZpY2VTdGF0ZSwgImRldmljZWF2YWls
YWJsZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkZXZpY2VTdGF0ZSwgIkRldmljZUF2
YWlsYWJsZSIpKQogICAgICAgICBzdGF0ZSA9IE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0OjpP
dXRwdXREZXZpY2VBdmFpbGFibGU7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZGV2aWNlU3RhdGUsICJkZXZpY2V1bmF2YWlsYWJsZSIpKQorICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGRldmljZVN0YXRlLCAiRGV2aWNlVW5hdmFpbGFibGUiKSkKICAg
ICAgICAgc3RhdGUgPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6T3V0cHV0RGV2aWNlVW5h
dmFpbGFibGU7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGV2
aWNlU3RhdGUsICJ1bmtub3duIikpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGV2
aWNlU3RhdGUsICJVbmtub3duIikpCiAgICAgICAgIHN0YXRlID0gTWVkaWFQbGF5YmFja1Rhcmdl
dENvbnRleHQ6OlVua25vd247CiAgICAgZWxzZSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5jcHAKaW5kZXggZTNhNmEzYjk4ODQ0ZGUw
NjhkNTEwZDg5YjFmMTQzMjQ1N2JmNzBmMy4uYzRiODhkM2IyNTdiOGFlMDEwMGUwMDVkNDExMjRm
Mzc2MmExNTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHByb3RlY3RlZDoKIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoa2V5U3lzdGVtLCAiY29tLndlYmNvcmUubW9jayIpOworICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQ2FzZShrZXlTeXN0ZW0sICJjb20ud2ViY29yZS5tb2NrIik7CiB9CiAKIGJvb2wgTW9j
a0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYzLDEyICs2MywxMiBAQCBib29sIE1vY2tD
RE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZwogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAidmlkZW8vbW9jayIpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5n
Q2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKIH0KIAogYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidmlkZW8vbW9jayIpOworICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPENETVNlc3Npb24+IE1vY2tDRE06OmNyZWF0ZVNlc3Npb24oQ0RNU2Vzc2lvbkNs
aWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggOGEz
ZmYxYzU2NzI2OTRhZjliNTJlMGMyMDJlNDEzOGM2MzI0ZmM2My4uMzVkYjI1MWVmZDhiZjJjNTNl
ZmRlODU3ZTRhNzNmZDNmODQ0YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGVudW0gWE1MSHR0cFJlcXVlc3RTZW5kQXJyYXlCdWZmZXJP
clZpZXcgewogCiBzdGF0aWMgYm9vbCBpc1NldENvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJz
ZXQtY29va2llIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgInNldC1j
b29raWUyIik7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzZXQtY29va2ll
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNldC1jb29raWUyIik7CiB9CiAKIHN0YXRp
YyB2b2lkIHJlcGxhY2VDaGFyc2V0SW5NZWRpYVR5cGUoU3RyaW5nJiBtZWRpYVR5cGUsIGNvbnN0
IFN0cmluZyYgY2hhcnNldFZhbHVlKQpAQCAtMjA0LDcgKzIwNCw3IEBAIERvY3VtZW50KiBYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICBpZiAoIW1f
Y3JlYXRlZERvY3VtZW50KSB7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IHJlc3BvbnNlTUlN
RVR5cGUoKTsKLSAgICAgICAgYm9vbCBpc0hUTUwgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpOworICAgICAgICBib29sIGlzSFRNTCA9IGVxdWFs
SWdub3JpbmdDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CiAKICAgICAgICAgLy8gVGhlIFcz
QyBzcGVjIHJlcXVpcmVzIHRoZSBmaW5hbCBNSU1FIHR5cGUgdG8gYmUgc29tZSB2YWxpZCBYTUwg
dHlwZSwgb3IgdGV4dC9odG1sLgogICAgICAgICAvLyBJZiBpdCBpcyB0ZXh0L2h0bWwsIHRoZW4g
dGhlIHJlc3BvbnNlVHlwZSBvZiAiZG9jdW1lbnQiIG11c3QgaGF2ZSBiZWVuIHN1cHBsaWVkIGV4
cGxpY2l0bHkuCkBAIC0zOTcsOSArMzk3LDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0V2l0
aENyZWRlbnRpYWxzKGJvb2wgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBib29sIFhNTEh0
dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewot
ICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0aG9kLCAidHJhY2Ui
KQotICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0aG9kLCAidHJh
Y2siKQotICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWV0aG9kLCAi
Y29ubmVjdCIpOworICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiVFJBQ0Ui
KQorICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiVFJBQ0siKQorICAgICAg
ICAmJiAhZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiQ09OTkVDVCIpOwogfQogCiBTdHJpbmcg
WE1MSHR0cFJlcXVlc3Q6OnVwcGVyY2FzZUtub3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIG1l
dGhvZCkKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCiAgICAgICAgICAgICBtX2RlY29kZXIg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAg
ICAgICAgLy8gRG9uJ3Qgc3RvcCBvbiBlbmNvZGluZyBlcnJvcnMsIHVubGlrZSBpdCBpcyBkb25l
IGZvciBvdGhlciBraW5kcyBvZiBYTUwgcmVzb3VyY2VzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2
aW9yIG9mIHByZXZpb3VzIFdlYktpdCB2ZXJzaW9ucywgRmlyZWZveCBhbmQgT3BlcmEuCiAgICAg
ICAgICAgICBtX2RlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwotICAgICAgICB9IGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3BvbnNlTUlNRVR5cGUoKSwg
InRleHQvaHRtbCIpKQorICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3Bv
bnNlTUlNRVR5cGUoKSwgInRleHQvaHRtbCIpKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2h0bWwiLCAiVVRGLTgiKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRl
KCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAppbmRleCA4ZDgwZDRkZDA2NjQ5ZTNjMGRiMzNjNDgwZjcyOTVhZjIwMWM2ZjNmLi42
YWFlMTdlM2FkZTI4NWRjNDFhOTMwYTNhMzhjYjE2YmIzY2I1MDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAgICAgZm9yIChW
ZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYXRocy5iZWdpbigpLCBlbmQgPSBw
YXRocy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0
aCA9ICppdDsKIAotICAgICAgICBpZiAocGF0aC5sZW5ndGgoKSA+IGZpbGVFeHRlbnNpb24ubGVu
Z3RoKCkgJiYgcGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkgeworICAgICAgICBpZiAocGF0
aC5sZW5ndGgoKSA+IGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkgJiYgcGF0aC5lbmRzV2l0aChmaWxl
RXh0ZW5zaW9uLCB0cnVlKSkgewogICAgICAgICAgICAgU3RyaW5nIGZpbGUgPSBwYXRoR2V0Rmls
ZU5hbWUocGF0aCk7CiAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGUu
c3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAg
ICAgICAgICAgIGlmICghb3JpZ2luU2V0Q29weS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggNzAxNzA2N2M3NGFkYzRhNzZjYTM1NjI0NjQwNDE0OWZmNWJj
OTljYi4uMGZjMjc0M2RmZjMwZmY5OTU3MTVlMjc1Y2E2NDQ4NTgzNDA1OTgyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KQEAgLTE5NDAsNyArMTk0MCw3IEBAIFJlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJCiAj
ZW5kaWYKICAgICBOU011dGFibGVBcnJheSAqYXR0cmlidXRlS2V5cyA9IGtpdChwYXJhbU5hbWVz
KTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3Mo
KS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veC1zbmtwIikpIHsKKyAgICBpZiAoZnJhbWUgJiYg
ZnJhbWUtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSAmJiBlcXVhbElnbm9y
aW5nQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtc25rcCIpKSB7CiAgICAgICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMDsgaSA8IFthdHRyaWJ1dGVLZXlzIGNvdW50XTsgKytpKQogICAgICAg
ICAgICAgW2F0dHJpYnV0ZUtleXMgcmVwbGFjZU9iamVjdEF0SW5kZXg6aSB3aXRoT2JqZWN0Oltb
YXR0cmlidXRlS2V5cyBvYmplY3RBdEluZGV4OmldIGxvd2VyY2FzZVN0cmluZ11dOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcAppbmRleCA4YjUwMWJm
MTEwZTU3NTU1NTA2ZjM0MGYxNTExNGJkNTgyZGFhZTg1Li4yNzIzNTJmZGZiZTg3MDg0Y2Q5N2Q1
ZGYzYjUxNDJhNzBlMzU4YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUxvYWRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VMb2Fk
U3RhdGUuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgYm9vbCBQYWdlTG9hZFN0YXRlOjpoYXNPbmx5
U2VjdXJlQ29udGVudChjb25zdCBEYXRhJiBkYXRhKQogICAgIGlmIChkYXRhLmhhc0luc2VjdXJl
Q29udGVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OnBy
b3RvY29sSXMoZGF0YS51cmwsICJodHRwcyIpOworICAgIHJldHVybiBkYXRhLnVybC5zdGFydHNX
aXRoKCJodHRwczoiLCBmYWxzZSk7CiB9CiAKIGJvb2wgUGFnZUxvYWRTdGF0ZTo6aGFzT25seVNl
Y3VyZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMTEyN2Qx
MmVlODFjOTQyMTQ4MzI3NTgxZTMwYzU5NWU4MjRiYjczNC4uYjhhNjNjZDNhYTJhY2RhODQ1OTJi
ZjA3YTAwZjYxN2RmMmQwNzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC02NDgs
MTggKzY0OCwxOCBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgfQogCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBhcmFtZXRlcnMubWltZVR5
cGUsICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpKSB7CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHBhcmFtZXRlcnMubWltZVR5cGUsICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCIpKSB7CiAgICAgICAgIHNpemVfdCB3bW9kZUluZGV4ID0gcGFyYW1ldGVycy5uYW1lcy5m
aW5kKCJ3bW9kZSIpOwogICAgICAgICBpZiAod21vZGVJbmRleCAhPSBub3RGb3VuZCkgewogICAg
ICAgICAgICAgLy8gVHJhbnNwYXJlbnQgd2luZG93IG1vZGUgaXMgbm90IHN1cHBvcnRlZCBieSBY
MTEgYmFja2VuZC4KLSAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShwYXJhbWV0ZXJzLnZhbHVlc1t3bW9kZUluZGV4XSwgInRyYW5zcGFyZW50IikKLSAgICAgICAg
ICAgICAgICB8fCAobV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdp
blF1aXJrczo6Rm9yY2VGbGFzaFdpbmRvd2xlc3NNb2RlKSAmJiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXJhbWV0ZXJzLnZhbHVlc1t3bW9kZUluZGV4XSwgIndpbmRvdyIpKSkKKyAg
ICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwYXJhbWV0ZXJzLnZhbHVlc1t3bW9kZUlu
ZGV4XSwgInRyYW5zcGFyZW50IikKKyAgICAgICAgICAgICAgICB8fCAobV9wbHVnaW5Nb2R1bGUt
PnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6Rm9yY2VGbGFzaFdpbmRvd2xl
c3NNb2RlKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShwYXJhbWV0ZXJzLnZhbHVlc1t3bW9kZUluZGV4
XSwgIndpbmRvdyIpKSkKICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlc1t3bW9kZUluZGV4XSA9
ICJvcGFxdWUiOwogICAgICAgICB9IGVsc2UgaWYgKG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OkZvcmNlRmxhc2hXaW5kb3dsZXNzTW9kZSkpIHsK
ICAgICAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKCJ3bW9kZSIpOwogICAgICAgICAgICAgcGFy
YW1WYWx1ZXMuYXBwZW5kKCJvcGFxdWUiKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGFyYW1ldGVycy5taW1lVHlwZSwgImFwcGxpY2F0
aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKSkgeworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UocGFyYW1ldGVycy5taW1lVHlwZSwgImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3Qt
bmV0c2NhcGUiKSkgewogICAgICAgICBwYXJhbU5hbWVzLmFwcGVuZCgid2luZG93ZWRQbHVnaW4i
KTsKICAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKCJmYWxzZSIpOwogICAgIH0KQEAgLTY3Niw3
ICs2NzYsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgaWYgKG1f
cGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6Ok1ha2VP
cGFxdWVVbmxlc3NUcmFuc3BhcmVudFNpbHZlcmxpZ2h0QmFja2dyb3VuZEF0dHJpYnV0ZUV4aXN0
cykpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLm5hbWVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocGFyYW1ldGVycy5uYW1lc1tpXSwgImJhY2tncm91bmQiKSkgeworICAgICAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHBhcmFtZXRlcnMubmFtZXNbaV0sICJiYWNrZ3JvdW5kIikpIHsK
ICAgICAgICAgICAgICAgICBzZXRJc1RyYW5zcGFyZW50KGlzVHJhbnNwYXJlbnRTaWx2ZXJsaWdo
dEJhY2tncm91bmRWYWx1ZShwYXJhbWV0ZXJzLnZhbHVlc1tpXS5sb3dlcigpKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>