<?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>194710</bug_id>
          
          <creation_ts>2019-02-15 10:20:11 -0800</creation_ts>
          <short_desc>REGRESSION(r241559): Causes layout test crashes under GuardMalloc (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2019-02-15 10:27:34 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>192405</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mcatanzaro</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506618</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 10:20:11 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/241559 broke the build:
Causes layout test crashes under GuardMalloc (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>1506620</commentid>
    <comment_count>1</comment_count>
      <attachid>362124</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 10:20:29 -0800</bug_when>
    <thetext>Created attachment 362124
ROLLOUT of r241559

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>1506622</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-15 10:25:23 -0800</bug_when>
    <thetext>Can you post a backtrace please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506625</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-15 10:25:52 -0800</bug_when>
    <thetext>Ah, I see you did in bug #192405.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506626</commentid>
    <comment_count>4</comment_count>
      <attachid>362124</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 10:26:23 -0800</bug_when>
    <thetext>Comment on attachment 362124
ROLLOUT of r241559

Clearing flags on attachment: 362124

Committed r241593: &lt;https://trac.webkit.org/changeset/241593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506627</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-15 10:26:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506629</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-15 10:27:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/48115294&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362124</attachid>
            <date>2019-02-15 10:20:29 -0800</date>
            <delta_ts>2019-02-15 10:26:23 -0800</delta_ts>
            <desc>ROLLOUT of r241559</desc>
            <filename>bug-194710-20190215102028.patch</filename>
            <type>text/plain</type>
            <size>116515</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZmM0OTAwYTI0NzRjYTkzYmVjMGE5OWE0YWQ2MTRmODYxY2FhMmEyLi4wM2NkMWE0ZGZjNWQ1YjI0
ZWYzNWQ0ZDI2OGQzNGZlZGUxZTRiZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOS0wMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MTU1OSBhbmQgcjI0
MTU2Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NDcxMAorCisgICAgICAgIENhdXNlcyBsYXlvdXQgdGVzdCBjcmFzaGVzIHVuZGVyIEd1YXJkTWFs
bG9jIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV1RGXSBBZGQgZW52aXJvbm1l
bnQgdmFyaWFibGUgaGVscGVycyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjQwNQorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjQxNTU5CisKKyAgICAgICAgIlVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBXaW5DYWly
byBEZWJ1ZyBhZnRlciByMjQxNTU5LiIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0MTU2NgorCiAyMDE5LTAyLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRG8gbm90IGV2ZW4gYWxsb2NhdGUgSklUIHdvcmts
aXN0cyBpbiBub24tSklUIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZTBkMTRhMzRmYjdlYWIxOGI2N2U1ZTc4MWY5NWYw
OGRhMzY0OWNjMS4uNDk4ZTVlMDZhZmNiNGZkNDlhM2JhYmU3NjVlY2VjNWQ4NWRkYTQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MTU1OSBh
bmQgcjI0MTU2Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDcxMAorCisgICAgICAgIENhdXNlcyBsYXlvdXQgdGVzdCBjcmFzaGVzIHVuZGVyIEd1
YXJkTWFsbG9jIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV1RGXSBBZGQgZW52
aXJvbm1lbnQgdmFyaWFibGUgaGVscGVycyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MjQwNQorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjQxNTU5CisKKyAgICAgICAgIlVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBX
aW5DYWlybyBEZWJ1ZyBhZnRlciByMjQxNTU5LiIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzI0MTU2NgorCiAyMDE5LTAyLTE1ICBUcnVpdHQgU2F2ZWxsICA8dHNh
dmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MTU2
NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwN2ZjMjJhYjI2MDg4OGI2N2RjNDYyOGJhMjdiNTMxMTNkYTNkOWFh
Li5hNzdmMjhjODAyMDg3Y2M1YzVjYTg4YmMyZDZkYzVlY2RhODZjMWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTktMDItMTUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDE1NTkgYW5k
IHIyNDE1NjYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQ3MTAKKworICAgICAgICBDYXVzZXMgbGF5b3V0IHRlc3QgY3Jhc2hlcyB1bmRlciBHdWFy
ZE1hbGxvYyAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisK
KyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiW1dURl0gQWRkIGVudmly
b25tZW50IHZhcmlhYmxlIGhlbHBlcnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTI0MDUKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI0MTU1OQorCisgICAgICAgICJVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgV2lu
Q2Fpcm8gRGVidWcgYWZ0ZXIgcjI0MTU1OS4iCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yNDE1NjYKKwogMjAxOS0wMi0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIE91dC1vZi1mbG93IGJveCBpcyBuZXZlciBhIGZs
b2F0IGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggM2RkNGRhMGU2ZjNhOTAyNmM1YzRkYTY3MDYx
NTczZmQzMmJmOWViNC4uNzNlM2M5ZjQ1MzY0YTlkNzcwMjlmOTFiZjU2OWU2N2JkMmQ2YjViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDItMTUgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNDE1NTkgYW5kIHIyNDE1NjYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ3MTAKKworICAgICAgICBDYXVzZXMgbGF5b3V0IHRl
c3QgY3Jhc2hlcyB1bmRlciBHdWFyZE1hbGxvYyAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHJ5YW5o
YWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAg
ICAgICAiW1dURl0gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlIGhlbHBlcnMiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI0MDUKKyAgICAgICAgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0MTU1OQorCisgICAgICAgICJVbnJldmll
d2VkIGJ1aWxkIGZpeCBmb3IgV2luQ2Fpcm8gRGVidWcgYWZ0ZXIgcjI0MTU1OS4iCisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDE1NjYKKwogMjAxOS0wMi0xNCAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dURl0g
QWRkIGVudmlyb25tZW50IHZhcmlhYmxlIGhlbHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTI4ZjJhMjA3MjJk
ZDQ2MTAyMDE5ZTFjNTk5MDAzMWZmNGEzMzk0MS4uM2U1MWE1Yjg2YjljNmMyODk3OWNlOWFiNzYz
MDA4MWQwODVhNDdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMi0xNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjI0MTU1OSBhbmQgcjI0MTU2Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDcxMAorCisgICAgICAgIENhdXNlcyBsYXlv
dXQgdGVzdCBjcmFzaGVzIHVuZGVyIEd1YXJkTWFsbG9jIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAg
cnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgor
CisgICAgICAgICJbV1RGXSBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGUgaGVscGVycyIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjQwNQorICAgICAg
ICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQxNTU5CisKKyAgICAgICAgIlVu
cmV2aWV3ZWQgYnVpbGQgZml4IGZvciBXaW5DYWlybyBEZWJ1ZyBhZnRlciByMjQxNTU5LiIKKyAg
ICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0MTU2NgorCiAyMDE5LTAy
LTE1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXVtHVEtdIERlZmVyIHNhbmRib3hpbmcgQVBJcyB0byAyLjI2CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKaW5kZXggMjZkYmJhY2VlY2UxZjUwMjJjODAwZmQ3YTY2N2RiMzk5MjA3ODE4
My4uNjVmMmE0Y2ZjM2YzMGE4YjBkMTFjNWI2Y2I1ZjNlODk5NWYzZDU1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTAyLTE1ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjQxNTU5IGFuZCByMjQxNTY2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzEwCisKKyAgICAgICAgQ2F1c2VzIGxheW91dCB0ZXN0
IGNyYXNoZXMgdW5kZXIgR3VhcmRNYWxsb2MgKFJlcXVlc3RlZCBieQorICAgICAgICByeWFuaGFk
ZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIltXVEZdIEFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBoZWxwZXJzIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDA1CisgICAgICAgIGh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDE1NTkKKworICAgICAgICAiVW5yZXZpZXdl
ZCBidWlsZCBmaXggZm9yIFdpbkNhaXJvIERlYnVnIGFmdGVyIHIyNDE1NTkuIgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQxNTY2CisKIDIwMTktMDItMTQgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtXVEZdIEFk
ZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBoZWxwZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggNTNiMTk3YmVhOTlmZjFkMDRjZjcxYjgzMDA3OTMxODMxZDdhNmQ0MS4uMGMzN2E0ZmRh
NTAyYWFhYjEzMTg0NTI4MDI0NzJlZTYwZTEzZWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTAyLTE1ICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQx
NTU5IGFuZCByMjQxNTY2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0NzEwCisKKyAgICAgICAgQ2F1c2VzIGxheW91dCB0ZXN0IGNyYXNoZXMgdW5k
ZXIgR3VhcmRNYWxsb2MgKFJlcXVlc3RlZCBieQorICAgICAgICByeWFuaGFkZGFkIG9uICN3ZWJr
aXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltXVEZdIEFk
ZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBoZWxwZXJzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDA1CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yNDE1NTkKKworICAgICAgICAiVW5yZXZpZXdlZCBidWlsZCBmaXgg
Zm9yIFdpbkNhaXJvIERlYnVnIGFmdGVyIHIyNDE1NTkuIgorICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjQxNTY2CisKIDIwMTktMDItMTUgIFRydWl0dCBTYXZlbGwg
IDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQxNTY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAKaW5kZXggNjI5ZDJl
OWQzZjEwMTJhN2ZhNDFlODZmZmU0ZjcxNTdkMzM1YWI5OC4uYzA3NTY5OGJkOWJmNmU3MDQ4YzAy
NDFjYmZmODMyNzk1NjI3MmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIu
Y3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KQEAgLTUyLDcgKzUxLDcgQEAgUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJ
bnNwZWN0b3I6OnNpbmdsZXRvbigpCiAKIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
KCkKIHsKLSAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIi
KSkKKyAgICBpZiAoZ19nZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VSVkVSIikpCiAgICAgICAg
IHN0YXJ0KCk7CiB9CiAKQEAgLTY2LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0
YXJ0KCkKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIG1fY2FuY2VsbGFibGUgPSBhZG9wdEdS
ZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CiAKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGluc3BlY3Rv
ckFkZHJlc3MoZ19zdHJkdXAoRW52aXJvbm1lbnQ6OmdldFJhdygiV0VCS0lUX0lOU1BFQ1RPUl9T
RVJWRVIiKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5zcGVjdG9yQWRkcmVzcyhnX3N0cmR1
cChnX2dldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkpOwogICAgIGNoYXIqIHBvcnRQ
dHIgPSBnX3N0cnJzdHIoaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSwgIjoiKTsKICAgICBBU1NFUlQo
cG9ydFB0cik7CiAgICAgKnBvcnRQdHIgPSAnXDAnOwpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c3RhcnQoKQogICAgICAgICAgICAgaWYgKEdSZWZQdHI8R0RCdXNDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9uX25ld19mb3Jf
YWRkcmVzc19maW5pc2gocmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKSkKICAgICAgICAgICAgICAg
ICBpbnNwZWN0b3ItPnNldHVwQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1Is
IEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcoIlJlbW90
ZUluc3BlY3RvciBmYWlsZWQgdG8gY29ubmVjdCB0byBpbnNwZWN0b3Igc2VydmVyIGF0OiAlczog
JXMiLCBFbnZpcm9ubWVudDo6Z2V0UmF3KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpLCBlcnJv
ci0+bWVzc2FnZSk7CisgICAgICAgICAgICAgICAgZ193YXJuaW5nKCJSZW1vdGVJbnNwZWN0b3Ig
ZmFpbGVkIHRvIGNvbm5lY3QgdG8gaW5zcGVjdG9yIHNlcnZlciBhdDogJXM6ICVzIiwgZ19nZXRl
bnYoIldFQktJVF9JTlNQRUNUT1JfU0VSVkVSIiksIGVycm9yLT5tZXNzYWdlKTsKICAgICB9LCB0
aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyZGE4ZjkxYmVjYWI3MjM4MTU4NmE0
MDc2Yjc3YjdjODNlNGM1YWZiLi5iZTAxODA2MDVlNmU4YWJmNDhhYjcxMWI4NmM5ZDRmYzk4YzA1
ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODMsNyArODMsNiBAQAogI2luY2x1ZGUgPHR5
cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvQ29tbWFQcmlu
dGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KQEAgLTIyNTEsMTEgKzIyNTAsOSBAQCBzdGF0aWMgZG91
YmxlIHNfdGltZW91dE11bHRpcGxpZXIgPSAxLjA7CiAKIHN0YXRpYyB2b2lkIHN0YXJ0VGltZW91
dFRocmVhZElmTmVlZGVkKCkKIHsKLSAgICBpZiAoYXV0byB0aW1lb3V0U3RyaW5nID0gRW52aXJv
bm1lbnQ6OmdldCgiSlNDVEVTVF90aW1lb3V0IikpIHsKLSAgICAgICAgYm9vbCBvazsKLSAgICAg
ICAgc19kZXNpcmVkVGltZW91dCA9IHRpbWVvdXRTdHJpbmctPnRvRG91YmxlKCZvayk7Ci0gICAg
ICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIGRhdGFMb2coIldBUk5JTkc6IHRpbWVvdXQgc3Ry
aW5nIGlzIG1hbGZvcm1lZCwgZ290ICIsICp0aW1lb3V0U3RyaW5nLAorICAgIGlmIChjaGFyKiB0
aW1lb3V0U3RyaW5nID0gZ2V0ZW52KCJKU0NURVNUX3RpbWVvdXQiKSkgeworICAgICAgICBpZiAo
c3NjYW5mKHRpbWVvdXRTdHJpbmcsICIlbGYiLCAmc19kZXNpcmVkVGltZW91dCkgIT0gMSkgewor
ICAgICAgICAgICAgZGF0YUxvZygiV0FSTklORzogdGltZW91dCBzdHJpbmcgaXMgbWFsZm9ybWVk
LCBnb3QgIiwgdGltZW91dFN0cmluZywKICAgICAgICAgICAgICAgICAiIGJ1dCBleHBlY3RlZCBh
IG51bWJlci4gTm90IHVzaW5nIGEgdGltZW91dC5cbiIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgVGhyZWFkOjpjcmVhdGUoImpzYyBUaW1lb3V0IFRocmVhZCIsIFtdICgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggODRlOGJiMThhNGQ5
ZWQwNzRjMWY3OWVlNmZiODBlNDY1NjAwMTI4ZC4uODRkNzMyNmEyNGZiZTVhNWRlMDNjNWMzOGRi
ZjJiZGVkZjIzNjBjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi9Db21waWxlci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8
d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KICNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KQEAgLTE3Nyw3ICsxNzYsNyBAQCBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3Rp
YyhUJiB2YXJpYWJsZSwgT3B0aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgYm9v
bCBhdmFpbGFibGUgPSAoYXZhaWxhYmlsaXR5ID09IE9wdGlvbnM6OkF2YWlsYWJpbGl0eTo6Tm9y
bWFsKQogICAgICAgICB8fCBPcHRpb25zOjppc0F2YWlsYWJsZShpZCwgYXZhaWxhYmlsaXR5KTsK
IAotICAgIGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gRW52aXJvbm1lbnQ6OmdldFJhdyhuYW1l
KTsKKyAgICBjb25zdCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1lKTsKICAgICBpZiAo
IXN0cmluZ1ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xOTAsMTEgKzE4
OSwxMiBAQCBib29sIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgT3B0
aW9uczo6SUQgaWQsIGNvbnN0IGNoYXIqIG5hbWUsCiAKIGJvb2wgT3B0aW9uczo6b3ZlcnJpZGVB
bGlhc2VkT3B0aW9uV2l0aEhldXJpc3RpYyhjb25zdCBjaGFyKiBuYW1lKQogewotICAgIGNvbnN0
IGNoYXIqIHN0cmluZ1ZhbHVlID0gRW52aXJvbm1lbnQ6OmdldFJhdyhuYW1lKTsKKyAgICBjb25z
dCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1lKTsKICAgICBpZiAoIXN0cmluZ1ZhbHVl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGFsaWFzZWRPcHRpb24gPSBtYWtl
U3RyaW5nKCZuYW1lWzRdLCAiPSIsIHN0cmluZ1ZhbHVlKTsKKyAgICBTdHJpbmcgYWxpYXNlZE9w
dGlvbjsKKyAgICBhbGlhc2VkT3B0aW9uID0gU3RyaW5nKCZuYW1lWzRdKSArICI9IiArIHN0cmlu
Z1ZhbHVlOwogICAgIGlmIChPcHRpb25zOjpzZXRPcHRpb24oYWxpYXNlZE9wdGlvbi51dGY4KCku
ZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5Nyw5ICs1OTcsOSBAQCB2b2lk
IE9wdGlvbnM6OmluaXRpYWxpemUoKQogCiAjaWYgQVNBTl9FTkFCTEVEICYmIE9TKExJTlVYKSAm
JiBFTkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFz
YW5PcHRpb25zID0gRW52aXJvbm1lbnQ6OmdldCgiQVNBTl9PUFRJT05TIik7CisgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYXNhbk9wdGlvbnMgPSBnZXRlbnYoIkFTQU5fT1BUSU9OUyIpOwog
ICAgICAgICAgICAgICAgIGJvb2wgb2tUb1VzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSA9IGFzYW5P
cHRpb25zCi0gICAgICAgICAgICAgICAgICAgICYmIGFzYW5PcHRpb25zLT5jb250YWlucygiYWxs
b3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IGFzYW5PcHRpb25zLT5jb250YWlucygiaGFuZGxl
X3NlZ3Y9MCIpOworICAgICAgICAgICAgICAgICAgICAmJiAoc3Ryc3RyKGFzYW5PcHRpb25zLCAi
YWxsb3dfdXNlcl9zZWd2X2hhbmRsZXI9MSIpIHx8IHN0cnN0cihhc2FuT3B0aW9ucywgImhhbmRs
ZV9zZWd2PTAiKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFva1RvVXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiV0FSTklORzogQVNBTiBp
bnRlcmZlcmVzIHdpdGggSlNDIHNpZ25hbCBoYW5kbGVyczsgdXNlV2ViQXNzZW1ibHlGYXN0TWVt
b3J5IHdpbGwgYmUgZGlzYWJsZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNzkwMjJkNjIxODExNjgyNzNlMGU2ODhiOWIxOWE2NDViNGJhZWM2OS4u
ODdlYTI0NGJhNjkyNjhkZmM2OThjY2UyMzgwYjc4OGVhN2FhYzM3NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTQ5LDcgKzE0OSw2IEBACiAjaW5jbHVkZSAiV2Vha0dD
TWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVu
dC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVhZFdyaXRl
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgpAQCAtMTk4LDcgKzE5Nyw4IEBA
IHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRh
YmxlQWxsb2NhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJu
ICFFbnZpcm9ubWVudDo6aGFzVmFsdWUoIkphdmFTY3JpcHRDb3JlVXNlSklUIiwgIjAiKTsKKyAg
ICBjaGFyKiBjYW5Vc2VKSVRTdHJpbmcgPSBnZXRlbnYoIkphdmFTY3JpcHRDb3JlVXNlSklUIik7
CisgICAgcmV0dXJuICFjYW5Vc2VKSVRTdHJpbmcgfHwgYXRvaShjYW5Vc2VKSVRTdHJpbmcpOwog
fQogI2VuZGlmIC8vIEVOQUJMRSghQVNTRU1CTEVSKQogCkBAIC00MjgsNyArNDI4LDggQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICAgICBtX3BlckJ5dGVj
b2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMp
OwogCiAgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIHBhdGhPdXQ7Ci0gICAgICAgIGlmIChjb25z
dCBjaGFyKiBwcm9maWxlclBhdGggPSBFbnZpcm9ubWVudDo6Z2V0UmF3KCJKU0NfUFJPRklMRVJf
UEFUSCIpKQorICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRlbnYoIkpTQ19Q
Uk9GSUxFUl9QQVRIIik7CisgICAgICAgIGlmIChwcm9maWxlclBhdGgpCiAgICAgICAgICAgICBw
YXRoT3V0LnByaW50KHByb2ZpbGVyUGF0aCwgIi8iKTsKICAgICAgICAgcGF0aE91dC5wcmludCgi
SlNDUHJvZmlsZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksICItIiwgbV9wZXJCeXRlY29kZVBy
b2ZpbGVyLT5kYXRhYmFzZUlEKCksICIuanNvbiIpOwogICAgICAgICBtX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPnJlZ2lzdGVyVG9TYXZlQXRFeGl0KHBhdGhPdXQudG9DU3RyaW5nKCkuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAppbmRleCBm
OGVhNzk5Y2E2ODMzYjVjYzFkN2VjODg1Y2MyZjgxNThhNGYyYzczLi45NGViZThlMmNhN2UxODlm
OGY2ZDhkNWY2NGQ5MGY5ZDA2MWM5N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0NvZGVQcm9maWxpbmcuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2Rl
UHJvZmlsZS5oIgogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0Vu
dmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAogI2lmIEhBVkUo
U0lHTkFMX0gpCkBAIC04NiwxOSArODUsMjEgQEAgdm9pZCBDb2RlUHJvZmlsaW5nOjpzYW1wbGUo
dm9pZCogcGMsIHZvaWQqKiBmcmFtZVBvaW50ZXIpCiB2b2lkIENvZGVQcm9maWxpbmc6Om5vdGlm
eUFsbG9jYXRvcihXVEY6Ok1ldGFBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICAvLyBDaGVj
ayBmb3IgSlNDX0NPREVfUFJPRklMSU5HLgotICAgIGF1dG8gY29kZVByb2ZpbGluZ01vZGUgPSBF
bnZpcm9ubWVudDo6Z2V0VUludCgiSlNDX0NPREVfUFJPRklMSU5HIik7CisgICAgY29uc3QgY2hh
ciogY29kZVByb2ZpbGluZ01vZGUgPSBnZXRlbnYoIkpTQ19DT0RFX1BST0ZJTElORyIpOwogICAg
IGlmICghY29kZVByb2ZpbGluZ01vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENoZWNr
IGZvciBhIHZhbGlkIG1vZGUsIGN1cnJlbnRseSAxLCAyLCBvciAzLgorICAgIC8vIENoZWNrIGZv
ciBhIHZhbGlkIG1vZGUsIGN1cnJlbnRseSAiMSIsICIyIiwgb3IgIjMiLgorICAgIGlmICghY29k
ZVByb2ZpbGluZ01vZGVbMF0gfHwgY29kZVByb2ZpbGluZ01vZGVbMV0pCisgICAgICAgIHJldHVy
bjsKICAgICBzd2l0Y2ggKCpjb2RlUHJvZmlsaW5nTW9kZSkgewotICAgIGNhc2UgMToKKyAgICBj
YXNlICcxJzoKICAgICAgICAgc19tb2RlID0gRW5hYmxlZDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSAyOgorICAgIGNhc2UgJzInOgogICAgICAgICBzX21vZGUgPSBWZXJib3NlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIDM6CisgICAgY2FzZSAnMyc6CiAgICAgICAgIHNfbW9kZSA9IFZl
cnlWZXJib3NlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2U1YWUyMjNiZDc3OWI0ZDExYTA4NWU0YmUx
MGIzYmMyYWEzYzljOC4uZTU0NjQxZDg5MmNiYmJhOGVjOGQ1ODBjYzZjYjgwN2QxMWE0YjU5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw3ICs4OSw2
IEBACiAJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2
OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87IH07CiAJCTkzRjE5OTNFMTlENzk1OEQw
MEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNw
cCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcw
RjA0MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07Ci0JCUEz
MDdGRDI5MjIwQ0I0MzUwMDIxQjYyQyAvKiBFbnZpcm9ubWVudFBPU0lYLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMDdGRDI4MjIwQ0I0MzUwMDIx
QjYyQyAvKiBFbnZpcm9ubWVudFBPU0lYLmNwcCAqLzsgfTsKIAkJQTMyRDhGQTUyMUZGRkFCNDAw
NzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQ
T1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFE
OTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUQy
MUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmls
ZVN5c3RlbUNGLmNwcCAqLzsgfTsKQEAgLTQzOCw4ICs0MzcsNiBAQAogCQk5QkM3MEYwNDE3NkMz
NzlEMDAxMDFERUMgLyogQXRvbWljU3RyaW5nVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXRvbWljU3RyaW5nVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QkQ4RjQwQTE3NkMyQUQ4MDAwMkQ4NjUgLyogQXRvbWljU3RyaW5nVGFi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nVGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTMwN0ZEMjgy
MjBDQjQzNTAwMjFCNjJDIC8qIEVudmlyb25tZW50UE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRW52aXJvbm1lbnRQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUEzMDdGRDJBMjIwQ0I0NDkwMDIxQjYyQyAvKiBFbnZpcm9ubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnZpcm9ubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExp
bmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8q
IFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5r
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMkQ4RkE0MjFGRkZBQjQwMDc4
MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaHJlYWRpbmdQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MDMsNyArODAwLDYgQEAKIAkJQTMzMUQ5NjMyMUYyNEEyRTAwOUYwMkFBIC8qIHBvc2l4ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBMzA3RkQyODIy
MENCNDM1MDAyMUI2MkMgLyogRW52aXJvbm1lbnRQT1NJWC5jcHAgKi8sCiAJCQkJQTMzMUQ5NjYy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8sCiAJCQkJQTNFRTVDMzky
MUZGQUM1RTAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3BwICovLAogCQkJCUEzMkQ4RkE0
MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi8sCkBAIC05MzMsNyArOTI5
LDYgQEAKIAkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICov
LAogCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywK
IAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAotCQkJCUEz
MDdGRDJBMjIwQ0I0NDkwMDIxQjYyQyAvKiBFbnZpcm9ubWVudC5oICovLAogCQkJCUFEN0M0MzRB
MUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAogCQkJCUE4QTQ3MjlGMTUxQTgyNUEw
MDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKIAkJCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1
RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCkBAIC0xMDMxLDYgKzEwMjYsOCBAQAogCQkJCUE4
QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8sCiAJCQkJQThBNDcy
Q0YxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCAqLywKIAkJCQlGRTc0
OTdFRDIwOTE2MzA2MDAwMzU2NUIgLyogTWV0YUFsbG9jYXRvclB0ci5oICovLAorCQkJCTVGQUQz
QUUxMjFCOTYzNjYwMEJFRTE3OCAvKiBVUkxIZWxwZXJzLmNwcCAqLywKKwkJCQk1RkFEM0FFMDIx
Qjk2MzY2MDBCRUUxNzggLyogVVJMSGVscGVycy5oICovLAogCQkJCTBGNjZCMjgyMURDOTdCQUIw
MDRBMUQzRiAvKiBNb25vdG9uaWNUaW1lLmNwcCAqLywKIAkJCQkwRjY2QjI4MzFEQzk3QkFCMDA0
QTFEM0YgLyogTW9ub3RvbmljVGltZS5oICovLAogCQkJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhG
RCAvKiBOYWtlZFB0ci5oICovLApAQCAtMTE3OCw4ICsxMTc1LDYgQEAKIAkJCQk1Q0MwRUU3MTIx
NjI5RjE4MDBBMUE4NDIgLyogVVJMLmggKi8sCiAJCQkJNUMxRjA1OTcyMTY0Mzk5NDAwMzkzMDJD
IC8qIFVSTEhhc2guaCAqLywKIAkJCQk1Q0MwRUU3NzIxNjJBMDEwMDBBMUE4NDIgLyogVVJMSGFz
aC5oICovLAotCQkJCTVGQUQzQUUxMjFCOTYzNjYwMEJFRTE3OCAvKiBVUkxIZWxwZXJzLmNwcCAq
LywKLQkJCQk1RkFEM0FFMDIxQjk2MzY2MDBCRUUxNzggLyogVVJMSGVscGVycy5oICovLAogCQkJ
CTVDQzBFRTczMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwICovLAogCQkJCTVDQzBF
RTcyMjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIy
QjU5MDBEQURFMzYgLyogVVVJRC5jcHAgKi8sCkBAIC0xNTI1LDcgKzE1MjAsNiBAQAogCQkJCUE4
QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0M0RERTk2MjBDOEJDMzcwMDdGNzZGQSAvKiBFbnRpdGxlbWVudHMubW0gaW4g
U291cmNlcyAqLywKLQkJCQlBMzA3RkQyOTIyMENCNDM1MDAyMUI2MkMgLyogRW52aXJvbm1lbnRQ
T1NJWC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MERFMzVGNTIxNUJCMDE1MDBCOTc5QzcgLyog
RXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0IzMTUxQTgy
NUIwMDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkwRjdDNUZCNjFE
ODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1
NjMsNiArMTU1Nyw3IEBACiAJCQkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0
cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51
bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM0OEJBMEUyMUZCQzBENTAwRkQz
MDU0IC8qIE9iamVjdElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUZBRDNBRTIy
MUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNF
RTVDM0EyMUZGQUM1RjAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdlQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNjE5LDcgKzE2MTQsNiBAQAogCQkJCTVDQzBFRTc2MjE2
MjlGMTkwMEExQTg0MiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxRjA1OTUyMTY0
MzdCMzAwMzkzMDJDIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQzBFRTg5MjE2
MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVGQUQzQUUy
MjFCOTYzNjYwMEJFRTE3OCAvKiBVUkxIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QzBFRTc1MjE2MjlGMTkwMEExQTg0MiAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUMxODFDOEYxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUMxODFDOTExRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDgxMDRkYTNiOGQ5
Y2E0YjBjMTE4Zjg5OWVmOTllYmRkZjI4NjUyYTAuLjFmMTJiNzlmODZhNWE2ZjU5YzUyMjk3M2U5
NTAwMTc4ZDNhYTE3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC01NSw3ICs1NSw2IEBAIHNl
dChXVEZfUFVCTElDX0hFQURFUlMKICAgICBEdW1iUHRyVHJhaXRzLmgKICAgICBEdW1iVmFsdWVU
cmFpdHMuaAogICAgIEVudW1UcmFpdHMuaAotICAgIEVudmlyb25tZW50LmgKICAgICBFeHBlY3Rl
ZC5oCiAgICAgRXhwb3J0TWFjcm9zLmgKICAgICBGYXN0Qml0VmVjdG9yLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwIGIvU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAK
aW5kZXggM2JjZGQxYTE1M2MxMzUyOWY5NzExMzM4MmY2YjVkMzQzNjM5MDZmMy4uNTdmOWViMjBk
NDI4ODUyZjdkMDA2NjFkZDRjNTBiOWZlZjMyNmFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRGF0YUxvZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKQEAgLTI2LDE1
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAKLSNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNpbmNsdWRlIDx0aHJlYWQ+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZWRQcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dGhyZWFkPgogCiAjaWYgT1Mo
VU5JWCkgfHwgT1MoREFSV0lOKQogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtOTQsNyArOTMsNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZU9uY2UoKQogI2VsaWYgZGVmaW5lZChEQVRB
X0xPR19GSUxFTkFNRSkKICAgICBmaWxlbmFtZSA9IERBVEFfTE9HX0ZJTEVOQU1FOwogI2Vsc2UK
LSAgICBmaWxlbmFtZSA9IEVudmlyb25tZW50OjpnZXRSYXcoIldURl9EQVRBX0xPR19GSUxFTkFN
RSIpOworICAgIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9MT0dfRklMRU5BTUUiKTsKICNl
bmRpZgogICAgIGNoYXIgYWN0dWFsRmlsZW5hbWVbbWF4UGF0aExlbmd0aCArIDFdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnZpcm9ubWVudC5oIGIvU291cmNlL1dURi93dGYvRW52
aXJvbm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI5ZTViZTZiNGJjNGNh
N2ZjMjI4NzBiMDM2ODIxMjYxYzU1NTM2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbnZpcm9ubWVudC5oCisrKyAvZGV2L251
bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
VEYgewotbmFtZXNwYWNlIEVudmlyb25tZW50SW1wbCB7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxTdHJpbmc+IGdldChjb25zdCBTdHJpbmcmKTsKLQotaW5saW5lIGNvbnN0IGNoYXIq
IGdldFJhdyhjb25zdCBTdHJpbmcmIHZhcmlhYmxlKQotewotICAgIGF1dG8gc3RyaW5nID0gZ2V0
KHZhcmlhYmxlKTsKLSAgICByZXR1cm4gc3RyaW5nID8gc3RyaW5nLT51dGY4KCkuZGF0YSgpIDog
bnVsbHB0cjsKLX0KLQotaW5saW5lIE9wdGlvbmFsPGludD4gZ2V0SW50KGNvbnN0IFN0cmluZyYg
dmFyaWFibGUpCi17Ci0gICAgYXV0byBzdHJpbmcgPSBnZXQodmFyaWFibGUpOwotICAgIGlmICgh
c3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYm9vbCBvazsKLSAg
ICBhdXRvIHZhbHVlID0gc3RyaW5nLT50b0ludFN0cmljdCgmb2spOwotICAgIHJldHVybiBvayA/
IG1ha2VPcHRpb25hbCh2YWx1ZSkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0KLWlubGluZSBPcHRpb25h
bDx1bnNpZ25lZD4gZ2V0VUludChjb25zdCBTdHJpbmcmIHZhcmlhYmxlKQotewotICAgIGF1dG8g
c3RyaW5nID0gZ2V0KHZhcmlhYmxlKTsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIGJvb2wgb2s7Ci0gICAgYXV0byB2YWx1ZSA9IHN0cmluZy0+
dG9VSW50U3RyaWN0KCZvayk7Ci0gICAgcmV0dXJuIG9rID8gbWFrZU9wdGlvbmFsKHZhbHVlKSA6
IFdURjo6bnVsbG9wdDsKLX0KLQotaW5saW5lIGJvb2wgaGFzVmFsdWUoY29uc3QgU3RyaW5nJiB2
YXJpYWJsZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZCkKLXsKLSAgICBhdXRvIGFjdHVhbCA9IGdl
dCh2YXJpYWJsZSk7Ci0gICAgcmV0dXJuIGFjdHVhbCAmJiAqYWN0dWFsID09IGV4cGVjdGVkOwot
fQotCi1pbmxpbmUgYm9vbCBoYXNWYWx1ZU90aGVyVGhhbihjb25zdCBTdHJpbmcmIHZhcmlhYmxl
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkKQotewotICAgIGF1dG8gYWN0dWFsID0gZ2V0KHZhcmlh
YmxlKTsKLSAgICByZXR1cm4gYWN0dWFsICYmICphY3R1YWwgIT0gZXhwZWN0ZWQ7Ci19Ci0KLVdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldChjb25zdCBTdHJpbmcmIHZhcmlhYmxlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldElmTm90RGVmaW5lZChj
b25zdCBTdHJpbmcmIHZhcmlhYmxlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLQotV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYpOwotCi19IC8vIG5hbWVzcGFjZSBF
bnZpcm9ubWVudEltcGwKLX0gLy8gbmFtZXNwYWNlIFdURgotCi1uYW1lc3BhY2UgRW52aXJvbm1l
bnQgPSBXVEY6OkVudmlyb25tZW50SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL051
bWJlck9mQ29yZXMuY3BwIGIvU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5jcHAKaW5kZXgg
NDhhOWNmMjJlNDI4ZTBmZTk1ZTFhMTNhYWY4YTE0NGQ0MmMwYTMyNC4uNjJmYTY1YTA0MjE0ZWI5
MTczNjVlODY3NDdmOTYzYzg0MDQ2YzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTnVt
YmVyT2ZDb3Jlcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTnVtYmVyT2ZDb3Jlcy5jcHAKQEAg
LTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgogCiAjaW5jbHVk
ZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogCiAjaWYgT1MoREFSV0lO
KQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtNTAsMTYgKzQ5LDE0IEBAIGludCBudW1iZXJP
ZlByb2Nlc3NvckNvcmVzKCkKIAogICAgIGlmIChzX251bWJlck9mQ29yZXMgPiAwKQogICAgICAg
ICByZXR1cm4gc19udW1iZXJPZkNvcmVzOwotCi0gICAgaWYgKGF1dG8gY29yZXNFbnYgPSBFbnZp
cm9ubWVudDo6Z2V0KCJXVEZfbnVtYmVyT2ZQcm9jZXNzb3JDb3JlcyIpKSB7Ci0gICAgICAgIGJv
b2wgb2s7Ci0gICAgICAgIGF1dG8gbnVtYmVyT2ZDb3JlcyA9IGNvcmVzRW52LT50b1VJbnRTdHJp
Y3QoJm9rKTsKLSAgICAgICAgaWYgKG9rKSB7CisgICAgCisgICAgaWYgKGNvbnN0IGNoYXIqIGNv
cmVzRW52ID0gZ2V0ZW52KCJXVEZfbnVtYmVyT2ZQcm9jZXNzb3JDb3JlcyIpKSB7CisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mQ29yZXM7CisgICAgICAgIGlmIChzc2NhbmYoY29yZXNFbnYsICIl
dSIsICZudW1iZXJPZkNvcmVzKSA9PSAxKSB7CiAgICAgICAgICAgICBzX251bWJlck9mQ29yZXMg
PSBudW1iZXJPZkNvcmVzOwogICAgICAgICAgICAgcmV0dXJuIHNfbnVtYmVyT2ZDb3JlczsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogZmFpbGVkIHRvIHBh
cnNlIFdURl9udW1iZXJPZlByb2Nlc3NvckNvcmVzPSVzXG4iLCBjb3Jlc0Vudi0+dXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJXQVJO
SU5HOiBmYWlsZWQgdG8gcGFyc2UgV1RGX251bWJlck9mUHJvY2Vzc29yQ29yZXM9JXNcbiIsIGNv
cmVzRW52KTsKICAgICB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IGI1NWQwZWM1NzAzYzAxMjIxNDdhNWNiYjI1OGVhOGQ3MTA3ZDg5NjQuLjI5N2QwZmEy
Yzc4ZjM5NjFiMGY0YzNlMTcxOTNmYmE2ZTVlNGEzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC0yOCw3ICsyOCw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2xpYi9S
dW5Mb29wR0xpYi5jcHAKICAgICBnbGliL1VSTEdMaWIuY3BwCiAKLSAgICBwb3NpeC9FbnZpcm9u
bWVudFBPU0lYLmNwcAogICAgIHBvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCiAgICAgcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SlNDT25seS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRl
eCAxOTMyYTdmZjZiYjgyODBjYjRkNThkZWM0NzVhYjllOWJlZTJmMmE5Li4zNTQyZmVmNmY5MGVl
MGE2NTg5MWIzYTM3NjA2NTQ1YzlhYzc3YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5
LmNtYWtlCkBAIC04LDcgKzgsNiBAQCBpZiAoV0lOMzIpCiAKICAgICAgICAgd2luL0NQVVRpbWVX
aW4uY3BwCiAgICAgICAgIHdpbi9EYmdIZWxwZXJXaW4uY3BwCi0gICAgICAgIHdpbi9FbnZpcm9u
bWVudFdpbi5jcHAKICAgICAgICAgd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgICAgIHdpbi9M
YW5ndWFnZVdpbi5jcHAKICAgICAgICAgd2luL01haW5UaHJlYWRXaW4uY3BwCkBAIC0zNCw3ICsz
Myw2IEBAIGVsc2UgKCkKIAogICAgICAgICBnZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcAog
Ci0gICAgICAgIHBvc2l4L0Vudmlyb25tZW50UE9TSVguY3BwCiAgICAgICAgIHBvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKICAgICAgICAgcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKICAgICAg
ICAgcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IDMzOWYyYmI0YjdjYmRhNDUzODI2OWNlNGMyZjk1NzRhODFiYjFmMGIuLjlhMWY1MTBiNDA5ZjEw
ZTAyMzJmMWYxZTBlMmUyZTU5ZGYxNGNiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC02NCw3ICs2NCw2IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgbWFjL0ZpbGVTeXN0
ZW1NYWMubW0KICAgICBtYWMvU2NoZWR1bGVQYWlyTWFjLm1tCiAKLSAgICBwb3NpeC9FbnZpcm9u
bWVudFBPU0lYLmNwcAogICAgIHBvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwb3NpeC9P
U0FsbG9jYXRvclBPU0lYLmNwcAogICAgIHBvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggZmM0YTI5ZmYzNGE3NTc0YmU2
OGE1ZThjZWU3YzNiMmI5MGU3MzgxYy4uNGI2OTE5MDc2ZjM5MTA1MWI4NWUzOWIwNmYyMTVkYzlh
YjQ1ODY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC01
LDcgKzUsNiBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIGdlbmVyaWMvUnVuTG9vcEdl
bmVyaWMuY3BwCiAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogCi0gICAgcG9zaXgv
RW52aXJvbm1lbnRQT1NJWC5jcHAKICAgICBwb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAgICAg
cG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKICAgICBwb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggZWI1ZjczOWIyYzNiZDg0ZmM4NWI1ZjFjMTY1
ZDI0NDYxYTdhOTZmZC4uMzhlNjMyYzNlZjhiMzEzN2FhOTcxMTk5MGU3MTQ1NWZiYWEwMzJjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTI2LDcgKzI2LDYgQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBsaW51eC9NZW1vcnlGb290cHJpbnRMaW51eC5jcHAKICAgICBsaW51
eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAotICAgIHBvc2l4L0Vudmlyb25tZW50
UE9TSVguY3BwCiAgICAgcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKICAgICBwb3NpeC9UaHJl
YWRpbmdQT1NJWC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBmNjVlMTIxNTVm
MGRlYmE5NTZkNDA4YmY0ZWY5MWFiMWQyNzU2NTQxLi4yYzM0MDIyNTQ5ZDg4NDBlYjkyMzAyODRh
MWRkZDlkMjg1MjM5YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTIsNyArMTIs
NiBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogCiAgICAgd2luL0NQVVRpbWVXaW4uY3BwCiAg
ICAgd2luL0RiZ0hlbHBlcldpbi5jcHAKLSAgICB3aW4vRW52aXJvbm1lbnRXaW4uY3BwCiAgICAg
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCiAgICAgd2luL0xhbmd1YWdlV2luLmNwcAogICAgIHdpbi9N
YWluVGhyZWFkV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggYTU0NTc1YzRlNzY2ZmM3NzVk
YzhjNzc4MWE5ZDBlYTNkNDczZGJlYy4uMzFlNGRkYzA0NWFkM2M3NmFiN2MyY2Y4ZmE4Zjg3ZDA2
M2NlYjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yODUsMTggKzI4NSwxMCBAQCB2b2lkIFRo
cmVhZDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogVGhyZWFkU3BlY2lmaWNLZXkgVGhy
ZWFkOjpzX2tleSA9IEludmFsaWRUaHJlYWRTcGVjaWZpY0tleTsKICNlbmRpZgogCi1zdGF0aWMg
Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotCi1ib29sIHRocmVhZGluZ0lzSW5pdGlhbGl6ZWQo
KQotewotICAgIHJldHVybiBpbml0aWFsaXplZDsKLX0KLQogdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbXSB7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAg
ICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwogI2lmICFIQVZFKEZBU1RfVExT
KQogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVUTFNLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXgg
ZWVlNTNhZTZmM2Y2MTNjZTU3Y2MxNjZmZmI3ZjlhNGEzYzRmNDY4ZC4uMmQ5MjQyY2NhYjRiYmQ1
ZmQwOThmOTAwNTc0YjdlNTIyMGY3MmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTYxLDggKzYxLDYg
QEAgZW51bSBjbGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdDsKIGNsYXNzIFRocmVhZEdyb3VwOwog
Y2xhc3MgUHJpbnRTdHJlYW07CiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHRocmVhZGluZ0lz
SW5pdGlhbGl6ZWQoKTsKLQogLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYW55
IHRocmVhZHMuCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Vudmlyb25tZW50UE9TSVguY3Bw
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRW52aXJvbm1lbnRQT1NJWC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTcyNzUwZjFhYzZmNTI3ZTNmMjczZjc2MGFhNjEyYmVhNjhi
MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dURi93dGYvcG9zaXgvRW52aXJvbm1lbnRQT1NJWC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9u
bWVudC5oPgotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3Bh
Y2UgRW52aXJvbm1lbnRJbXBsIHsKLQotT3B0aW9uYWw8U3RyaW5nPiBnZXQoY29uc3QgU3RyaW5n
JiB2YXJpYWJsZSkKLXsKLSAgICBhdXRvIHZhbHVlID0gZ2V0ZW52KHZhcmlhYmxlLnV0ZjgoKS5k
YXRhKCkpOwotICAgIHJldHVybiB2YWx1ZSA/IG1ha2VPcHRpb25hbChTdHJpbmc6OmZyb21VVEY4
KHZhbHVlKSkgOiBXVEY6Om51bGxvcHQ7Ci19Ci0KLXZvaWQgc2V0KGNvbnN0IFN0cmluZyYgdmFy
aWFibGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFXVEY6OnRocmVhZGlu
Z0lzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgc2V0ZW52KHZhcmlhYmxlLnV0ZjgoKS5kYXRhKCksIHZh
bHVlLnV0ZjgoKS5kYXRhKCksIDEpOwotfQotCi12b2lkIHNldElmTm90RGVmaW5lZChjb25zdCBT
dHJpbmcmIHZhcmlhYmxlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIEFTU0VSVCghV1RG
Ojp0aHJlYWRpbmdJc0luaXRpYWxpemVkKCkpOwotICAgIHNldGVudih2YXJpYWJsZS51dGY4KCku
ZGF0YSgpLCB2YWx1ZS51dGY4KCkuZGF0YSgpLCAwKTsKLX0KLQotdm9pZCByZW1vdmUoY29uc3Qg
U3RyaW5nJiB2YXJpYWJsZSkKLXsKLSAgICBBU1NFUlQoIVdURjo6dGhyZWFkaW5nSXNJbml0aWFs
aXplZCgpKTsKLSAgICB1bnNldGVudih2YXJpYWJsZS51dGY4KCkuZGF0YSgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgRW52aXJvbm1lbnRJbXBsCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGRjZTliMzdlOWIwZjViZjBmNTE3
NTEwNzRiY2NkNThlNjEyZDFjZTEuLjcwZDJmOThlNGQ3MmMyY2QxNTk5NGU5ZmE3ZjdhOWJjNGJm
MGFmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAs
NyArNDAsNiBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC00MjUsOCArNDI0
LDggQEAgYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRf
dCYgZnJlZVNwYWNlKQogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRI
X01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKIAotICAg
IGNvbnN0IGNoYXIqIHRtcERpciA9IEVudmlyb25tZW50OjpnZXRSYXcoIlRNUERJUiIpOwogICAg
IGlmICghdG1wRGlyKQogICAgICAgICB0bXBEaXIgPSAiL3RtcCI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9FbnZpcm9ubWVudFdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RW52aXJvbm1lbnRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzZiOTY2
NjA2NDUzZWQ0NmNjYzI1ZTAyNDk3YWExMjRmMjBiMmUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9FbnZpcm9ubWVudFdp
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgotCi0jaW5jbHVkZSA8d2luZG93cy5o
PgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2Ug
RW52aXJvbm1lbnRJbXBsIHsKLQotT3B0aW9uYWw8U3RyaW5nPiBnZXQoY29uc3QgU3RyaW5nJiB2
YXJpYWJsZSkKLXsKLSAgICBhdXRvIHJhd1ZhcmlhYmxlID0gdmFyaWFibGUuY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCk7Ci0gICAgYXV0byBsZW5ndGggPSA6OkdldEVudmly
b25tZW50VmFyaWFibGVXKHJhd1ZhcmlhYmxlLCBudWxscHRyLCAwKTsKLSAgICBpZiAoIWxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFZlY3RvcjxVQ2hhcj4gYnVm
ZmVyKGxlbmd0aCk7Ci0gICAgcmV0dXJuIDo6R2V0RW52aXJvbm1lbnRWYXJpYWJsZVcocmF3VmFy
aWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkgPyBtYWtlT3B0aW9uYWwoU3RyaW5nKGJ1ZmZl
ci5kYXRhKCkpKSA6IFdURjo6bnVsbG9wdDsKLX0KLQotdm9pZCBzZXQoY29uc3QgU3RyaW5nJiB2
YXJpYWJsZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoIVdURjo6dGhyZWFk
aW5nSXNJbml0aWFsaXplZCgpKTsKLSAgICA6OlNldEVudmlyb25tZW50VmFyaWFibGVXKHZhcmlh
YmxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCB2YWx1ZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgc2V0SWZOb3REZWZp
bmVkKGNvbnN0IFN0cmluZyYgdmFyaWFibGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAg
QVNTRVJUKCFXVEY6OnRocmVhZGluZ0lzSW5pdGlhbGl6ZWQoKSk7Ci0gICAgaWYgKGdldCh2YXJp
YWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNldCh2YXJpYWJsZSwgdmFsdWUpOwotfQot
Ci12b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmIHZhcmlhYmxlKQotewotICAgIEFTU0VSVCghV1RG
Ojp0aHJlYWRpbmdJc0luaXRpYWxpemVkKCkpOwotICAgIDo6U2V0RW52aXJvbm1lbnRWYXJpYWJs
ZVcodmFyaWFibGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIG51bGxw
dHIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBFbnZpcm9ubWVudEltcGwKLX0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC91bml4L0xvZ2dpbmdVbml4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdW5peC9Mb2dnaW5nVW5peC5jcHAKaW5kZXgg
YTQzMmJmNzlmNGZmYTIwNGZlOTA0YTQzYzY4YWM0Y2I5MjQ4YTNmYy4uMjQ3MzRmOTAyYzE0YWIx
ZThjOTIyNzYyYzMyZjc0ZGU3NDgxOTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Vu
aXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0yNiwyOSArMjYsMjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKLSNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotCi0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorCiBuYW1lc3BhY2UgUEFMIHsKIAogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkK
IHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgYXV0byBsb2dFbnYgPSBFbnZpcm9ubWVudDo6Z2V0
KCJXRUJLSVRfREVCVUciKTsKLSAgICBpZiAoIWxvZ0VudikKLSAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisgICAgaWYgKGNoYXIqIGxvZ0VudiA9IGdldGVudigiV0VCS0lUX0RFQlVHIikp
IHsKIAogI2lmIGRlZmluZWQoTkRFQlVHKQotICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVH
IGlzIG5vdCBlbXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBt
YW55IGxvZyBtZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiV0VCQ09SRV9ERUJVRyBpcyBub3QgZW1wdHksIGJ1dCB0aGlz
IGlzIGEgcmVsZWFzZSBidWlsZC4gTm90aWNlIHRoYXQgbWFueSBsb2cgbWVzc2FnZXMgd2lsbCBv
bmx5IGFwcGVhciBpbiBhIGRlYnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAKLSAgICAvLyBUbyBkaXNh
YmxlIGxvZ2dpbmcgbm90SW1wbGVtZW50ZWQgc2V0IHRoZSBESVNBQkxFX05JX1dBUk5JTkcgZW52
aXJvbm1lbnQgdmFyaWFibGUgdG8gMS4KLSAgICByZXR1cm4gbWFrZVN0cmluZygiTm90WWV0SW1w
bGVtZW50ZWQsIiwgKmxvZ0Vudik7Ci0jZWxzZQotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAg
ICAgLy8gVG8gZGlzYWJsZSBsb2dnaW5nIG5vdEltcGxlbWVudGVkIHNldCB0aGUgRElTQUJMRV9O
SV9XQVJOSU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIDEuCisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKCJOb3RZZXRJbXBsZW1lbnRlZCwiX3MsIGxvZ0Vudik7CisgICAgfQogI2VuZGlmCisg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggYjY4Y2M5NDYwYzgxMzVhYWU3ZmUw
YjFkY2QxYjUzZjRjZWE3NDkzMC4uNmIyMzJjNGRiNDg3NjUyN2M3MzU5NWNhZjhkMTY2OWE5M2Vh
ZTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTI5
LDcgKzI5LDcgQEAKICNpZiAhTE9HX0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
CiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC0zNyw3ICszNywxNyBAQCBuYW1lc3BhY2UgUEFMIHsK
IFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIHJldHVy
biBFbnZpcm9ubWVudDo6Z2V0KCJXZWJDb3JlTG9nZ2luZyIpLnZhbHVlT3IoZW1wdHlTdHJpbmco
KSk7CisgICAgc3RhdGljIGNoYXIqIGNvbnN0IGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlID0g
IldlYkNvcmVMb2dnaW5nIjsKKyAgICBEV09SRCBsZW5ndGggPSBHZXRFbnZpcm9ubWVudFZhcmlh
YmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgMCwgMCk7CisgICAgaWYgKCFsZW5ndGgp
CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cihsZW5ndGgpOworCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52
aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gU3RyaW5nKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9O
b3RJbXBsZW1lbnRlZC5oCmluZGV4IDI1MGQ0MzMwNzhlN2RlN2ZiYWI4Yjg4MGY1ODQwMGJhMjY0
NmM2YTIuLjcyYWY3MDZkNDBlMTI3OWFlYTllY2UwOGE2Yjc3YWRkNDg2ZGIxNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm90SW1wbGVtZW50ZWQuaApAQCAtMjcsMTYgKzI3LDE1IEBACiAj
ZGVmaW5lIE5vdEltcGxlbWVudGVkX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0j
aW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAKICNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IHN1cHByZXNzTm90SW1wbGVtZW50ZWRXYXJuaW5nKCkgRW52aXJvbm1lbnQ6OmdldCgiRElTQUJM
RV9OSV9XQVJOSU5HIikKKyAgICAjZGVmaW5lIHN1cHByZXNzTm90SW1wbGVtZW50ZWRXYXJuaW5n
KCkgZ2V0ZW52KCJESVNBQkxFX05JX1dBUk5JTkciKQogI2Vsc2UKLSNkZWZpbmUgc3VwcHJlc3NO
b3RJbXBsZW1lbnRlZFdhcm5pbmcoKSBmYWxzZQorICAgICNkZWZpbmUgc3VwcHJlc3NOb3RJbXBs
ZW1lbnRlZFdhcm5pbmcoKSBmYWxzZQogI2VuZGlmCiAKICNpZiBMT0dfRElTQUJMRUQKLSNkZWZp
bmUgbm90SW1wbGVtZW50ZWQoKSAoKHZvaWQpMCkKKyAgICAjZGVmaW5lIG5vdEltcGxlbWVudGVk
KCkgKCh2b2lkKTApCiAjZWxzZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQppbmRleCAzZmFjODNkYjY2MTZk
NzQ1ODYzY2MxNDE0MWZkMTA1YjYxODE5MDcyLi5kNGM0ZjVhMGQwNzIyMDNmOGJlODAwNDUxZjRh
OGEzYzgyN2ZkOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
eXN0ZW1WZXJzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3Rl
bVZlcnNpb24ubW0KQEAgLTI1LDggKzI1LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTeXN0ZW1WZXJzaW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZVN5c3RlbU1hcmtl
dGluZ1ZlcnNpb24oKQpAQCAtMzQsNyArMzIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZVN5
c3RlbU1hcmtldGluZ1ZlcnNpb24oKQogICAgIC8vIENhbid0IHVzZSAtW05TUHJvY2Vzc0luZm8g
b3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZ10gYmVjYXVzZSBpdCBoYXMgdG9vIG11Y2ggc3R1
ZmYgd2UgZG9uJ3Qgd2FudC4KICAgICBOU1N0cmluZyAqc3lzdGVtTGlicmFyeVBhdGggPSBbTlNT
ZWFyY2hQYXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1N5
c3RlbURvbWFpbk1hc2ssIFlFUykgb2JqZWN0QXRJbmRleDowXTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAoY29uc3QgY2hhciogc2ltdWxhdG9yUm9vdCA9IEVu
dmlyb25tZW50OjpnZXRSYXcoIlNJTVVMQVRPUl9ST09UIikpCisgICAgaWYgKGNoYXIgKnNpbXVs
YXRvclJvb3QgPSBnZXRlbnYoIlNJTVVMQVRPUl9ST09UIikpCiAgICAgICAgIHN5c3RlbUxpYnJh
cnlQYXRoID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcy8lQCIsIHNpbXVsYXRvclJv
b3QsIHN5c3RlbUxpYnJhcnlQYXRoXTsKICNlbmRpZgogICAgIE5TU3RyaW5nICpzeXN0ZW1WZXJz
aW9uUGxpc3RQYXRoID0gW3N5c3RlbUxpYnJhcnlQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkNvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN0Il07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCmluZGV4IDI5ZjIzYmE5YjEzODhjMGMyYWRjYmNmNWI2YjBiNWUxMDlm
OTQxMTMuLjFmYTRjNGM4NzkwOGQ4M2EzYWE3ZGIzYzBlOGM1NGYwODVhYjMyOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8Z3N0L2F1
ZGlvL2F1ZGlvLWluZm8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8bXV0ZXg+
Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0
aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KQEAgLTIzOCw3ICsyMzcsOCBAQCBib29s
IGluaXRpYWxpemVHU3RyZWFtZXIoT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+JiYgb3B0aW9ucykK
ICAgICAgICAgZ19zdHJmcmVldihhcmd2KTsKIAogICAgICAgICBpZiAoaXNGYXN0TWFsbG9jRW5h
YmxlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoIUVudmlyb25tZW50OjpoYXNWYWx1ZSgiV0VCS0lU
X0dTVF9ESVNBQkxFX0ZBU1RfTUFMTE9DIiwgIjAiKSkKKyAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGRpc2FibGVGYXN0TWFsbG9jID0gZ2V0ZW52KCJXRUJLSVRfR1NUX0RJU0FCTEVfRkFTVF9NQUxM
T0MiKTsKKyAgICAgICAgICAgIGlmICghZGlzYWJsZUZhc3RNYWxsb2MgfHwgIXN0cmNtcChkaXNh
YmxlRmFzdE1hbGxvYywgIjAiKSkKICAgICAgICAgICAgICAgICBnc3RfYWxsb2NhdG9yX3NldF9k
ZWZhdWx0KEdTVF9BTExPQ0FUT1IoZ19vYmplY3RfbmV3KGdzdF9hbGxvY2F0b3JfZmFzdF9tYWxs
b2NfZ2V0X3R5cGUoKSwgbnVsbHB0cikpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDllNTBjZGM0MGRhYzAzMjc1
NWM5MjEyZTg4ZjYxNTZjZDE5YWIwYjkuLmQ0NThmMWFmNzk1ODYwYzk1NzcwOTg2N2E3MjYxNmQz
MzRkMmZhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNs
dWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CkBAIC0y
NDE4LDcgKzI0MTcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbihjb25zdCBnY2hhciogcGxheWJpbk5hbWUsIGNvbgogICAgIEFTU0VSVCghbV9w
aXBlbGluZSk7CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxMCwgMCkKLSAgICBpZiAoRW52
aXJvbm1lbnQ6OmdldCgiVVNFX1BMQVlCSU4zIikpCisgICAgaWYgKGdfZ2V0ZW52KCJVU0VfUExB
WUJJTjMiKSkKICAgICAgICAgcGxheWJpbk5hbWUgPSAicGxheWJpbjMiOwogI2Vsc2UKICAgICBw
bGF5YmluTmFtZSA9ICJwbGF5YmluIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lLmNw
cAppbmRleCA2MjYzMjY2NmI5Mjc2YmYyMmQ3OGY5MDJlMWQxNjEyZmM1YmIzMjljLi4wN2FlN2Ey
NjNjMDVlOGRkMzBlZDk1NTM0Njc2ZWFlODU3ZTQwYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFp
bnRpbmdFbmdpbmUuY3BwCkBAIC0zMSwxNyArMzEsMTUgQEAKIAogI2luY2x1ZGUgIk5pY29zaWFQ
YWludGluZ0VuZ2luZUJhc2ljLmgiCiAjaW5jbHVkZSAiTmljb3NpYVBhaW50aW5nRW5naW5lVGhy
ZWFkZWQuaCIKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KIAogbmFtZXNwYWNlIE5pY29z
aWEgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdFbmdpbmU+IFBhaW50aW5nRW5naW5lOjpj
cmVhdGUoKQogewogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgUExBVEZPUk0oV1BFKQot
ICAgIGlmIChhdXRvIG51bVRocmVhZHNFbnYgPSBFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRfTklD
T1NJQV9QQUlOVElOR19USFJFQURTIikpIHsKLSAgICAgICAgYm9vbCBvazsKLSAgICAgICAgYXV0
byBudW1UaHJlYWRzID0gbnVtVGhyZWFkc0Vudi0+dG9JbnRTdHJpY3QoJm9rKTsKLSAgICAgICAg
aWYgKG9rKSB7CisgICAgaWYgKGNvbnN0IGNoYXIqIG51bVRocmVhZHNFbnYgPSBnZXRlbnYoIldF
QktJVF9OSUNPU0lBX1BBSU5USU5HX1RIUkVBRFMiKSkgeworICAgICAgICB1bnNpZ25lZCBudW1U
aHJlYWRzID0gMDsKKyAgICAgICAgaWYgKHNzY2FuZihudW1UaHJlYWRzRW52LCAiJXUiLCAmbnVt
VGhyZWFkcykgPT0gMSkgewogICAgICAgICAgICAgaWYgKG51bVRocmVhZHMgPCAxIHx8IG51bVRo
cmVhZHMgPiA4KSB7CiAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUaGUgbnVtYmVyIG9m
IE5pY29zaWEgcGFpbnRpbmcgdGhyZWFkcyBpcyBub3QgYmV0d2VlbiAxIGFuZCA4LiBVc2luZyB0
aGUgZGVmYXVsdCB2YWx1ZSA0XG4iKTsKICAgICAgICAgICAgICAgICBudW1UaHJlYWRzID0gNDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyRlBTQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmluZGV4IDZlNTE5ODQzZTI3NzEy
MDFiYmI1M2IzOGIzYjUzMzcyOGVmZDZlNjUuLmM4Y2FjNDhjNmMwNWVjYjQ1MjE1N2ZiMjMxZWI2
NGI2OThjYTZmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAt
MjAsMTAgKzIwLDEwIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oIgogCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgot
I2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxMyArMzQsMTIgQEAgVGV4dHVyZU1h
cHBlckZQU0NvdW50ZXI6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyKCkKICAgICAsIG1fbGFzdEZQ
UygwKQogICAgICwgbV9mcmFtZUNvdW50KDApCiB7Ci0gICAgaWYgKGF1dG8gc2hvd0ZQU0Vudmly
b25tZW50ID0gRW52aXJvbm1lbnQ6OmdldCgiV0VCS0lUX1NIT1dfRlBTIikpIHsKLSAgICAgICAg
Ym9vbCBvazsKLSAgICAgICAgbV9mcHNJbnRlcnZhbCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25t
ZW50LT50b0RvdWJsZSgmb2spKTsKLSAgICAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsK
LSAgICAgICAgICAgIG1faXNTaG93aW5nRlBTID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fZnBzVGlt
ZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIH0KKyAgICBTdHJpbmcgc2hv
d0ZQU0Vudmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBib29sIG9r
ID0gZmFsc2U7CisgICAgbV9mcHNJbnRlcnZhbCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25tZW50
LnRvRG91YmxlKCZvaykpOworICAgIGlmIChvayAmJiBtX2Zwc0ludGVydmFsKSB7CisgICAgICAg
IG1faXNTaG93aW5nRlBTID0gdHJ1ZTsKKyAgICAgICAgbV9mcHNUaW1lc3RhbXAgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKaW5kZXggODZh
MDY1Mjk5YmFkMGExOGIxMTYyZjNiMTE2ZWUwNjNjMWU1MmYzNC4uOGM4MTExOWJjNTBkYmVlOTBh
ODYxOTMwMjIwMTI2YWIxYjBmNjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKQEAgLTI3LDcg
KzI3LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKIAogI2luY2x1ZGUgIkdM
Q29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogCiAjaWYgUExBVEZPUk0o
WDExKQogI2luY2x1ZGUgPFgxMS9YbGliLmg+CkBAIC00NSw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4gUGxhdGZvcm1EaXNw
bGF5WDExOjpjcmVhdGUoKQogewotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBYT3BlbkRpc3BsYXko
RW52aXJvbm1lbnQ6OmdldFJhdygiRElTUExBWSIpKTsKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
WE9wZW5EaXNwbGF5KGdldGVudigiRElTUExBWSIpKTsKICAgICBpZiAoIWRpc3BsYXkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lV2lkZ2V0LmNwcAppbmRleCBkODVkY2ExODUzZDEwNWI5ODE5MzE1ZDM4MmMw
ODVlYzY1YjQ3Mzg1Li5iNzJjMTA3YzFjNDNjNWM4YzM4MjM2MDg4NzQ5Mzg3M2UxZWIyMTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDIwLCAwKQog
Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMTEwLDcgKzEwOSw3IEBAIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcihHdGtPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgTW9kZSBtb2RlCiAgICAgICAgIGluZm8uY2xhc3NMaXN0LmFwcGVuZCgiaG9y
aXpvbnRhbCIpOwogICAgICAgICBpbmZvLmNsYXNzTGlzdC5hcHBlbmQoImJvdHRvbSIpOwogICAg
IH0KLSAgICBzdGF0aWMgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMgPSAhRW52aXJvbm1lbnQ6
Omhhc1ZhbHVlKCJHVEtfT1ZFUkxBWV9TQ1JPTExJTkciLCAiMCIpOworICAgIHN0YXRpYyBib29s
IHVzZXNPdmVybGF5U2Nyb2xsYmFycyA9IGdfc3RyY21wMChnX2dldGVudigiR1RLX09WRVJMQVlf
U0NST0xMSU5HIiksICIwIik7CiAgICAgaWYgKHVzZXNPdmVybGF5U2Nyb2xsYmFycykKICAgICAg
ICAgaW5mby5jbGFzc0xpc3QuYXBwZW5kKCJvdmVybGF5LWluZGljYXRvciIpOwogICAgIGlmICht
b2RlID09IE1vZGU6OkZ1bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nj
cm9sbGJhclRoZW1lR3RrLmNwcAppbmRleCBjMzMyM2I1OTFlZDg0NTQ1NzViYWY4YzJhNmE1ZjRj
MDgxZWQzMjE1Li4yMDlhZjdiNTVkYmE0YjExNDA5NjRmZDVjZTE0NjEwOTVkMDNmMjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAK
QEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlIDxjc3Rk
bGliPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHRo
ZW1lQ2hhbmdlZENhbGxiYWNrKCkKIFNjcm9sbGJhclRoZW1lR3RrOjpTY3JvbGxiYXJUaGVtZUd0
aygpCiB7CiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMjAsIDApCi0gICAgbV91c2VzT3Zlcmxh
eVNjcm9sbGJhcnMgPSAhRW52aXJvbm1lbnQ6Omhhc1ZhbHVlKCJHVEtfT1ZFUkxBWV9TQ1JPTExJ
TkciLCAiMCIpOworICAgIG1fdXNlc092ZXJsYXlTY3JvbGxiYXJzID0gZ19zdHJjbXAwKGdfZ2V0
ZW52KCJHVEtfT1ZFUkxBWV9TQ1JPTExJTkciKSwgIjAiKTsKICNlbmRpZgogICAgIHN0YXRpYyBi
b29sIHRoZW1lTW9uaXRvckluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCF0aGVtZU1vbml0
b3JJbml0aWFsaXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggYTJiOGU4ZDQ5Y2Q4ZDRjMjFhYWE4ZmQzMTk2
ZjIyNmJlOTIxNjc5Zi4uMGNlMTEwMGM4NjAzNjNkZDY3NjQyYjdiNDc2NzE5OTllMmUwYWE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgog
I2luY2x1ZGUgPE5ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1
ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgpAQCAtNDgsNiArNDcsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFbnZp
cm9ubWVudFZhcmlhYmxlUmVhZGVyIHsKK3B1YmxpYzoKKyAgICBjb25zdCBjaGFyKiByZWFkKGNv
bnN0IGNoYXIqIG5hbWUpIHsgcmV0dXJuIDo6Z2V0ZW52KG5hbWUpOyB9CisgICAgYm9vbCBkZWZp
bmVkKGNvbnN0IGNoYXIqIG5hbWUpIHsgcmV0dXJuIHJlYWQobmFtZSkgIT0gbnVsbHB0cjsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gcmVhZEFzKGNvbnN0IGNoYXIq
IG5hbWUpCisgICAgeworICAgICAgICBpZiAoY29uc3QgY2hhciogdmFsdWVTdHIgPSByZWFkKG5h
bWUpKSB7CisgICAgICAgICAgICBUIHZhbHVlOworICAgICAgICAgICAgaWYgKHNzY2FuZih2YWx1
ZVN0ciwgc3NjYW5UZW1wbGF0ZTxUPigpLCAmdmFsdWUpID09IDEpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciog
c3NjYW5UZW1wbGF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfTsKKwordGVtcGxhdGU8PgorY29uc3RleHBy
IGNvbnN0IGNoYXIqIEVudmlyb25tZW50VmFyaWFibGVSZWFkZXI6OnNzY2FuVGVtcGxhdGU8c2ln
bmVkPigpIHsgcmV0dXJuICIlZCI7IH0KKwordGVtcGxhdGU8PgorY29uc3RleHByIGNvbnN0IGNo
YXIqIEVudmlyb25tZW50VmFyaWFibGVSZWFkZXI6OnNzY2FuVGVtcGxhdGU8dW5zaWduZWQ+KCkg
eyByZXR1cm4gIiV1IjsgfQorCiAvLyBBTFBOIFByb3RvY29sIElEIChSRkM3MzAxKSBodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzMwMQogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBo
dHRwVmVyc2lvbjEwIHsgImh0dHAvMS4wIl9zIH07CiBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFs
IGh0dHBWZXJzaW9uMTEgeyAiaHR0cC8xLjEiX3MgfTsKQEAgLTY1LDMxICs5NCwzNCBAQCBDdXJs
Q29udGV4dDo6Q3VybENvbnRleHQoKQogewogICAgIGluaXRTaGFyZUhhbmRsZSgpOwogCi0gICAg
aWYgKGF1dG8gdmFsdWUgPSBFbnZpcm9ubWVudDo6Z2V0VUludCgiV0VCS0lUX0NVUkxfRE5TX0NB
Q0hFX1RJTUVPVVQiKSkKKyAgICBFbnZpcm9ubWVudFZhcmlhYmxlUmVhZGVyIGVudlZhcjsKKwor
ICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczx1bnNpZ25lZD4oIldFQktJVF9DVVJM
X0ROU19DQUNIRV9USU1FT1VUIikpCiAgICAgICAgIG1fZG5zQ2FjaGVUaW1lb3V0ID0gU2Vjb25k
cygqdmFsdWUpOwogCi0gICAgaWYgKGF1dG8gdmFsdWUgPSBFbnZpcm9ubWVudDo6Z2V0VUludCgi
V0VCS0lUX0NVUkxfQ09OTkVDVF9USU1FT1VUIikpCisgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZW
YXIucmVhZEFzPHVuc2lnbmVkPigiV0VCS0lUX0NVUkxfQ09OTkVDVF9USU1FT1VUIikpCiAgICAg
ICAgIG1fY29ubmVjdFRpbWVvdXQgPSBTZWNvbmRzKCp2YWx1ZSk7CiAKICAgICBsb25nIG1heENv
bm5lY3RzIHsgQ3VybERlZmF1bHRNYXhDb25uZWN0cyB9OwogICAgIGxvbmcgbWF4VG90YWxDb25u
ZWN0aW9ucyB7IEN1cmxEZWZhdWx0TWF4VG90YWxDb25uZWN0aW9ucyB9OwogICAgIGxvbmcgbWF4
SG9zdENvbm5lY3Rpb25zIHsgQ3VybERlZmF1bHRNYXhIb3N0Q29ubmVjdGlvbnMgfTsKIAotICAg
IGlmIChhdXRvIHZhbHVlID0gRW52aXJvbm1lbnQ6OmdldEludCgiV0VCS0lUX0NVUkxfTUFYQ09O
TkVDVFMiKSkKKyAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VC
S0lUX0NVUkxfTUFYQ09OTkVDVFMiKSkKICAgICAgICAgbWF4Q29ubmVjdHMgPSAqdmFsdWU7CiAK
LSAgICBpZiAoYXV0byB2YWx1ZSA9IEVudmlyb25tZW50OjpnZXRJbnQoIldFQktJVF9DVVJMX01B
WF9UT1RBTF9DT05ORUNUSU9OUyIpKQorICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRB
czxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfVE9UQUxfQ09OTkVDVElPTlMiKSkKICAgICAgICAg
bWF4VG90YWxDb25uZWN0aW9ucyA9ICp2YWx1ZTsKIAotICAgIGlmIChhdXRvIHZhbHVlID0gRW52
aXJvbm1lbnQ6OmdldEludCgiV0VCS0lUX0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKKyAg
ICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFY
X0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVl
OwogCiAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1
bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25z
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBtX3ZlcmJvc2UgPSAhIUVudmlyb25tZW50OjpnZXQo
IkRFQlVHX0NVUkwiKTsKKyAgICBtX3ZlcmJvc2UgPSBlbnZWYXIuZGVmaW5lZCgiREVCVUdfQ1VS
TCIpOwogCi0gICAgaWYgKGNvbnN0IGNoYXIqIGxvZ0ZpbGUgPSBFbnZpcm9ubWVudDo6Z2V0UmF3
KCJDVVJMX0xPR19GSUxFIikpCisgICAgYXV0byBsb2dGaWxlID0gZW52VmFyLnJlYWQoIkNVUkxf
TE9HX0ZJTEUiKTsKKyAgICBpZiAobG9nRmlsZSkKICAgICAgICAgbV9sb2dGaWxlID0gZm9wZW4o
bG9nRmlsZSwgImEiKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwu
Y3BwCmluZGV4IGMzM2U5MjI2ZDQzNDNmM2Y0Y2YyYWNjM2Y5ZDdjZGU1OWVjYThjYmYuLjFhYzRl
MDJiN2NiMDc1MmRmMjJlNmNiYjM4OTQ0ZjFhY2Y4NjEyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ3VybC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDdXJsQ29udGV4
dC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CkBAIC00Nyw4ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogewogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7Ci0gICAgaWYgKGF1dG8gY29v
a2llSmFyUGF0aCA9IEVudmlyb25tZW50OjpnZXQoIkNVUkxfQ09PS0lFX0pBUl9QQVRIIikpCi0g
ICAgICAgIHJldHVybiAqY29va2llSmFyUGF0aDsKKyAgICBjaGFyKiBjb29raWVKYXJQYXRoID0g
Z2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFUSCIpOworICAgIGlmIChjb29raWVKYXJQYXRoKQor
ICAgICAgICByZXR1cm4gY29va2llSmFyUGF0aDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkZWZhdWx0RmlsZU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9wbGF5c3RhdGlvbi9DdXJs
U1NMSGFuZGxlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9wbGF5c3RhdGlvbi9DdXJsU1NMSGFuZGxlUGxheVN0YXRpb24uY3BwCmluZGV4IDg0NGFhNjY0
ZDRlZGEwYmQyOWI5YWQ2ODhkNzlkOWJhMzI4MjlhNTMuLjNlMWUyODc1MGMwZjg3NWNlNGFmMTdj
YjNjMjEwZWFjZTdmNGIxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcGxheXN0YXRpb24vQ3VybFNTTEhhbmRsZVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3BsYXlzdGF0aW9uL0N1cmxTU0xIYW5kbGVQbGF5
U3RhdGlvbi5jcHAKQEAgLTI2LDEzICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkN1cmxTU0xIYW5kbGUuaCIKIAotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgZ2V0Q0FDZXJ0UGF0aEVudigp
CiB7Ci0gICAgcmV0dXJuIEVudmlyb25tZW50OjpnZXQoIkNVUkxfQ0FfQlVORExFX1BBVEgiKS52
YWx1ZU9yKGVtcHR5U3RyaW5nKCkpOworICAgIGNoYXIqIGVudlBhdGggPSBnZXRlbnYoIkNVUkxf
Q0FfQlVORExFX1BBVEgiKTsKKyAgICBpZiAoZW52UGF0aCkKKyAgICAgICAgcmV0dXJuIHsgZW52
UGF0aCB9OworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIHZvaWQgQ3VybFNTTEhh
bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0N1cmxTU0xIYW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vQ3VybFNTTEhhbmRsZVdpbi5jcHAKaW5kZXggMzk1MDkzZjJj
N2VlZmU1N2ZjYjRhNGNiMjA5ODQzMjA5NzAzZjcxOC4uNDdjODhiYWQ5NDg3OTJlN2M0NDE2MmFh
MTY1MDYyMWU1ZDFmNGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vQ3VybFNTTEhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vQ3VybFNTTEhhbmRsZVdpbi5jcHAKQEAgLTI2LDggKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJsU1NMSGFuZGxlLmgiCiAKLSNpbmNsdWRl
IDx3dGYvRW52aXJvbm1lbnQuaD4KLQogI2lmIFVTRShDRikKICNpZiBPUyhXSU5ET1dTKQogI2lu
Y2x1ZGUgIldlYkNvcmVCdW5kbGVXaW4uaCIKQEAgLTQwLDggKzM4LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgU3RyaW5nIGdldENBQ2VydFBhdGhFbnYoKQogewotICAgIGlmIChh
dXRvIGVudlBhdGggPSBFbnZpcm9ubWVudDo6Z2V0KCJDVVJMX0NBX0JVTkRMRV9QQVRIIikpCi0g
ICAgICAgIHJldHVybiAqZW52UGF0aDsKKyAgICBjaGFyKiBlbnZQYXRoID0gZ2V0ZW52KCJDVVJM
X0NBX0JVTkRMRV9QQVRIIik7CisgICAgaWYgKGVudlBhdGgpCisgICAgICAgIHJldHVybiBTdHJp
bmcoZW52UGF0aCk7CiAKICNpZiBVU0UoQ0YpCiAgICAgQ0ZCdW5kbGVSZWYgd2ViS2l0QnVuZGxl
UmVmID0gd2ViS2l0QnVuZGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggNTY1MGRm
NGY5MDdjZTg3N2ZjYmEwNTFkMzQ4MThiYWIwNTEyOGE4Yy4uNWVlYjliZmE3NDAwZjcyMTVjMDI2
YzU1MmQ4MmFhMzhhNzYzZjk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgPGh5cGhlbi5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CkBAIC04OCw4ICs4Nyw4IEBAIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3Rv
cnlGb3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9t
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogc3RhdGljIENTdHJpbmcgdG9wTGV2ZWxQYXRo
KCkKIHsKLSAgICBpZiAoYXV0byB0b3BMZXZlbERpcmVjdG9yeSA9IEVudmlyb25tZW50OjpnZXQo
IldFQktJVF9UT1BfTEVWRUwiKSkKLSAgICAgICAgcmV0dXJuIHRvcExldmVsRGlyZWN0b3J5LT51
dGY4KCk7CisgICAgaWYgKGNvbnN0IGNoYXIqIHRvcExldmVsRGlyZWN0b3J5ID0gZ19nZXRlbnYo
IldFQktJVF9UT1BfTEVWRUwiKSkKKyAgICAgICAgcmV0dXJuIHRvcExldmVsRGlyZWN0b3J5Owog
CiAgICAgLy8gSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHdhc24ndCBwcm92aWRlZCB0aGVu
IGFzc3VtZSB3ZSB3ZXJlIGJ1aWx0IGludG8KICAgICAvLyBXZWJLaXRCdWlsZC9EZWJ1ZyBvciBX
ZWJLaXRCdWlsZC9SZWxlYXNlLiBPYnZpb3VzbHkgdGhpcyB3aWxsIGZhaWwgaWYgdGhlIGJ1aWxk
CkBAIC0xMDIsOCArMTAxLDkgQEAgc3RhdGljIENTdHJpbmcgdG9wTGV2ZWxQYXRoKCkKIAogc3Rh
dGljIENTdHJpbmcgd2Via2l0QnVpbGREaXJlY3RvcnkoKQogewotICAgIGlmIChhdXRvIHdlYmtp
dE91dHB1dERpciA9IEVudmlyb25tZW50OjpnZXQoIldFQktJVF9PVVRQVVRESVIiKSkKLSAgICAg
ICAgcmV0dXJuIHdlYmtpdE91dHB1dERpci0+dXRmOCgpOworICAgIGNvbnN0IGNoYXIqIHdlYmtp
dE91dHB1dERpciA9IGdfZ2V0ZW52KCJXRUJLSVRfT1VUUFVURElSIik7CisgICAgaWYgKHdlYmtp
dE91dHB1dERpcikKKyAgICAgICAgcmV0dXJuIHdlYmtpdE91dHB1dERpcjsKIAogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gb3V0cHV0RGlyKGdfYnVpbGRfZmlsZW5hbWUodG9wTGV2ZWxQYXRoKCkuZGF0
YSgpLCAiV2ViS2l0QnVpbGQiLCBudWxscHRyKSk7CiAgICAgcmV0dXJuIG91dHB1dERpci5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdW5peC9Mb2dnaW5nVW5peC5jcHAKaW5kZXgg
MGQxZTVhMGU1OWZjMGFlYjc3YTdjY2E0NTcxYzFhOThiYTg1MDA3Ny4uYjcyYWQyMzhmYTIxZDZm
MzVlYWJkNzQxZGJiNTAxYTk0MzFjZWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dW5peC9Mb2dnaW5nVW5peC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2lmICFMT0dfRElTQUJM
RUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQu
aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogewogI2lmICFMT0dfRElTQUJMRUQKLSAgICBh
dXRvIGxvZ0VudiA9IEVudmlyb25tZW50OjpnZXQoIldFQktJVF9ERUJVRyIpOworICAgIGNoYXIq
IGxvZ0VudiA9IGdldGVudigiV0VCS0lUX0RFQlVHIik7CiAgICAgaWYgKCFsb2dFbnYpCiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC00Miw3ICs0Miw3IEBAIFN0cmluZyBsb2dM
ZXZlbFN0cmluZygpCiAjZW5kaWYKIAogICAgIC8vIFRvIGRpc2FibGUgbG9nZ2luZyBub3RJbXBs
ZW1lbnRlZCBzZXQgdGhlIERJU0FCTEVfTklfV0FSTklORyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0
byAxLgotICAgIHJldHVybiBtYWtlU3RyaW5nKCJOb3RZZXRJbXBsZW1lbnRlZCwiLCAqbG9nRW52
KTsKKyAgICByZXR1cm4gU3RyaW5nKCJOb3RZZXRJbXBsZW1lbnRlZCwiKSArIGxvZ0VudjsKICNl
bHNlCiAgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggYzE1OGVkNzYwODcwNzg4NDI1YWMyYzRlODZhZjQz
MzA5MGU3YWZhMy4uZTZjNDQ0ZWNhYzdhMmY5M2ZlMjkwZjMzMmUwOTAzZGM0NjQ2ZGE2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtMjksNyArMjks
NyBAQAogI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszNywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogewogI2lmICFMT0dfRElTQUJMRUQKLSAgICByZXR1
cm4gRW52aXJvbm1lbnQ6OmdldCgiV2ViQ29yZUxvZ2dpbmciKS52YWx1ZU9yKGVtcHR5U3RyaW5n
KCkpOworICAgIHN0YXRpYyBjaGFyKiBjb25zdCBsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSA9
ICJXZWJDb3JlTG9nZ2luZyI7CisgICAgRFdPUkQgbGVuZ3RoID0gR2V0RW52aXJvbm1lbnRWYXJp
YWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIDAsIDApOworICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFZlY3RvcjxjaGFyPiBidWZm
ZXIobGVuZ3RoKTsKKworICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vu
dmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKICNl
bHNlCiAgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJvY2Vzc01haW4uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvTmV0d29ya1By
b2Nlc3NNYWluLmNwcAppbmRleCA5NWY5ZjZiZTJhZjdkZTVlOGQxMzBjZWQ1MDY0MWI5ZmM2NDBk
YjBkLi43MzZjMDE3MDhhNDY2OTg2OTlhMDgzOWE3MTQ3N2UyYTRhNDgzZGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9OZXR3b3JrUHJv
Y2Vzc01haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC91bml4L05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpblVuaXguaCIKIAotI2luY2x1ZGUgPHd0Zi9FbnZp
cm9ubWVudC5oPgorI2luY2x1ZGUgPGNzdGRsaWI+CiAKICNpZiBVU0UoR0NSWVBUKQogI2luY2x1
ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0luaXRpYWxpemF0aW9uLmg+CkBAIC00NCw3ICs0Myw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAvLyBvdmVyd3JpdGUgdGhpcyBw
cmlvcml0eSBzdHJpbmcgaWYgaXQncyBhbHJlYWR5IHNldCBieSB0aGUgdXNlci4KICAgICAvLyBo
dHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4NjMzCiAgICAgLy8g
V0FSTklORzogVGhpcyBuZWVkcyB0byBiZSBLRVBUIElOIFNZTkMgd2l0aCBXZWJQcm9jZXNzTWFp
bi5jcHAuCi0gICAgRW52aXJvbm1lbnQ6OnNldElmTm90RGVmaW5lZCgiR19UTFNfR05VVExTX1BS
SU9SSVRZIiwgIk5PUk1BTDolQ09NUEFUOiFWRVJTLVNTTDMuMDohQVJDRk9VUi0xMjgiKTsKKyAg
ICBzZXRlbnYoIkdfVExTX0dOVVRMU19QUklPUklUWSIsICJOT1JNQUw6JUNPTVBBVDohVkVSUy1T
U0wzLjA6IUFSQ0ZPVVItMTI4IiwgMCk7CiAKICNpZiBVU0UoR0NSWVBUKQogICAgIFBBTDo6R0Ny
eXB0Ojppbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4
L0Vudmlyb25tZW50VXRpbGl0aWVzLmNwcAppbmRleCA5M2U0M2MyOGVhODcyYzMyOThjNDg3ODc5
MTI2YzI4NzEwY2RhNWMzLi5iYjgwMTIwZmMyMmM0YjI5Y2ZlNDQ2ZjhmNGZlZmI0NmI2Y2ZjYTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvRW52aXJvbm1lbnRVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9FbnZpcm9ubWVudFV0
aWxpdGllcy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJFbnZpcm9ubWVudFV0aWxpdGllcy5oIgogCi0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTM5LDcgKzM4LDggQEAgdm9pZCBzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoY29uc3Qg
Y2hhciogZW52aXJvbm1lbnRWYXJpYWJsZSwgY29uc3QgY2hhciogc2UKICAgICBBU1NFUlQoc2Vh
cmNoVmFsdWUpOwogICAgIAogICAgIC8vIEdyYWIgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVu
dmlyb25tZW50IHZhcmlhYmxlLgotICAgIGF1dG8gZW52aXJvbm1lbnRWYWx1ZSA9IGNvbnN0X2Nh
c3Q8Y2hhcio+KEVudmlyb25tZW50OjpnZXRSYXcoZW52aXJvbm1lbnRWYXJpYWJsZSkpOworICAg
IGNoYXIqIGVudmlyb25tZW50VmFsdWUgPSBnZXRlbnYoZW52aXJvbm1lbnRWYXJpYWJsZSk7CisK
ICAgICBpZiAoIWVudmlyb25tZW50VmFsdWUgfHwgZW52aXJvbm1lbnRWYWx1ZVswXSA9PSAnXDAn
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
dW5peC9Mb2dnaW5nVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvTG9nZ2lu
Z1VuaXguY3BwCmluZGV4IDA5YzFmY2FlNjJhYmZkZDI4ZWQ0OWI5MzQ3ZTRmNjY5MmU0NGI2ODku
LjViMTdiM2JkOGRlM2Y1NDhiZjc2OTBjMTg5M2Q5OWZlMWViNmQwMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMjcsMjIgKzI3LDE5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCi0jaWYgIUxPR19ESVNB
QkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLQotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVu
dC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisKIFN0cmlu
ZyBsb2dMZXZlbFN0cmluZygpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIHJldHVybiBFbnZp
cm9ubWVudDo6Z2V0KCJXRUJLSVRfREVCVUciKS52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpOworICAg
IHJldHVybiBnZXRlbnYoIldFQktJVF9ERUJVRyIpOwogI2Vsc2UKICAgICByZXR1cm4gU3RyaW5n
KCk7CiAjZW5kaWYKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KICNlbmRpZiAvLyAhTE9H
X0RJU0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDMxZmQxYmViMjIzMjYzOWFkMmUzNGYzZGZm
NTY5ODZlMjY5ODA3MWMuLjY5YjBhNWM5MTBmYmRhZjNkMzhmZmMyNzA2YTBlNDBmODIwNGZlNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIAogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzgsNyArMzgsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogewogI2lmICFMT0dfRElTQUJMRUQKLSAgICByZXR1
cm4gRW52aXJvbm1lbnQ6OmdldCgiV2ViS2l0TG9nZ2luZyIpLnZhbHVlT3IoZW1wdHlTdHJpbmco
KSk7CisgICAgc3RhdGljIGNoYXIqIGNvbnN0IGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlID0g
IldlYktpdExvZ2dpbmciOworCisgICAgRFdPUkQgbGVuZ3RoID0gR2V0RW52aXJvbm1lbnRWYXJp
YWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIDAsIDApOworICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFZlY3RvcjxjaGFyPiBidWZm
ZXIobGVuZ3RoKTsKKworICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vu
dmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKICNl
bHNlCiAgICAgcmV0dXJuIFN0cmluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggOGQxNDE0NDE4NmMy
YzVhOGQ2OGI1NmRlOWM3YmFjMTQyMjZkNjBlZC4uMTA1NGU0MzAzYTVhZTYxYmNiNDVhNmYzODNi
ZTE0Yzg1OTJkMTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21h
Yy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtNTMsNyArNTMsNiBAQAogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNXaW5kb3dT
UEkuaD4KICNpbXBvcnQgPHN5c2V4aXRzLmg+Ci0jaW1wb3J0IDx3dGYvRW52aXJvbm1lbnQuaD4K
ICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtMTY5LDggKzE2OCwxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRDYWxsUmVhbERlYnVnZ2Vy
KCkKICAgICBzdGF0aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZhbHNlOwogICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3QgZmxhZzsKICAgICBkaXNwYXRjaF9vbmNlKCZmbGFnLCBeewotICAgICAg
ICBpZiAoYXV0byB2YXIgPSBFbnZpcm9ubWVudDo6Z2V0SW50KCJVU0VSQlJFQUsiKSkKLSAgICAg
ICAgICAgIGlzVXNlcmJyZWFrU2V0ID0gKnZhcjsKKyAgICAgICAgY2hhciogdmFyID0gZ2V0ZW52
KCJVU0VSQlJFQUsiKTsKKworICAgICAgICBpZiAodmFyKQorICAgICAgICAgICAgaXNVc2VyYnJl
YWtTZXQgPSBhdG9pKHZhcik7CiAgICAgfSk7CiAgICAgCiAgICAgcmV0dXJuIGlzVXNlcmJyZWFr
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwCmluZGV4IDNkYjNmZDEyYWE1NWQ1N2FhNGFjZDcxZWIyNGY2NzE1NjVh
ZjRhZmEuLjJiZDU0OWE5NWRmYTY3NWNlNDdmNTZkNzhhNTliNGY3MzE1YTExYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0
aC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
bHVnaW5TZWFyY2hQYXRoLmgiCiAKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM3LDE1ICsz
NiwxNSBAQCBWZWN0b3I8U3RyaW5nPiBwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3VsdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGF1
dG8gbW96aWxsYVBhdGhzID0gRW52aXJvbm1lbnQ6OmdldCgiTU9aX1BMVUdJTl9QQVRIIik7Ci0g
ICAgaWYgKG1vemlsbGFQYXRocyAmJiAhbW96aWxsYVBhdGhzLT5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgVmVjdG9yPFN0cmluZz4gcGF0aHMgPSBtb3ppbGxhUGF0aHMtPnNwbGl0KCc6Jyk7CisgICAg
U3RyaW5nIG1vemlsbGFQYXRocyhnZXRlbnYoIk1PWl9QTFVHSU5fUEFUSCIpKTsKKyAgICBpZiAo
IW1vemlsbGFQYXRocy5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMg
PSBtb3ppbGxhUGF0aHMuc3BsaXQoJzonKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihw
YXRocyk7CiAgICAgfQogCi0gICAgYXV0byBtb3ppbGxhSG9tZSA9IEVudmlyb25tZW50OjpnZXQo
Ik1PWklMTEFfSE9NRSIpOwotICAgIGlmIChtb3ppbGxhSG9tZSAmJiAhbW96aWxsYUhvbWUtPmlz
RW1wdHkoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgqbW96aWxsYUhvbWUgKyAiL3BsdWdpbnMi
KTsKKyAgICBTdHJpbmcgbW96aWxsYUhvbWUoZ2V0ZW52KCJNT1pJTExBX0hPTUUiKSk7CisgICAg
aWYgKCFtb3ppbGxhSG9tZS5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQobW96aWxs
YUhvbWUgKyAiL3BsdWdpbnMiKTsKIAogICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9t
ZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIpOwogICAgIHJlc3VsdC5hcHBl
bmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm5ldHNjYXBlL3BsdWdpbnMi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEdMaWIuY3BwCmluZGV4IGEyOWNkMDJhNzIwMjNkMzljZjAwOGMwMTAwNTdkNjc3Yzk4
ZDhkYjkuLjRmZjM1ZDMxZGUxZDU3MjMxYTZmNmUxMDE1YTg1NWQ0MGY4YzhjMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhH
TGliLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0
aC5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgog
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxp
dGllcy5oPgogCkBAIC00Nyw5ICs0Niw5IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBh
dGgoKQogc3RhdGljIFN0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNz
TmFtZSkKIHsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCi0gICAgc3RhdGljIGF1dG8gZXhl
Y0RpcmVjdG9yeSA9IEVudmlyb25tZW50OjpnZXQoIldFQktJVF9FWEVDX1BBVEgiKTsKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19Q
QVRIIik7CiAgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeS0+dXRmOCgpLmRh
dGEoKSksIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKICAgICAg
ICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAg
cmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCBhNDExOWYwZTYzMmIzMmViY2M5
ZjczZjE2Y2IyYjc0OTE1OGQ2MmM2Li4wMzY1NGRkMDQ4MWViN2YzNTdlY2E1MzdmNjk4MTNlYjI4
MDMzNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
QWdlbnQuaD4KICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgot
I2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xODQsNyArMTgzLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAg
ICAgV2ViUHJlZmVyZW5jZXMqIHByZWZzID0gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLmdl
dCgpOwogICAgIHByZWZzLT5zZXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbih0cnVlKTsK
IAotICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRfV0VCUlRDX0RJU0FCTEVfVU5JRklF
RF9QTEFOIikpCisgICAgaWYgKGdfZ2V0ZW52KCJXRUJLSVRfV0VCUlRDX0RJU0FCTEVfVU5JRklF
RF9QTEFOIikpCiAgICAgICAgIHByZWZzLT5zZXRXZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoRkFM
U0UpOwogCiAgICAgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQgPSBwcmVmcy0+bWVkaWFTdHJlYW1F
bmFibGVkKCk7CkBAIC0zMzYsNyArMzM1LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NT
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHUKICAg
ICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQogICAgICAgICAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IHNob3dEZWJ1Z1Zpc3VhbHMgPSBFbnZpcm9ubWVudDo6aGFzVmFsdWUoIldFQktJVF9TSE9XX0NP
TVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiLCAiMSIpOworICAgICAgICAgICAgY2hhciogZGVidWdW
aXN1YWxzRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVH
X1ZJU1VBTFMiKTsKKyAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnVmlzdWFscyA9IGRlYnVnVmlz
dWFsc0Vudmlyb25tZW50ICYmICFzdHJjbXAoZGVidWdWaXN1YWxzRW52aXJvbm1lbnQsICIxIik7
CiAgICAgICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNh
dG9ycyhzZXR0aW5ncywgc2hvd0RlYnVnVmlzdWFscyk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IDdjNjJkNGMzODI3ODIxNmRmMGIxZDRlYzlmMWY0ZWFjZjZmZWRl
N2QuLjFlY2JmMzgwM2U1ZTQwNWQ1MTc2ZjkzNTFkOTIzZThjZDE3MzQzMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
CkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRl
IDxsaWJpbnRsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVu
dC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KQEAgLTI2Miw3ICsyNjEsNyBAQCBXRUJLSVRf
REVGSU5FX1RZUEUoV2ViS2l0V2ViQ29udGV4dCwgd2Via2l0X3dlYl9jb250ZXh0LCBHX1RZUEVf
T0JKRUNUKQogc3RhdGljIGNvbnN0IGNoYXIqIGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkKIHsK
ICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCi0gICAgY29uc3QgY2hhciogYnVuZGxlRGlyZWN0
b3J5ID0gRW52aXJvbm1lbnQ6OmdldFJhdygiV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIIik7
CisgICAgY29uc3QgY2hhciogYnVuZGxlRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9JTkpF
Q1RFRF9CVU5ETEVfUEFUSCIpOwogICAgIGlmIChidW5kbGVEaXJlY3RvcnkgJiYgZ19maWxlX3Rl
c3QoYnVuZGxlRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKQogICAgICAgICByZXR1cm4g
YnVuZGxlRGlyZWN0b3J5OwogI2VuZGlmCkBAIC0zNjAsNyArMzU5LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBwcml2LT5w
cm9jZXNzUG9vbC0+c2V0SWdub3JlVExTRXJyb3JzKGZhbHNlKTsKIAogI2lmIEVOQUJMRShNRU1P
UllfU0FNUExFUikKLSAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgiV0VCS0lUX1NBTVBMRV9NRU1P
UlkiKSkKKyAgICBpZiAoZ2V0ZW52KCJXRUJLSVRfU0FNUExFX01FTU9SWSIpKQogICAgICAgICBw
cml2LT5wcm9jZXNzUG9vbC0+c3RhcnRNZW1vcnlTYW1wbGVyKDApOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3Bw
CmluZGV4IGU5ZGUwNDFhZGViNzQ4OGIyNWZkNjFhMGVkNzI2YmRhZmJlNWFjM2MuLjhjYWZjN2Ix
OGZhYTdjYmViN2UwYWQyY2JjYjAyZjFkYzdkYTI0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJv
bm1lbnQuaD4KIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QpCiB7CkBA
IC0xOTUsNyArMTk0LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3coV2ViS2l0
V2ViVmlldyogdmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYKICNpZiBFTkFCTEUoREVW
RUxPUEVSX01PREUpCiAgICAgLy8gWHZmYiBkb2Vzbid0IHN1cHBvcnQgbWF4aW1pemUsIHNvIHdl
IHJlc2l6ZSB0aGUgd2luZG93IHRvIHRoZSBzY3JlZW4gc2l6ZS4KICAgICBpZiAoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6WDExKSB7Ci0gICAgICAgIGlmIChFbnZpcm9ubWVudDo6aGFzVmFs
dWUoIlVOREVSX1hWRkIiLCAieWVzIikpIHsKKyAgICAgICAgY29uc3QgY2hhciogdW5kZXJYdmZi
ID0gZ19nZXRlbnYoIlVOREVSX1hWRkIiKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAodW5kZXJY
dmZiLCAieWVzIikpIHsKICAgICAgICAgICAgIGF1dG8gc2NyZWVuUmVjdCA9IFdlYkNvcmU6OnNj
cmVlbkF2YWlsYWJsZVJlY3QobnVsbHB0cik7CiAgICAgICAgICAgICBndGtfd2luZG93X21vdmUo
d2luZG93LCBzY3JlZW5SZWN0LngoKSwgc2NyZWVuUmVjdC55KCkpOwogICAgICAgICAgICAgZ3Rr
X3dpbmRvd19yZXNpemUod2luZG93LCBzY3JlZW5SZWN0LndpZHRoKCksIHNjcmVlblJlY3QuaGVp
Z2h0KCkpOwpAQCAtMjQ3LDcgKzI0Nyw4IEBAIHZvaWQgd2Via2l0V2ViVmlld1Jlc3RvcmVXaW5k
b3coV2ViS2l0V2ViVmlldyogdmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAjaWYg
RU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIFh2ZmIgZG9lc24ndCBzdXBwb3J0IG1heGlt
aXplLCBzbyB3ZSByZXNpemUgdGhlIHdpbmRvdyB0byB0aGUgZGVmYXVsdCBzaXplLgogICAgIGlm
IChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKLSAgICAgICAgaWYgKEVudmlyb25t
ZW50OjpoYXNWYWx1ZSgiVU5ERVJfWFZGQiIsICJ5ZXMiKSkgeworICAgICAgICBjb25zdCBjaGFy
KiB1bmRlclh2ZmIgPSBnX2dldGVudigiVU5ERVJfWFZGQiIpOworICAgICAgICBpZiAoIWdfc3Ry
Y21wMCh1bmRlclh2ZmIsICJ5ZXMiKSkgewogICAgICAgICAgICAgaW50IHgsIHk7CiAgICAgICAg
ICAgICBndGtfd2luZG93X2dldF9kZWZhdWx0X3NpemUod2luZG93LCAmeCwgJnkpOwogICAgICAg
ICAgICAgZ3RrX3dpbmRvd19yZXNpemUod2luZG93LCB4LCB5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGQzOWViNzdlOGE0MmQxNDZkMzM0MGMy
ZjFjOTQzNmRmODYwMzZkZjIuLmViMTNiNDNlYjAyYWE3NmU5M2IxYTFkOTk0MDAzMzliZWM0MDcy
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAt
MzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8d3BlL3dwZS5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9u
bWVudC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC03MSw3ICs3MCw3IEBAIFZp
ZXc6OlZpZXcoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0IEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24mIGJhc2VDCiAgICAgbV9wYWdlUHJveHkgPSBwb29sLT5jcmVhdGVXZWJQ
YWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAjaWYgRU5BQkxF
KE1FTU9SWV9TQU1QTEVSKQotICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRfU0FNUExF
X01FTU9SWSIpKQorICAgIGlmIChnZXRlbnYoIldFQktJVF9TQU1QTEVfTUVNT1JZIikpCiAgICAg
ICAgIHBvb2wtPnN0YXJ0TWVtb3J5U2FtcGxlcigwKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZmEwMzRh
MTMyZmM1MTQ2ZWM3OThhZjE3NGUwZTU4OTY0MjlmYjc0Li5jYTM3ODlkZGU2YWQwNjIxMjYwM2I4
MDdmYTlkMjQxZGNiYmEzYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJBdXhp
bGlhcnlQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdl
cy5oIgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsOCArNTEsOCBAQCB2b2lkIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtX3By
b2Nlc3NJZGVudGlmaWVyOwogCi0gICAgaWYgKGF1dG8gdXNlckRpcmVjdG9yeVN1ZmZpeCA9IEVu
dmlyb25tZW50OjpnZXQoIkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgiKSkKLSAgICAgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1
ZmZpeCJfcywgKnVzZXJEaXJlY3RvcnlTdWZmaXgpOworICAgIGlmIChjb25zdCBjaGFyKiB1c2Vy
RGlyZWN0b3J5U3VmZml4ID0gZ2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikpCisg
ICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJ1c2VyLWRp
cmVjdG9yeS1zdWZmaXgiX3MsIHVzZXJEaXJlY3RvcnlTdWZmaXgpOwogCiAgICAgaWYgKG1fYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KQogICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0
eSJfcywgInRydWUiKTsKQEAgLTc3LDkgKzc2LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXUK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBhdXRvIHByb2Nlc3NDbWRQcmVmaXggPSBFbnZpcm9ubWVudDo6Z2V0KHZhcm5hbWUpOwotICAg
IGlmIChwcm9jZXNzQ21kUHJlZml4ICYmICFwcm9jZXNzQ21kUHJlZml4LT5pc0VtcHR5KCkpCi0g
ICAgICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeCA9ICpwcm9jZXNzQ21kUHJlZml4
OworICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NDbWRQcmVmaXggPSBnZXRlbnYodmFybmFtZSk7Cisg
ICAgaWYgKHByb2Nlc3NDbWRQcmVmaXggJiYgKnByb2Nlc3NDbWRQcmVmaXgpCisgICAgICAgIGxh
dW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeCA9IFN0cmluZzo6ZnJvbVVURjgocHJvY2Vzc0Nt
ZFByZWZpeCk7CiAjZW5kaWYgLy8gRU5BQkxFKERFVkVMT1BFUl9NT0RFKSAmJiAoUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpKQogCiAgICAgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKGxh
dW5jaE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IDRmOGE0NjZiY2Y1MGE2
NDEwOWFhYjMwOWRlMTExZTMxNDY2MTEyMTMuLmY4YjEwMmE2OGU5NzFjYzM0ZDNkOTE0ZTg0ZDJh
NGFjNDJmMjgyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c2VjY29tcC5oPgogI2luY2x1ZGUgPHN5cy9p
b2N0bC5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTE2Niw3ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzeW5jRmRTdHIuZ2V0KCksCiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKEVudmlyb25t
ZW50OjpoYXNWYWx1ZSgiV0VCS0lUX0VOQUJMRV9EQlVTX1BST1hZX0xPR0dJTkciLCAiMSIpKQor
ICAgICAgICBpZiAoIWdfc3RyY21wMChnX2dldGVudigiV0VCS0lUX0VOQUJMRV9EQlVTX1BST1hZ
X0xPR0dJTkciKSwgIjEiKSkKICAgICAgICAgICAgIHByb3h5QXJncy5hcHBlbmQoIi0tbG9nIik7
CiAKICAgICAgICAgcHJveHlBcmdzLmFwcGVuZFZlY3RvcihtX3Blcm1pc3Npb25zKTsKQEAgLTI4
Myw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBiaW5kSWZFeGlzdHMoVmVjdG9yPENTdHJpbmc+JiBh
cmdzLCBjb25zdCBjaGFyKiBwYXRoLCBCaW5kRmxhZ3MgYmluZAogc3RhdGljIHZvaWQgYmluZERC
dXNTZXNzaW9uKFZlY3RvcjxDU3RyaW5nPiYgYXJncywgWERHREJ1c1Byb3h5TGF1bmNoZXImIHBy
b3h5KQogewogICAgIGlmICghcHJveHkuaXNSdW5uaW5nKCkpCi0gICAgICAgIHByb3h5LnNldEFk
ZHJlc3MoRW52aXJvbm1lbnQ6OmdldFJhdygiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIiksIERC
dXNBZGRyZXNzVHlwZTo6Tm9ybWFsKTsKKyAgICAgICAgcHJveHkuc2V0QWRkcmVzcyhnX2dldGVu
digiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIiksIERCdXNBZGRyZXNzVHlwZTo6Tm9ybWFsKTsK
IAogICAgIGlmIChwcm94eS5wcm94eVBhdGgoKS5kYXRhKCkpIHsKICAgICAgICAgYXJncy5hcHBl
bmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+KHsKQEAgLTI5NCwyNSArMjkzLDI1IEBAIHN0YXRpYyB2
b2lkIGJpbmREQnVzU2Vzc2lvbihWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIFhER0RCdXNQcm94eUxh
dW5jaGVyJiBwcm94eSkKIAogc3RhdGljIHZvaWQgYmluZFgxMShWZWN0b3I8Q1N0cmluZz4mIGFy
Z3MpCiB7Ci0gICAgY29uc3QgY2hhciogZGlzcGxheSA9IEVudmlyb25tZW50OjpnZXRSYXcoIkRJ
U1BMQVkiKTsKKyAgICBjb25zdCBjaGFyKiBkaXNwbGF5ID0gZ19nZXRlbnYoIkRJU1BMQVkiKTsK
ICAgICBpZiAoIWRpc3BsYXkgfHwgZGlzcGxheVswXSAhPSAnOicgfHwgIWdfYXNjaWlfaXNkaWdp
dChjb25zdF9jYXN0PGNoYXIqPihkaXNwbGF5KVsxXSkpCiAgICAgICAgIGRpc3BsYXkgPSAiOjAi
OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4geDExRmlsZShnX3N0cmR1cF9wcmludGYoIi90bXAvLlgx
MS11bml4L1glcyIsIGRpc3BsYXkgKyAxKSk7CiAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHgxMUZp
bGUuZ2V0KCksIEJpbmRGbGFnczo6UmVhZFdyaXRlKTsKIAotICAgIGlmIChjb25zdCBjaGFyKiB4
YXV0aCA9IEVudmlyb25tZW50OjpnZXRSYXcoIlhBVVRIT1JJVFkiKSkKLSAgICAgICAgYmluZElm
RXhpc3RzKGFyZ3MsIHhhdXRoKTsKLSAgICBlbHNlIHsKKyAgICBjb25zdCBjaGFyKiB4YXV0aCA9
IGdfZ2V0ZW52KCJYQVVUSE9SSVRZIik7CisgICAgaWYgKCF4YXV0aCkgewogICAgICAgICBjb25z
dCBjaGFyKiBob21lRGlyID0gZ19nZXRfaG9tZV9kaXIoKTsKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiB4YXV0aEZpbGUoZ19idWlsZF9maWxlbmFtZShob21lRGlyLCAiLlhhdXRob3JpdHkiLCBu
dWxscHRyKSk7CiAgICAgICAgIGJpbmRJZkV4aXN0cyhhcmdzLCB4YXV0aEZpbGUuZ2V0KCkpOwot
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHhhdXRoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCiBzdGF0aWMgdm9pZCBiaW5kV2F5
bGFuZChWZWN0b3I8Q1N0cmluZz4mIGFyZ3MpCiB7Ci0gICAgY29uc3QgY2hhciogZGlzcGxheSA9
IEVudmlyb25tZW50OjpnZXRSYXcoIldBWUxBTkRfRElTUExBWSIpOworICAgIGNvbnN0IGNoYXIq
IGRpc3BsYXkgPSBnX2dldGVudigiV0FZTEFORF9ESVNQTEFZIik7CiAgICAgaWYgKCFkaXNwbGF5
KQogICAgICAgICBkaXNwbGF5ID0gIndheWxhbmQtMCI7CiAKQEAgLTMyNiw3ICszMjUsOCBAQCBz
dGF0aWMgdm9pZCBiaW5kUHVsc2UoVmVjdG9yPENTdHJpbmc+JiBhcmdzKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgc2VydmVyIGNhbiBiZSBkZWZpbmVkIGluIGNvbmZpZyBmaWxlcyB3ZSdkIGhhdmUg
dG8gcGFyc2UuCiAgICAgLy8gVGhleSBjYW4gYWxzbyBiZSBzZXQgYXMgWDExIHByb3BzIGJ1dCB0
aGF0IGlzIGdldHRpbmcgYSBiaXQgcmlkaWN1bG91cy4KLSAgICBpZiAoY29uc3QgY2hhciogcHVs
c2VTZXJ2ZXIgPSBFbnZpcm9ubWVudDo6Z2V0UmF3KCJQVUxTRV9TRVJWRVIiKSkgeworICAgIGNv
bnN0IGNoYXIqIHB1bHNlU2VydmVyID0gZ19nZXRlbnYoIlBVTFNFX1NFUlZFUiIpOworICAgIGlm
IChwdWxzZVNlcnZlcikgewogICAgICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChwdWxzZVNlcnZl
ciwgInVuaXg6IikpCiAgICAgICAgICAgICBiaW5kSWZFeGlzdHMoYXJncywgcHVsc2VTZXJ2ZXIg
KyA1LCBCaW5kRmxhZ3M6OlJlYWRXcml0ZSk7CiAgICAgICAgIC8vIGVsc2UgaXQgdXNlcyB0Y3AK
QEAgLTMzNiw3ICszMzYsOCBAQCBzdGF0aWMgdm9pZCBiaW5kUHVsc2UoVmVjdG9yPENTdHJpbmc+
JiBhcmdzKQogICAgICAgICBiaW5kSWZFeGlzdHMoYXJncywgcHVsc2VSdW50aW1lRGlyLmdldCgp
LCBCaW5kRmxhZ3M6OlJlYWRXcml0ZSk7CiAgICAgfQogCi0gICAgaWYgKGNvbnN0IGNoYXIqIHB1
bHNlQ29uZmlnID0gRW52aXJvbm1lbnQ6OmdldFJhdygiUFVMU0VfQ0xJRU5UQ09ORklHIikpCisg
ICAgY29uc3QgY2hhciogcHVsc2VDb25maWcgPSBnX2dldGVudigiUFVMU0VfQ0xJRU5UQ09ORklH
Iik7CisgICAgaWYgKHB1bHNlQ29uZmlnKQogICAgICAgICBiaW5kSWZFeGlzdHMoYXJncywgcHVs
c2VDb25maWcpOwogCiAgICAgY29uc3QgY2hhciogY29uZmlnRGlyID0gZ19nZXRfdXNlcl9jb25m
aWdfZGlyKCk7CkBAIC00NDksNyArNDUwLDcgQEAgc3RhdGljIHZvaWQgYmluZEExMXkoVmVjdG9y
PENTdHJpbmc+JiBhcmdzKQogCiBzdGF0aWMgYm9vbCBiaW5kUGF0aFZhcihWZWN0b3I8Q1N0cmlu
Zz4mIGFyZ3MsIGNvbnN0IGNoYXIqIHZhcm5hbWUpCiB7Ci0gICAgY29uc3QgY2hhciogcGF0aFZh
bHVlID0gRW52aXJvbm1lbnQ6OmdldFJhdyh2YXJuYW1lKTsKKyAgICBjb25zdCBjaGFyKiBwYXRo
VmFsdWUgPSBnX2dldGVudih2YXJuYW1lKTsKICAgICBpZiAoIXBhdGhWYWx1ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC00NzYsOCArNDc3LDggQEAgc3RhdGljIHZvaWQgYmluZEdTdHJl
YW1lckRhdGEoVmVjdG9yPENTdHJpbmc+JiBhcmdzKQogICAgIGJpbmRJZkV4aXN0cyhhcmdzLCBn
c3RDYWNoZS5nZXQoKSwgQmluZEZsYWdzOjpSZWFkV3JpdGUpOwogCiAgICAgLy8gL3Vzci9saWIg
aXMgYWxyZWFkeSBhZGRlZCBzbyB0aGlzIGlzIG9ubHkgcmVxdXJpZWQgZm9yIG90aGVyIGRpcnMK
LSAgICBjb25zdCBjaGFyKiBzY2FubmVyUGF0aCA9IEVudmlyb25tZW50OjpnZXRSYXcoIkdTVF9Q
TFVHSU5fU0NBTk5FUiIpID86ICIvdXNyL2xpYmV4ZWMvZ3N0cmVhbWVyLTEuMC9nc3QtcGx1Z2lu
LXNjYW5uZXIiOwotICAgIGNvbnN0IGNoYXIqIGhlbHBlclBhdGggPSBFbnZpcm9ubWVudDo6Z2V0
UmF3KCJHU1RfSU5TVEFMTF9QTFVHSU5TX0hFTFBFUiAiKSA/OiAiL3Vzci9saWJleGVjL2dzdC1p
bnN0YWxsLXBsdWdpbnMtaGVscGVyIjsKKyAgICBjb25zdCBjaGFyKiBzY2FubmVyUGF0aCA9IGdf
Z2V0ZW52KCJHU1RfUExVR0lOX1NDQU5ORVIiKSA/OiAiL3Vzci9saWJleGVjL2dzdHJlYW1lci0x
LjAvZ3N0LXBsdWdpbi1zY2FubmVyIjsKKyAgICBjb25zdCBjaGFyKiBoZWxwZXJQYXRoID0gZ19n
ZXRlbnYoIkdTVF9JTlNUQUxMX1BMVUdJTlNfSEVMUEVSICIpID86ICIvdXNyL2xpYmV4ZWMvZ3N0
LWluc3RhbGwtcGx1Z2lucy1oZWxwZXIiOwogCiAgICAgYmluZElmRXhpc3RzKGFyZ3MsIHNjYW5u
ZXJQYXRoKTsKICAgICBiaW5kSWZFeGlzdHMoYXJncywgaGVscGVyUGF0aCk7CkBAIC03MTksMTIg
KzcyMCwxMiBAQCBHUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nl
c3NMYXVuY2hlciogbGF1bmNoZXIsIGNvbnN0IFByb2NlcwogICAgIC8vIFdlIHdvdWxkIGhhdmUg
dG8gcGFyc2UgbGQgY29uZmlnIGZpbGVzIGZvciBtb3JlIGluZm8uCiAgICAgYmluZFBhdGhWYXIo
c2FuZGJveEFyZ3MsICJMRF9MSUJSQVJZX1BBVEgiKTsKIAotICAgIGF1dG8gbGlicmFyeVBhdGgg
PSBFbnZpcm9ubWVudDo6Z2V0KCJMRF9MSUJSQVJZX1BBVEgiKTsKLSAgICBpZiAobGlicmFyeVBh
dGggJiYgIWxpYnJhcnlQYXRoLT5pc0VtcHR5KCkpIHsKKyAgICBjb25zdCBjaGFyKiBsaWJyYXJ5
UGF0aCA9IGdfZ2V0ZW52KCJMRF9MSUJSQVJZX1BBVEgiKTsKKyAgICBpZiAobGlicmFyeVBhdGgg
JiYgbGlicmFyeVBhdGhbMF0pIHsKICAgICAgICAgLy8gT24gZGlzdHJvcyB1c2luZyBhIHN1aWQg
YndyYXAgaXQgZHJvcHMgdGhpcyBlbnYgdmFyCiAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcGFz
cyBpdCB0aHJvdWdoIHRvIHRoZSBjaGlsZHJlbi4KICAgICAgICAgc2FuZGJveEFyZ3MuYXBwZW5k
VmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7Ci0gICAgICAgICAgICAiLS1zZXRlbnYiLCAiTERfTElC
UkFSWV9QQVRIIiwgbGlicmFyeVBhdGgtPnV0ZjgoKSwKKyAgICAgICAgICAgICItLXNldGVudiIs
ICJMRF9MSUJSQVJZX1BBVEgiLCBsaWJyYXJ5UGF0aCwKICAgICAgICAgfSkpOwogICAgIH0KIApA
QCAtODAzLDggKzgwNCw5IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihH
U3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAgICAgfQogCiAjaWYg
RU5BQkxFKERFVkVMT1BFUl9NT0RFKQotICAgIGlmIChhdXRvIGV4ZWNEaXJlY3RvcnkgPSBFbnZp
cm9ubWVudDo6Z2V0KCJXRUJLSVRfRVhFQ19QQVRIIikpIHsKLSAgICAgICAgYXV0byBwYXJlbnRE
aXIgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeS0+dXRmOCgpLmRhdGEoKSkpOworICAg
IGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIp
OworICAgIGlmIChleGVjRGlyZWN0b3J5KSB7CisgICAgICAgIFN0cmluZyBwYXJlbnREaXIgPSBG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSkpOwogICAgICAgICBiaW5kSWZFeGlzdHMoc2Fu
ZGJveEFyZ3MsIHBhcmVudERpci51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xp
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVu
Y2hlckdMaWIuY3BwCmluZGV4IDU4MDIyZTEwMjkwOWJiZGFlYzBjYzgwODdkN2RkYTNiZTk0MDkw
NjUuLjBjMzkwNzNmZTFkZTdhZGFmNTMxMjY4M2Q4MTY0NjJmNjRkM2VjNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNz
TGF1bmNoZXJHTGliLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAj
aW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmly
b25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KQEAgLTE2NiwxMCArMTY1LDEx
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gcHJvY2VzczsKICNp
ZiBPUyhMSU5VWCkKKyAgICBjb25zdCBjaGFyKiBzYW5kYm94RW52ID0gZ19nZXRlbnYoIldFQktJ
VF9GT1JDRV9TQU5EQk9YIik7CiAgICAgYm9vbCBzYW5kYm94RW5hYmxlZCA9IG1fbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoImVuYWJsZS1zYW5kYm94IikgPT0gInRy
dWUiOwogCi0gICAgaWYgKGF1dG8gc2FuZGJveEVudiA9IEVudmlyb25tZW50OjpnZXQoIldFQktJ
VF9GT1JDRV9TQU5EQk9YIikpCi0gICAgICAgIHNhbmRib3hFbmFibGVkID0gKnNhbmRib3hFbnYg
PT0gIjEiOworICAgIGlmIChzYW5kYm94RW52KQorICAgICAgICBzYW5kYm94RW5hYmxlZCA9ICFz
dHJjbXAoc2FuZGJveEVudiwgIjEiKTsKIAogICAgIGlmIChzYW5kYm94RW5hYmxlZCAmJiBpc0lu
c2lkZUZsYXRwYWsoKSkKICAgICAgICAgcHJvY2VzcyA9IGZsYXRwYWtTcGF3bihsYXVuY2hlci5n
ZXQoKSwgbV9sYXVuY2hPcHRpb25zLCBhcmd2LCBzb2NrZXRQYWlyLmNsaWVudCwgJmVycm9yLm91
dFB0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDkzM2Y1MjJlMDYzZTM5NTQyNzc4ZDE2
OGI2YThhMGJiNTJmNjVkYWYuLjg5NjRkZjNhMmUxM2U5NjgwMTI2ODRiN2I3MjA1NGI4YWRjMGEy
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCA8c3Bh
d24uaD4KICNpbXBvcnQgPHN5cy9wYXJhbS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KLSNpbXBv
cnQgPHd0Zi9FbnZpcm9ubWVudC5oPgogI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNp
bXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTg1
LDcgKzg0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpzeXN0ZW1EaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICBzdGF0aWMgTlNTdHJpbmcgKnBhdGggPSBbXnsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKLSAgICAgICAgY29uc3QgY2hhciogc2ltdWxhdG9yUm9vdCA9IEVudmlyb25tZW50
OjpnZXRSYXcoIlNJTVVMQVRPUl9ST09UIik7CisgICAgICAgIGNoYXIgKnNpbXVsYXRvclJvb3Qg
PSBnZXRlbnYoIlNJTVVMQVRPUl9ST09UIik7CiAgICAgICAgIHJldHVybiBzaW11bGF0b3JSb290
ID8gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcy9TeXN0ZW0vIiwgc2ltdWxhdG9yUm9v
dF0gOiBAIi9TeXN0ZW0vIjsKICNlbHNlCiAgICAgICAgIHJldHVybiBAIi9TeXN0ZW0vIjsKQEAg
LTExOSwxMSArMTE4LDExIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIENsaWVudHMgdGhhdCBzZXQgdGhlc2Ug
ZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4cGxpY2l0bHkgZG8gbm90IGhhdmUgdGhlIHZhbHVlcyBh
dXRvbWF0aWNhbGx5IGZvcndhcmRlZCBieSBsaWJ4cGMuCiAgICAgYXV0byBjb250YWluZXJFbnZp
cm9ubWVudFZhcmlhYmxlcyA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBpZiAoY29uc3QgY2hhciogZW52aXJvbm1lbnRIT01F
ID0gRW52aXJvbm1lbnQ6OmdldFJhdygiSE9NRSIpKQorICAgIGlmIChjb25zdCBjaGFyKiBlbnZp
cm9ubWVudEhPTUUgPSBnZXRlbnYoIkhPTUUiKSkKICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3N0cmluZyhjb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcy5nZXQoKSwgIkhPTUUiLCBlbnZp
cm9ubWVudEhPTUUpOwotICAgIGlmIChjb25zdCBjaGFyKiBlbnZpcm9ubWVudENGRklYRURfVVNF
Ul9IT01FID0gRW52aXJvbm1lbnQ6OmdldFJhdygiQ0ZGSVhFRF9VU0VSX0hPTUUiKSkKKyAgICBp
ZiAoY29uc3QgY2hhciogZW52aXJvbm1lbnRDRkZJWEVEX1VTRVJfSE9NRSA9IGdldGVudigiQ0ZG
SVhFRF9VU0VSX0hPTUUiKSkKICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhjb250
YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcy5nZXQoKSwgIkNGRklYRURfVVNFUl9IT01FIiwgZW52
aXJvbm1lbnRDRkZJWEVEX1VTRVJfSE9NRSk7Ci0gICAgaWYgKGNvbnN0IGNoYXIqIGVudmlyb25t
ZW50VE1QRElSID0gRW52aXJvbm1lbnQ6OmdldFJhdygiVE1QRElSIikpCisgICAgaWYgKGNvbnN0
IGNoYXIqIGVudmlyb25tZW50VE1QRElSID0gZ2V0ZW52KCJUTVBESVIiKSkKICAgICAgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3N0cmluZyhjb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcy5nZXQo
KSwgIlRNUERJUiIsIGVudmlyb25tZW50VE1QRElSKTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRf
dmFsdWUoaW5pdGlhbGl6YXRpb25NZXNzYWdlLmdldCgpLCAiQ29udGFpbmVyRW52aXJvbm1lbnRW
YXJpYWJsZXMiLCBjb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcy5nZXQoKSk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCA4Y2MzYzk2MTI2ODNlNmFiMmFmM2Y3YTRlMzZjYWM1YjVkYmZkZjdhLi5hMmEx
NjBiZTY4NjRhYmRkZDQ2ZDc4OTk0YmFlMDBjNmRjZDUwMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR1N0cmVhbWVyQ29tbW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTYzLDEzICs2MiwxNCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyKGNvbnN0IGNoYXIqIGFkZHJlc3MpCiAKIHN0YXRpYyBib29sIG1lbW9yeVByZXNzdXJlTW9u
aXRvckRpc2FibGVkKCkKIHsKLSAgICByZXR1cm4gRW52aXJvbm1lbnQ6Omhhc1ZhbHVlKCJXRUJL
SVRfRElTQUJMRV9NRU1PUllfUFJFU1NVUkVfTU9OSVRPUiIsICIxIik7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRpc2FibGVNZW1vcnlQcmVzc3VyZU1vbml0b3IgPSBnZXRlbnYoIldFQktJVF9E
SVNBQkxFX01FTU9SWV9QUkVTU1VSRV9NT05JVE9SIik7CisgICAgcmV0dXJuIGRpc2FibGVNZW1v
cnlQcmVzc3VyZU1vbml0b3IgJiYgIXN0cmNtcChkaXNhYmxlTWVtb3J5UHJlc3N1cmVNb25pdG9y
LCAiMSIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
ewogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGlmIChjb25zdCBjaGFyKiBhZGRy
ZXNzID0gRW52aXJvbm1lbnQ6OmdldFJhdygiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkKKyAg
ICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NF
UlZFUiIpKQogICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKGFkZHJlc3Mp
OwogI2VuZGlmCiAKQEAgLTg5LDcgKzg5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogI2lm
IFBMQVRGT1JNKEdUSykKICAgICAvLyBUaGlzIGlzIG1pc25hbWVkLiBJdCBjYW4gb25seSBiZSB1
c2VkIHRvIGRpc2FibGUgY29tcGxleCB0ZXh0LgogICAgIHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlz
VXNlQ29tcGxleFRleHRDb2RlUGF0aCA9IHRydWU7Ci0gICAgaWYgKEVudmlyb25tZW50OjpoYXNW
YWx1ZSgiV0VCS0lUX0ZPUkNFX0NPTVBMRVhfVEVYVCIsICIwIikpCisgICAgY29uc3QgY2hhciog
Zm9yY2VDb21wbGV4VGV4dCA9IGdldGVudigiV0VCS0lUX0ZPUkNFX0NPTVBMRVhfVEVYVCIpOwor
ICAgIGlmIChmb3JjZUNvbXBsZXhUZXh0ICYmICFzdHJjbXAoZm9yY2VDb21wbGV4VGV4dCwgIjAi
KSkKICAgICAgICAgcGFyYW1ldGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRo
ID0gbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aDsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9IYXJkd2FyZUFjY2VsZXJhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IDczNjZlYTMzZTk2ZmYxY2FmOTU2MTY2N2IzZDY4NWUxNTMyY2EyN2Uu
LjQ1NzYwZWVlZWQ5ZmY0Y2NlNzRjY2RkNzI3OGQ3Y2ZkN2Y1ZWNlYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9IYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9IYXJkd2FyZUFjY2VsZXJhdGlvbk1h
bmFnZXIuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3Iu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybURpc3BsYXkuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KIAogI2lm
IFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1EaXNwbGF5WDExLmg+CkBAIC01Myw3ICs1Miw4IEBAIEhhcmR3YXJlQWNjZWxlcmF0aW9u
TWFuYWdlcjo6SGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyKCkKICAgICByZXR1cm47CiAjZW5k
aWYKIAotICAgIGlmIChFbnZpcm9ubWVudDo6aGFzVmFsdWVPdGhlclRoYW4oIldFQktJVF9ESVNB
QkxFX0NPTVBPU0lUSU5HX01PREUiLCAiMCIpKSB7CisgICAgY29uc3QgY2hhciogZGlzYWJsZUNv
bXBvc2l0aW5nID0gZ2V0ZW52KCJXRUJLSVRfRElTQUJMRV9DT01QT1NJVElOR19NT0RFIik7Cisg
ICAgaWYgKGRpc2FibGVDb21wb3NpdGluZyAmJiBzdHJjbXAoZGlzYWJsZUNvbXBvc2l0aW5nLCAi
MCIpKSB7CiAgICAgICAgIG1fY2FuVXNlSGFyZHdhcmVBY2NlbGVyYXRpb24gPSBmYWxzZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc4LDcgKzc4LDggQEAgSGFyZHdhcmVBY2NlbGVyYXRp
b25NYW5hZ2VyOjpIYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIoKQogICAgIH0KICNlbmRpZgog
Ci0gICAgaWYgKEVudmlyb25tZW50OjpoYXNWYWx1ZU90aGVyVGhhbigiV0VCS0lUX0ZPUkNFX0NP
TVBPU0lUSU5HX01PREUiLCAiMCIpKQorICAgIGNvbnN0IGNoYXIqIGZvcmNlQ29tcG9zaXRpbmcg
PSBnZXRlbnYoIldFQktJVF9GT1JDRV9DT01QT1NJVElOR19NT0RFIik7CisgICAgaWYgKGZvcmNl
Q29tcG9zaXRpbmcgJiYgc3RyY21wKGZvcmNlQ29tcG9zaXRpbmcsICIwIikpCiAgICAgICAgIG1f
Zm9yY2VIYXJkd2FyZUFjY2VsZXJhdGlvbiA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5j
cHAKaW5kZXggMWQ5YmFmZWI1OWFlYjk5MTY5M2M0ODM1MzE5NmRjMGY4YmI4ODY3Mi4uZWVkZDQ0
MjViN2ZlZjY4YmU4NzY5Yzk5MGQxNTc1ZmQ1ZmNlZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5j
cHAKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluVW5p
eC5oIgogCi0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CisjaW5jbHVkZSA8Y3N0ZGxpYj4K
IAogI2lmIFVTRShHQ1JZUFQpCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSW5pdGlhbGl6
YXRpb24uaD4KQEAgLTQzLDggKzQyLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogICAgIC8vIEdudVRMUyBvciBzaW1wbHkgc3RvcHMgcGFyc2luZyB0aGlzIHZhcmlhYmxlLiBX
ZSBpbnRlbnRpb25hbGx5IGRvIG5vdAogICAgIC8vIG92ZXJ3cml0ZSB0aGlzIHByaW9yaXR5IHN0
cmluZyBpZiBpdCdzIGFscmVhZHkgc2V0IGJ5IHRoZSB1c2VyLgogICAgIC8vIGh0dHBzOi8vYnVn
emlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg2MzMKLSAgICAvLyBXQVJOSU5HOiBU
aGlzIG5lZWRzIHRvIGJlIEtFUFQgSU4gU1lOQyB3aXRoIE5ldHdvcmtQcm9jZXNzTWFpbi5jcHAu
Ci0gICAgRW52aXJvbm1lbnQ6OnNldElmTm90RGVmaW5lZCgiR19UTFNfR05VVExTX1BSSU9SSVRZ
IiwgIk5PUk1BTDolQ09NUEFUOiFWRVJTLVNTTDMuMDohQVJDRk9VUi0xMjgiKTsKKyAgICAvLyBX
QVJOSU5HOiBUaGlzIG5lZWRzIHRvIGJlIEtFUFQgSU4gU1lOQyB3aXRoIFdlYlByb2Nlc3NNYWlu
LmNwcC4KKyAgICBzZXRlbnYoIkdfVExTX0dOVVRMU19QUklPUklUWSIsICJOT1JNQUw6JUNPTVBB
VDohVkVSUy1TU0wzLjA6IUFSQ0ZPVVItMTI4IiwgMCk7CiAKICNpZiBVU0UoR0NSWVBUKQogICAg
IFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IDEwZGNjYmJjYTU5ZjEyMDI0NjQ3
Y2ZiNzdmMWUyYjY0NDYyNDlkZTkuLmI1ZjdhYzQ4OWQyOGRkMDhmNWJiMjEwZjQxMzg3NmQzMWQw
N2NjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c01haW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c01haW5HdGsuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPGxpYmludGwuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvRW52aXJvbm1lbnQuaD4KIAogI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxYMTEvWGxp
Yi5oPgpAQCAtNDcsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxp
emUoKSBvdmVycmlkZQogICAgIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmIChFbnZpcm9u
bWVudDo6Z2V0KCJXRUJLSVQyX1BBVVNFX1dFQl9QUk9DRVNTX09OX0xBVU5DSCIpKQorICAgICAg
ICBpZiAoZ19nZXRlbnYoIldFQktJVDJfUEFVU0VfV0VCX1BST0NFU1NfT05fTEFVTkNIIikpCiAg
ICAgICAgICAgICBnX3VzbGVlcCgzMCAqIEdfVVNFQ19QRVJfU0VDKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NNYWluV1BFLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc01haW5XUEUuY3BwCmlu
ZGV4IGVmNGRmZGJjZmZkYjE5Mzk1OWFmZjlkZDE5OTM5ZjMyNTNmYWY2NDAuLjEzMTkyYjQ0ZDQz
NmUyMmU5NzRkM2I2NzMzZGE1NGVjN2MzMWU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc01haW5XUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc01haW5XUEUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAj
aW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8
d3BlL3dwZS5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQogICAgIHsKICNpZiBFTkFC
TEUoREVWRUxPUEVSX01PREUpCi0gICAgICAgIGlmIChFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVQy
X1BBVVNFX1dFQl9QUk9DRVNTX09OX0xBVU5DSCIpKQorICAgICAgICBpZiAoZ19nZXRlbnYoIldF
QktJVDJfUEFVU0VfV0VCX1BST0NFU1NfT05fTEFVTkNIIikpCiAgICAgICAgICAgICBXVEY6OnNs
ZWVwKDMwX3MpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggNjFmYmFiOTc4NjA5YTYzZTJjZGYwZWZhMGQ1MDM0ODk0
NWRkZGM3NC4uYWQ2ZmU1NGExYjIwZTdkNmU1MGZhNzViODc2YzBjZjdkYmFkZGQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTM4
LDcgKzM4LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBvcnQgPHd0Zi9FbnZpcm9ubWVudC5oPgog
I2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTEwNyw3ICsxMDYsNyBAQCBjb25zdCBjaGFyICpXZWJLaXRQbGF0Zm9ybVN5c3Rl
bVJvb3REaXJlY3Rvcnkodm9pZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikK
ICAgICBzdGF0aWMgY29uc3QgY2hhciAqcGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5ID0gbmls
OwogICAgIGlmICghcGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5KSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIHNpbXVsYXRvclJvb3QgPSBFbnZpcm9ubWVudDo6Z2V0UmF3KCJJUEhPTkVfU0lNVUxB
VE9SX1JPT1QiKTsKKyAgICAgICAgY2hhciAqc2ltdWxhdG9yUm9vdCA9IGdldGVudigiSVBIT05F
X1NJTVVMQVRPUl9ST09UIik7CiAgICAgICAgIHBsYXRmb3JtU3lzdGVtUm9vdERpcmVjdG9yeSA9
IHNpbXVsYXRvclJvb3QgPyBzaW11bGF0b3JSb290IDogIi8iOwogICAgIH0KICAgICByZXR1cm4g
cGxhdGZvcm1TeXN0ZW1Sb290RGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDNlOGQ2YjU4MzE0MjhjZDAwYmU1ODhjNjgyNmYwNDFiN2U1
NzFhYjguLjQ4MGY4ODUwMmNiNWJkNTVkN2VhNmQ2NzAyYTZjNjk3NjUyMGMwMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIzMiw3ICsyMzIsNiBA
QAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPHBh
bC9zcGkvbWFjL05TV2luZG93U1BJLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lt
cG9ydCA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0x
NjA3LDcgKzE2MDYsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3Zp
ZGVySWZOZWNlc3NhcnkoKQogICAgIC8vIG5lZWQgZm9yIFNhZmFyaSB0byB1bnNldCBpdCB0byBw
cmV2ZW50IGl0IGZyb20gYmVpbmcgcGFzc2VkIHRvIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcy4K
ICAgICAvLyBVbnNldHRpbmcgaXQgd2hlbiBhIFdlYlZpZXcgaXMgZmlyc3QgY3JlYXRlZCBpcyBh
cyBnb29kIGEgcGxhY2UgYXMgYW55LgogICAgIC8vIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDI4Nj4gZm9yIG1vcmUgZGV0YWlscy4KLSAgICBpZiAoRW52aXJv
bm1lbnQ6OmdldCgiV0VCS0lUX1VOU0VUX0RZTERfRlJBTUVXT1JLX1BBVEgiKSkgeworICAgIGlm
IChnZXRlbnYoIldFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIIikpIHsKICAgICAgICAg
dW5zZXRlbnYoIkRZTERfRlJBTUVXT1JLX1BBVEgiKTsKICAgICAgICAgdW5zZXRlbnYoIldFQktJ
VF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZmZTA1ZmZiMmI3ZTIwNmYzNTFkZjI4
YmZlZTFkZDhmZWNjMDgwMWEuLjRkOGRjNWI4NTFlNDBlZjJmMGFlN2MxNWM2NjM2ZTA1Y2EwODdl
MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxOS0wMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0MTU1OSBhbmQg
cjI0MTU2Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDcxMAorCisgICAgICAgIENhdXNlcyBsYXlvdXQgdGVzdCBjcmFzaGVzIHVuZGVyIEd1YXJk
TWFsbG9jIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbV1RGXSBBZGQgZW52aXJv
bm1lbnQgdmFyaWFibGUgaGVscGVycyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjQwNQorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjQxNTU5CisKKyAgICAgICAgIlVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBXaW5D
YWlybyBEZWJ1ZyBhZnRlciByMjQxNTU5LiIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzI0MTU2NgorCiAyMDE5LTAyLTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gT3V0LW9mLWZsb3cgYm94IGlzIG5ldmVyIGEgZmxv
YXQgYm94CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXgg
ZDc5ZWNiM2YxNmI2NTYwMWFlYmMyNGM4YWM0YTQ2YTRhNWUzNWQ0ZS4uYjA1MjQxMmIwZmMzZDFi
OWE5ZGYxMzQwZjJmNTZjZjgzOTRiY2Y2YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQpAQCAtOTEsNyArOTEsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxnZXRvcHQuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW1wb3J0IDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW1wb3J0IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW1wb3J0IDx3dGYvT2Jq
Q1J1bnRpbWVFeHRyYXMuaD4KQEAgLTg0NCwxMCArODQzLDExIEBAIHN0YXRpYyB2b2lkIGRlc3Ry
b3lXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KFdlYlZpZXcgKndlYlZpZXcpCiAKIHN0YXRpYyBO
U1N0cmluZyAqbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJlZSgpCiB7Ci0gICAgaWYgKGNvbnN0
IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IEVudmlyb25tZW50OjpnZXRSYXcoIkRVTVBSRU5E
RVJUUkVFX1RFTVAiKSkKKyAgICBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBnZXRlbnYoIkRV
TVBSRU5ERVJUUkVFX1RFTVAiKTsKKyAgICBpZiAoZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOmR1bXBSZW5kZXJUcmVlVGVtcCBsZW5ndGg6c3RybGVuKGR1bXBS
ZW5kZXJUcmVlVGVtcCldOwotCi0gICAgcmV0dXJuIFtAIn4vTGlicmFyeS9BcHBsaWNhdGlvbiBT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiBbQCJ+L0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF07CiB9CiAKIHN0YXRp
YyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFdlYlByZWZlcmVuY2VzKiBwcmVmZXJl
bmNlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IDEwN2FkMGM4ODg3OGRhNDBmZmM4NzVhZTQzNjczMTM3OGZkNzQzYzIuLjM3NjRmY2RkMGM1MGMz
MTY0ODQ4NWM5OWIwZDQzMzg0YWI2NjIwZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgPHNobHdhcGku
aD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3
dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0yMTUs
MTQgKzIxNCwxNiBAQCBzdGF0aWMgc3RyaW5nIHRvVVRGOChjb25zdCB3Y2hhcl90KiB3aWRlU3Ry
aW5nLCBzaXplX3QgbGVuZ3RoKQogI2lmIFVTRShDRikKIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBh
dGhGb3JEdW1wUmVuZGVyVHJlZSgpCiB7Ci0gICAgYXV0byBwYXRoID0gRW52aXJvbm1lbnQ6Omdl
dChkdW1wUmVuZGVyVHJlZVRlbXApOwotICAgIGlmICghcGF0aCB8fCBwYXRoLT5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKLQotICAgIGlmICghcGF0aC0+ZW5kc1dpdGgoJ1xcJykpCi0gICAgICAgIHBhdGgt
PmFwcGVuZCgnXFwnKTsKKyAgICBEV09SRCBzaXplID0gOjpHZXRFbnZpcm9ubWVudFZhcmlhYmxl
KGR1bXBSZW5kZXJUcmVlVGVtcCwgMCwgMCk7CisgICAgVmVjdG9yPFRDSEFSPiBidWZmZXIoc2l6
ZSk7CisgICAgaWYgKDo6R2V0RW52aXJvbm1lbnRWYXJpYWJsZShkdW1wUmVuZGVyVHJlZVRlbXAs
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKSB7CisgICAgICAgIHdzdHJpbmcgcGF0aCA9
IGJ1ZmZlci5kYXRhKCk7CisgICAgICAgIGlmICghcGF0aC5lbXB0eSgpICYmIChwYXRoW3BhdGgu
bGVuZ3RoKCkgLSAxXSAhPSBMJ1xcJykpCisgICAgICAgICAgICBwYXRoLmFwcGVuZChMIlxcIik7
CisgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRoLmxlbmd0aCgpKTsKKyAg
ICB9CiAKLSAgICByZXR1cm4gKnBhdGg7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAKaW5kZXgg
ZTJlNjUxNzIyMGUxNDY2ZGY5NzE5MzRjYzY2OTI5YTFjMzc0NjhmMi4uYmMzMTJiZjgyY2QzYjZl
ZmFhNzEzMDAxNWFhZTgwOTE4ODJmNzE1MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogCiBzdGF0aWMg
aW50IHN0ZGluU29ja2V0Owogc3RhdGljIGludCBzdGRvdXRTb2NrZXQ7CkBAIC00OSwxMCArNDgs
MTEgQEAgc3RhdGljIGludCBjb25uZWN0VG9TZXJ2ZXIoc29ja2FkZHJfaW4mIHNlcnZlckFkZHJl
c3MpCiAKIHZvaWQgc2V0VXBJT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpCiB7Ci0gICAgYXV0
byBwb3J0ID0gRW52aXJvbm1lbnQ6OmdldEludCgiUE9SVCIpOwotICAgIGlmICghcG9ydCkKKyAg
ICBjaGFyKiBwb3J0RnJvbUVudmlyb25tZW50ID0gZ2V0ZW52KCJQT1JUIik7CisgICAgaWYgKCFw
b3J0RnJvbUVudmlyb25tZW50KQogICAgICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQo
KnBvcnQgPiAwKTsKKyAgICBpbnQgcG9ydCA9IGF0b2kocG9ydEZyb21FbnZpcm9ubWVudCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQocG9ydCA+IDApOwogICAgIGlzVXNpbmdUQ1AgPSB0cnVlOwogCiAg
ICAgc3RydWN0IGhvc3RlbnQqIGhvc3QgPSBnZXRob3N0YnluYW1lKCIxMjcuMC4wLjEiKTsKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBzZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCkKICAg
ICAgICAgKGNoYXIqKSZzZXJ2ZXJBZGRyZXNzLnNpbl9hZGRyLnNfYWRkciwKICAgICAgICAgKGNo
YXIqKWhvc3QtPmhfYWRkciwKICAgICAgICAgaG9zdC0+aF9sZW5ndGgpOwotICAgIHNlcnZlckFk
ZHJlc3Muc2luX3BvcnQgPSBodG9ucygqcG9ydCk7CisgICAgc2VydmVyQWRkcmVzcy5zaW5fcG9y
dCA9IGh0b25zKHBvcnQpOwogICAgIAogICAgIC8vIFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUgc2Vy
dmVyIHNpZGUgbGlzdGVuZXIgaW4gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRv
cl9wcm9jZXNzLnB5IFNpbXVsYXRvclByb2Nlc3MuX3N0YXJ0KCkKICAgICBzdGRpblNvY2tldCA9
IGNvbm5lY3RUb1NlcnZlcihzZXJ2ZXJBZGRyZXNzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9FbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3Bw
CmluZGV4IDIwNGQ4NjBlMTIwYTQzZGRmZTJmMDUxMThjOTI3MDllNDJiZTlhZTAuLmUxZGU4MzI2
NWZiZjcxZGM2ODNlN2YzYzUxYjU1M2NiMzc3Y2E4YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Vudmlyb25tZW50VXRpbGl0aWVzVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSA8V2ViS2l0L0Vudmlyb25tZW50VXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50
Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNDAsNyArMzksNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaXAoY29uc3QgY2hhciogaW5wdXQpCiB7CiAgICAgc2V0ZW52KGVu
dmlyb25tZW50VmFyaWFibGUsIGlucHV0LCAxKTsKICAgICBXZWJLaXQ6OkVudmlyb25tZW50VXRp
bGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoZW52aXJvbm1lbnRWYXJpYWJsZSwg
c3RyaXBWYWx1ZSk7Ci0gICAgcmV0dXJuIEVudmlyb25tZW50OjpnZXRSYXcoZW52aXJvbm1lbnRW
YXJpYWJsZSk7CisgICAgcmV0dXJuIGdldGVudihlbnZpcm9ubWVudFZhcmlhYmxlKTsKIH0KIAog
VEVTVChXZWJLaXQsIFN0cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKaW5kZXggMTNmMjBlMjQ5MjJhY2JlNTkzODEyMzYzZGUxYWYyMzI0NmE1ZTM2
Ny4uOTk4YWIyZjJhMjljMjZmN2ZhNjVkMmI4MWU5ZTFlZjI3YjRlNWQzYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgIlRlc3RNYWlu
LmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgog
I2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCkBAIC0zNDQsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgdGVzdEF1dG9tYXRpb25TZXNzaW9u
QXBwbGljYXRpb25JbmZvKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHZvaWQgYmVmb3Jl
QWxsKCkKIHsKLSAgICBFbnZpcm9ubWVudDo6c2V0KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIs
ICIxMjcuMC4wLjE6MjIyOSIpOworICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
UiIsICIxMjcuMC4wLjE6MjIyOSIsIFRSVUUpOwogCiAgICAgQXV0b21hdGlvblRlc3Q6OmFkZCgi
V2ViS2l0QXV0b21hdGlvblNlc3Npb24iLCAicmVxdWVzdC1zZXNzaW9uIiwgdGVzdEF1dG9tYXRp
b25TZXNzaW9uUmVxdWVzdFNlc3Npb24pOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0QXV0b21hdGlv
blNlc3Npb24iLCAiYXBwbGljYXRpb24taW5mbyIsIHRlc3RBdXRvbWF0aW9uU2Vzc2lvbkFwcGxp
Y2F0aW9uSW5mbyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9UZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5jcHAKaW5kZXggZGQ2MGI1MTg1NGUyMDIwOGRjMzRhN2I1MzkwMDUzODg3NjYxMzBj
MC4uYTE1NWE1MTAwYTZiYmFlZGYwYWUxYjUyNzY5YTczODcxOGEwZjVjZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMjEsNyAr
MjEsNiBAQAogI2luY2x1ZGUgIlRlc3RNYWluLmgiCiAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5o
PgotI2luY2x1ZGUgPHd0Zi9FbnZpcm9ubWVudC5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTY3LDE5ICs2NiwxOSBAQCBzdGF0aWMgdm9pZCByZW1vdmVO
b25FbXB0eURpcmVjdG9yeShjb25zdCBjaGFyKiBkaXJlY3RvcnlQYXRoKQogCiBpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgRW52aXJvbm1lbnQ6OnJlbW92ZSgiREJVU19T
RVNTSU9OX0JVU19BRERSRVNTIik7CisgICAgZ191bnNldGVudigiREJVU19TRVNTSU9OX0JVU19B
RERSRVNTIik7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZh
cmd2LCBudWxscHRyKTsKICNlbHNlCiAgICAgZ190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBudWxs
cHRyKTsKICNlbmRpZgotICAgIEVudmlyb25tZW50OjpzZXRJZk5vdERlZmluZWQoIldFQktJVF9F
WEVDX1BBVEgiLCBXRUJLSVRfRVhFQ19QQVRIKTsKLSAgICBFbnZpcm9ubWVudDo6c2V0SWZOb3RE
ZWZpbmVkKCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiLCBXRUJLSVRfSU5KRUNURURfQlVO
RExFX1BBVEgpOwotICAgIEVudmlyb25tZW50OjpzZXQoIkxDX0FMTCIsICJDIik7Ci0gICAgRW52
aXJvbm1lbnQ6OnNldCgiR0lPX1VTRV9WRlMiLCAibG9jYWwiKTsKLSAgICBFbnZpcm9ubWVudDo6
c2V0KCJHU0VUVElOR1NfQkFDS0VORCIsICJtZW1vcnkiKTsKKyAgICBnX3NldGVudigiV0VCS0lU
X0VYRUNfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEgsIEZBTFNFKTsKKyAgICBnX3NldGVudigiV0VC
S0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIIiwgV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRILCBG
QUxTRSk7CisgICAgZ19zZXRlbnYoIkxDX0FMTCIsICJDIiwgVFJVRSk7CisgICAgZ19zZXRlbnYo
IkdJT19VU0VfVkZTIiwgImxvY2FsIiwgVFJVRSk7CisgICAgZ19zZXRlbnYoIkdTRVRUSU5HU19C
QUNLRU5EIiwgIm1lbW9yeSIsIFRSVUUpOwogICAgIC8vIEdldCByaWQgb2YgcnVudGltZSB3YXJu
aW5ncyBhYm91dCBkZXByZWNhdGVkIHByb3BlcnRpZXMgYW5kIHNpZ25hbHMsIHNpbmNlIHRoZXkg
YnJlYWsgdGhlIHRlc3RzLgotICAgIEVudmlyb25tZW50OjpzZXQoIkdfRU5BQkxFX0RJQUdOT1NU
SUMiLCAiMCIpOworICAgIGdfc2V0ZW52KCJHX0VOQUJMRV9ESUFHTk9TVElDIiwgIjAiLCBUUlVF
KTsKICAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3JnLyIpOwogCiAg
ICAgcmVnaXN0ZXJHUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RCdXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKaW5kZXggNWEzZDVjNDA5MTM3OGY4ZWE0
Y2E3YjIyODczYmNiMzIzMzQwMmE1NS4uYmE2NDc2YzhkYTE1YmI0YjNiODQ2NjQwYWEzOTdhNTY3
ZDY0NTI1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAKLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1l
bnQuaD4KLQogV2ViS2l0VGVzdEJ1czo6V2ViS2l0VGVzdEJ1cygpCiAgICAgOiBtX2J1cyhhZG9w
dEdSZWYoZ190ZXN0X2RidXNfbmV3KEdfVEVTVF9EQlVTX05PTkUpKSkKIHsKQEAgLTM0LDE0ICsz
MiwxNCBAQCBXZWJLaXRUZXN0QnVzOjp+V2ViS2l0VGVzdEJ1cygpCiAKIGJvb2wgV2ViS2l0VGVz
dEJ1czo6cnVuKCkKIHsKLSAgICBhdXRvIGRpc3BsYXkgPSBFbnZpcm9ubWVudDo6Z2V0KCJESVNQ
TEFZIik7Ci0gICAgYXV0byBydW50aW1lRGlyID0gRW52aXJvbm1lbnQ6OmdldCgiWERHX1JVTlRJ
TUVfRElSIik7CisgICAgQ1N0cmluZyBkaXNwbGF5ID0gZ19nZXRlbnYoIkRJU1BMQVkiKTsKKyAg
ICBDU3RyaW5nIHJ1bnRpbWVEaXIgPSBnX2dldGVudigiWERHX1JVTlRJTUVfRElSIik7CiAgICAg
Z190ZXN0X2RidXNfdXAobV9idXMuZ2V0KCkpOwogICAgIG1fYWRkcmVzcyA9IGdfdGVzdF9kYnVz
X2dldF9idXNfYWRkcmVzcyhtX2J1cy5nZXQoKSk7Ci0gICAgaWYgKGRpc3BsYXkpCi0gICAgICAg
IEVudmlyb25tZW50OjpzZXRJZk5vdERlZmluZWQoIkRJU1BMQVkiLCAqZGlzcGxheSk7Ci0gICAg
aWYgKHJ1bnRpbWVEaXIpCi0gICAgICAgIEVudmlyb25tZW50OjpzZXRJZk5vdERlZmluZWQoIlhE
R19SVU5USU1FX0RJUiIsICpydW50aW1lRGlyKTsKKyAgICBpZiAoIWRpc3BsYXkuaXNOdWxsKCkp
CisgICAgICAgIGdfc2V0ZW52KCJESVNQTEFZIiwgZGlzcGxheS5kYXRhKCksIEZBTFNFKTsKKyAg
ICBpZiAoIXJ1bnRpbWVEaXIuaXNOdWxsKCkpCisgICAgICAgIGdfc2V0ZW52KCJYREdfUlVOVElN
RV9ESVIiLCBydW50aW1lRGlyLmRhdGEoKSwgRkFMU0UpOwogICAgIHJldHVybiAhbV9hZGRyZXNz
LmlzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2d0ay9BY3RpdmF0ZUZvbnRzR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCmluZGV4IDVlOGM2OWE4
ZmRkNGQ4NGJhZGI2NzhkYzIwYTMyZWNjNzIwODViNWEuLjNmOGUyNDQwZjI4M2U0YjRlNTQyN2Fk
NjQ0ZDJiM2I0ZTMxOTY1YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVk
ZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAtNTUsOCArNTQsOSBAQCB2
b2lkIGluaXRpYWxpemVHdGtTZXR0aW5ncygpCiAKIENTdHJpbmcgZ2V0T3V0cHV0RGlyKCkKIHsK
LSAgICBpZiAoYXV0byB3ZWJraXRPdXRwdXREaXIgPSBFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRf
T1VUUFVURElSIikpCi0gICAgICAgIHJldHVybiB3ZWJraXRPdXRwdXREaXItPnV0ZjgoKTsKKyAg
ICBjb25zdCBjaGFyKiB3ZWJraXRPdXRwdXREaXIgPSBnX2dldGVudigiV0VCS0lUX09VVFBVVERJ
UiIpOworICAgIGlmICh3ZWJraXRPdXRwdXREaXIpCisgICAgICAgIHJldHVybiB3ZWJraXRPdXRw
dXREaXI7CiAKICAgICBDU3RyaW5nIHRvcExldmVsUGF0aCA9IFdUUjo6dG9wTGV2ZWxQYXRoKCk7
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXREaXIoZ19idWlsZF9maWxlbmFtZSh0b3BMZXZl
bFBhdGguZGF0YSgpLCAiV2ViS2l0QnVpbGQiLCBudWxscHRyKSk7CkBAIC04MCw3ICs4MCw3IEBA
IHN0YXRpYyBDU3RyaW5nIGdldEZvbnRzUGF0aCgpCiAKIHZvaWQgaW5pdGlhbGl6ZUZvbnRDb25m
aWdTZXR0aW5nKCkKIHsKLSAgICBpZiAoRW52aXJvbm1lbnQ6OmdldCgiV0VCS0lUX1NLSVBfV0VC
S0lUVEVTVFJVTk5FUl9GT05UQ09ORklHX0lOSVRJQUxJWkFUSU9OIikpCisgICAgaWYgKGdfZ2V0
ZW52KCJXRUJLSVRfU0tJUF9XRUJLSVRURVNUUlVOTkVSX0ZPTlRDT05GSUdfSU5JVElBTElaQVRJ
T04iKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmNJbml0KCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZUd0ay5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1
bmRsZUd0ay5jcHAKaW5kZXggMjQ5ODEyZjg1Njc3MDc3NTcyZWI0YTQ3YjdjNmIxN2VhMDg4NDVi
ZC4uYmEwODQzMWM0Y2Q3YmE3Y2UwNTI4NTE0MDdmNWJmNTNkNTBlNGU2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRCdW5kbGVH
dGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0lu
amVjdGVkQnVuZGxlR3RrLmNwcApAQCAtNDUsNyArNDUsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVmKQogICAgIC8vIG1lc3NhZ2VzIHNlbnQgdG8g
dGhlIGxvZ2dlci4KICAgICBnX2xvZ19zZXRfZGVmYXVsdF9oYW5kbGVyKGxvZ0hhbmRsZXIsIDAp
OwogCi0gICAgZ19zZXRlbnYoIldFQktJVF9UT1BfTEVWRUwiLCBUT1BfTEVWRUxfRElSLCBGQUxT
RSk7CisgICAgaWYgKCFnX2dldGVudigiV0VCS0lUX1RPUF9MRVZFTCIpKQorICAgICAgICBnX3Nl
dGVudigiV0VCS0lUX1RPUF9MRVZFTCIsIFRPUF9MRVZFTF9ESVIsIEZBTFNFKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZVV0aWxpdGllcy5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZVV0aWxpdGllcy5jcHAK
aW5kZXggOTI3Nzc2Njc1NjFhMWUzM2QzNmU0YTQ4NjFiYTM1YmFjZTVhNmY3My4uYWZiZDNmNzRh
MWQ2MGQ3MzE4ZDRiNzk4ZDA5NDMyMGQ5Y2E2OTJlZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVk
QnVuZGxlVXRpbGl0aWVzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlVXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3Rm
L0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAtMzgsOCArMzcsOCBAQCBuYW1lc3Bh
Y2UgV1RSIHsKIAogQ1N0cmluZyB0b3BMZXZlbFBhdGgoKQogewotICAgIGlmIChhdXRvIHRvcExl
dmVsRGlyZWN0b3J5ID0gRW52aXJvbm1lbnQ6OmdldCgiV0VCS0lUX1RPUF9MRVZFTCIpKQotICAg
ICAgICByZXR1cm4gdG9wTGV2ZWxEaXJlY3RvcnktPnV0ZjgoKTsKKyAgICBpZiAoY29uc3QgY2hh
ciogdG9wTGV2ZWxEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX1RPUF9MRVZFTCIpKQorICAg
ICAgICByZXR1cm4gdG9wTGV2ZWxEaXJlY3Rvcnk7CiAKICAgICAvLyBJZiB0aGUgZW52aXJvbm1l
bnQgdmFyaWFibGUgd2Fzbid0IHByb3ZpZGVkIHRoZW4gYXNzdW1lIHdlIHdlcmUgYnVpbHQgaW50
bwogICAgIC8vIFdlYktpdEJ1aWxkL0RlYnVnIG9yIFdlYktpdEJ1aWxkL1JlbGVhc2UuIE9idmlv
dXNseSB0aGlzIHdpbGwgZmFpbCBpZiB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd3BlL0FjdGl2YXRlRm9udHNXUEUuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93cGUvQWN0aXZhdGVGb250c1dQRS5j
cHAKaW5kZXggOWQxZWQ4MDk3NTQxZGY2NGM1YzE0YjZmYmUzOWQ1MmRhYWRiYWU2Yy4uYTQ5Yzdh
MjkyMTgyNTkxZTI3MjdiMmI5MDFlNDEyYjJkZThlMDNkYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93cGUvQWN0aXZhdGVGb250c1dQRS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93cGUvQWN0aXZhdGVGb250
c1dQRS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCiAK
ICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KLSNpbmNsdWRlIDx3dGYvRW52aXJv
bm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC0zNSw4ICszNCw4IEBAIG5hbWVzcGFjZSBXVFIg
ewogCiBDU3RyaW5nIHRvcExldmVsUGF0aCgpCiB7Ci0gICAgaWYgKGF1dG8gdG9wTGV2ZWxEaXJl
Y3RvcnkgPSBFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRfVE9QX0xFVkVMIikpCi0gICAgICAgIHJl
dHVybiB0b3BMZXZlbERpcmVjdG9yeS0+dXRmOCgpOworICAgIGlmIChjb25zdCBjaGFyKiB0b3BM
ZXZlbERpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfVE9QX0xFVkVMIikpCisgICAgICAgIHJl
dHVybiB0b3BMZXZlbERpcmVjdG9yeTsKIAogICAgIC8vIElmIHRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZSB3YXNuJ3QgcHJvdmlkZWQgdGhlbiBhc3N1bWUgd2Ugd2VyZSBidWlsdCBpbnRvCiAgICAg
Ly8gV2ViS2l0QnVpbGQvRGVidWcgb3IgV2ViS2l0QnVpbGQvUmVsZWFzZS4gT2J2aW91c2x5IHRo
aXMgd2lsbCBmYWlsIGlmIHRoZSBidWlsZApAQCAtNDksOCArNDgsOSBAQCBDU3RyaW5nIHRvcExl
dmVsUGF0aCgpCiAKIENTdHJpbmcgZ2V0T3V0cHV0RGlyKCkKIHsKLSAgICBpZiAoYXV0byB3ZWJr
aXRPdXRwdXREaXIgPSBFbnZpcm9ubWVudDo6Z2V0KCJXRUJLSVRfT1VUUFVURElSIikpCi0gICAg
ICAgIHJldHVybiB3ZWJraXRPdXRwdXREaXItPnV0ZjgoKTsKKyAgICBjb25zdCBjaGFyKiB3ZWJr
aXRPdXRwdXREaXIgPSBnX2dldGVudigiV0VCS0lUX09VVFBVVERJUiIpOworICAgIGlmICh3ZWJr
aXRPdXRwdXREaXIpCisgICAgICAgIHJldHVybiB3ZWJraXRPdXRwdXREaXI7CiAKICAgICBHVW5p
cXVlUHRyPGNoYXI+IG91dHB1dERpcihnX2J1aWxkX2ZpbGVuYW1lKHRvcExldmVsUGF0aCgpLmRh
dGEoKSwgIldlYktpdEJ1aWxkIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBvdXRwdXREaXIuZ2V0
KCk7CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBDU3RyaW5nIGdldEZvbnRzUGF0aCgpCiAKIHZv
aWQgYWN0aXZhdGVGb250cygpCiB7Ci0gICAgaWYgKEVudmlyb25tZW50OjpnZXQoIldFQktJVF9T
S0lQX1dFQktJVFRFU1RSVU5ORVJfRk9OVENPTkZJR19JTklUSUFMSVpBVElPTiIpKQorICAgIGlm
IChnX2dldGVudigiV0VCS0lUX1NLSVBfV0VCS0lUVEVTVFJVTk5FUl9GT05UQ09ORklHX0lOSVRJ
QUxJWkFUSU9OIikpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZjSW5pdCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBhYTg5ZjJhMzFkMmMyZDk0ZWI2
OTFkMDVhODM5YjJiNDY1ZGIwN2M0Li4xMGFlYmNmZDRiYjkyMjZjOTgxOGZlZTI2ZWU2YzAwZDE3
YWMxNzk0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
NzIsNyArNzIsNiBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWlu
ZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL0Vudmlyb25tZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0zODcsMTUgKzM4NiwxNSBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6
OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgog
ICAgIHJldHVybiBuZXdQYWdlOwogfQogCi1TdHJpbmcgVGVzdENvbnRyb2xsZXI6OmxpYnJhcnlQ
YXRoRm9yVGVzdGluZygpCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6bGlicmFyeVBhdGhG
b3JUZXN0aW5nKCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBtYXkgbm90IGJlIHN1ZmZpY2llbnQg
dG8gcHJldmVudCBpbnRlcmFjdGlvbnMvY3Jhc2hlcwogICAgIC8vIHdoZW4gcnVubmluZyBtb3Jl
IHRoYW4gb25lIGNvcHkgb2YgRHVtcFJlbmRlclRyZWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNgotICAgIGlmIChhdXRvIGR1bXBSZW5k
ZXJUcmVlVGVtcCA9IEVudmlyb25tZW50OjpnZXQoIkRVTVBSRU5ERVJUUkVFX1RFTVAiKSkKLSAg
ICAgICAgcmV0dXJuICpkdW1wUmVuZGVyVHJlZVRlbXA7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpKTsKKyAgICBjaGFyKiBkdW1w
UmVuZGVyVHJlZVRlbXAgPSBnZXRlbnYoIkRVTVBSRU5ERVJUUkVFX1RFTVAiKTsKKyAgICBpZiAo
ZHVtcFJlbmRlclRyZWVUZW1wKQorICAgICAgICByZXR1cm4gZHVtcFJlbmRlclRyZWVUZW1wOwor
ICAgIHJldHVybiBwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogfQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCkBA
IC00NjIsOCArNDYxLDkgQEAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4g
VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXQKICAgICBXS0NvbnRleHRD
b25maWd1cmF0aW9uU2V0RnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKGNv
bmZpZ3VyYXRpb24uZ2V0KCksIHRydWUpOwogICAgIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRJ
Z25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZyhjb25maWd1cmF0aW9u
LmdldCgpLCBvcHRpb25zLmlnbm9yZVN5bmNocm9ub3VzTWVzc2FnaW5nVGltZW91dHMpOwogCi0g
ICAgYXV0byB0ZW1wb3JhcnlGb2xkZXIgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsKLSAgICBp
ZiAoISF0ZW1wb3JhcnlGb2xkZXIpIHsKKyAgICBpZiAoY29uc3QgY2hhciogZHVtcFJlbmRlclRy
ZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKKyAgICAgICAgU3RyaW5nIHRlbXBv
cmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKKwogICAg
ICAgICBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3Ig
KyAiQXBwbGljYXRpb25DYWNoZSIpLmdldCgpKTsKICAgICAgICAgV0tDb250ZXh0Q29uZmlndXJh
dGlvblNldERpc2tDYWNoZURpcmVjdG9yeShjb25maWd1cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBv
cmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiQ2FjaGUiKS5nZXQoKSk7CiAgICAgICAgIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25TZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25maWd1
cmF0aW9uLmdldCgpLCB0b1dLKHRlbXBvcmFyeUZvbGRlciArIHBhdGhTZXBhcmF0b3IgKyAiRGF0
YWJhc2VzIiArIHBhdGhTZXBhcmF0b3IgKyAiSW5kZXhlZERCIikuZ2V0KCkpOwpAQCAtNDgxLDgg
KzQ4MSw5IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9s
bGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKFdLCiAKICAgICBtX2dlb2xvY2F0aW9uUHJv
dmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRl
eHQuZ2V0KCkpOwogCi0gICAgYXV0byB0ZW1wb3JhcnlGb2xkZXIgPSBsaWJyYXJ5UGF0aEZvclRl
c3RpbmcoKTsKLSAgICBpZiAoISF0ZW1wb3JhcnlGb2xkZXIpIHsKKyAgICBpZiAoY29uc3QgY2hh
ciogZHVtcFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKKyAgICAg
ICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRy
ZWVUZW1wKTsKKwogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWlncmF0ZWQgdG8g
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi4KICAgICAgICAgLy8gRGlzYWJsZSBpY29uIGRhdGFi
YXNlIHRvIGF2b2lkIGZldGNoaW5nIDxodHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5pY28+
IGFuZCBtYWtpbmcgdGVzdHMgZmxha3kuCiAgICAgICAgIC8vIEludml2aWR1YWwgdGVzdHMgY2Fu
IGVuYWJsZSBpdCB1c2luZyB0ZXN0UnVubmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQsIGFsdGhv
dWdoIGl0J3Mgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gV2ViS2l0VGVzdFJ1bm5lci4KQEAg
LTEzODAsNyArMTM4MSw3IEBAIHN0YXRpYyBzdGQ6OnN0cmluZyBjb250ZW50RXh0ZW5zaW9uSlNP
TlBhdGgoV0tVUkxSZWYgdXJsKQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiB2b2lk
IFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0ZW5zaW9uRm9yVGVzdChjb25zdCBU
ZXN0SW52b2NhdGlvbiYgdGVzdCkKIHsKLSAgICBhdXRvIGNvbnRlbnRFeHRlbnNpb25zUGF0aCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOworICAgIGNvbnN0IGNoYXIqIGNvbnRlbnRFeHRlbnNp
b25zUGF0aCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogICAgIGlmICghY29udGVudEV4dGVu
c2lvbnNQYXRoKQogICAgICAgICBjb250ZW50RXh0ZW5zaW9uc1BhdGggPSAiL3RtcC93a3RyLWNv
bnRlbnRleHRlbnNpb25zIjsKIApAQCAtMTM5OSw3ICsxNDAwLDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdEludm9jYXRp
b24mIHRlc3QKICAgICBzdGQ6OnN0cmluZyBqc29uRmlsZUNvbnRlbnRzIHtzdGQ6OmlzdHJlYW1i
dWZfaXRlcmF0b3I8Y2hhcj4oanNvbkZpbGUpLCBzdGQ6OmlzdHJlYW1idWZfaXRlcmF0b3I8Y2hh
cj4oKX07CiAgICAgYXV0byBqc29uU291cmNlID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhqc29uRmlsZUNvbnRlbnRzLmNfc3RyKCkpKTsKIAotICAgIGF1dG8gc3RvcmVQ
YXRoID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb250ZW50RXh0ZW5z
aW9uc1BhdGgudXRmOCgpLmRhdGEoKSkpOworICAgIGF1dG8gc3RvcmVQYXRoID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb250ZW50RXh0ZW5zaW9uc1BhdGgpKTsKICAg
ICBhdXRvIGV4dGVuc2lvblN0b3JlID0gYWRvcHRXSyhXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVDcmVhdGUoc3RvcmVQYXRoLmdldCgpKSk7CiAgICAgQVNTRVJUKGV4dGVuc2lvblN0b3JlKTsK
IApAQCAtMTQyMiwxMyArMTQyMywxMyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRl
bnRFeHRlbnNpb25zKCkKIAogICAgIFdLUGFnZVNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7CiAKLSAgICBhdXRvIGNvbnRlbnRFeHRl
bnNpb25zUGF0aCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOworICAgIGNvbnN0IGNoYXIqIGNv
bnRlbnRFeHRlbnNpb25zUGF0aCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwogICAgIGlmICgh
Y29udGVudEV4dGVuc2lvbnNQYXRoKQogICAgICAgICByZXR1cm47CiAKICAgICBXS1VzZXJDb250
ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycyh1c2VyQ29udGVudENvbnRy
b2xsZXIoKSk7CiAKLSAgICBhdXRvIHN0b3JlUGF0aCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoY29udGVudEV4dGVuc2lvbnNQYXRoLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICBhdXRvIHN0b3JlUGF0aCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Y29udGVudEV4dGVuc2lvbnNQYXRoKSk7CiAgICAgYXV0byBleHRlbnNpb25TdG9yZSA9IGFkb3B0
V0soV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlQ3JlYXRlKHN0b3JlUGF0aC5nZXQoKSkpOwog
ICAgIEFTU0VSVChleHRlbnNpb25TdG9yZSk7CiAKQEAgLTIyNzgsMTEgKzIyNzksMTIgQEAgV0tT
dHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLQ29udGV4dFJlZiwKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0
VGV4dChidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGVtcG9yYXJ5Rm9s
ZGVyID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7Ci0gICAgaWYgKCF0ZW1wb3JhcnlGb2xkZXIp
CisgICAgY29uc3QgY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0
aW5nKCk7CisgICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRlbXApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gdHJ1ZTsKKyAgICBTdHJpbmcgdGVtcG9yYXJ5
Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwogICAgIGlmIChz
dWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
IlVua25vd24iOwogCkBAIC0yODI2LDkgKzI4MjgsMTEgQEAgV0tDb250ZXh0UmVmIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29u
dGUKICAgICBhdXRvKiBkYXRhU3RvcmUgPSBXS0NvbnRleHRHZXRXZWJzaXRlRGF0YVN0b3JlKGNv
bnRleHQpOwogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKGRhdGFTdG9yZSwgdHJ1ZSk7CiAKLSAgICBhdXRvIHRlbXBvcmFyeUZvbGRlciA9IGxp
YnJhcnlQYXRoRm9yVGVzdGluZygpOwotICAgIGlmICghIXRlbXBvcmFyeUZvbGRlcikKKyAgICBp
ZiAoY29uc3QgY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5n
KCkpIHsKKyAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgo
ZHVtcFJlbmRlclRyZWVUZW1wKTsKKwogICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRhdGFTdG9yZSwgdG9XSyh0ZW1wb3JhcnlG
b2xkZXIgKyBwYXRoU2VwYXJhdG9yICsgIlNlcnZpY2VXb3JrZXJzIikuZ2V0KCkpOworICAgIH0K
IAogICAgIHJldHVybiBjb250ZXh0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCmluZGV4IDc0Y2IwNjk1NzgxMmQ0OTVlZDZlYWQwZjc2NDIxZDE5MjJiY2I2MjEuLmI0
M2M1NWMyODY2NWRmZTY1ZjQyMjE1YWViYzQwMjcxYjMyNTRjNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJDbGFzc01ldGhvZFN3aXp6bGVyLmgiCkBAIC00NDUsNyAr
NDQ0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1BhZ2VSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHJ1bk1vZGFsKFBsYXRmb3Jt
V2ViVmlldyopOwogCi0gICAgc3RhdGljIFN0cmluZyBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogbGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7CiAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdEludm9jYXRpb24+IG1fY3VycmVudEludm9jYXRpb247CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
aW5kZXggMjc2NWY2YTZhOTI4MjE2YmZiNzQ4NjhhYzM1NzkyOWFjNTQ2M2M1NS4uZmUzYmQ2ZTBl
NTQ4NGNmODMyMzNiNzI3ZmIyYzFkNTYyOTNiZWFkZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMTA4LDExICsxMDgs
MTEgQEAgdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGli
cmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGUKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29j
b2FQbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAgIGF1dG8gZHVtcFJlbmRlclRyZWVUZW1wID0g
bGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7CisgICAgY29uc3QgY2hhciogZHVtcFJlbmRlclRyZWVU
ZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7CiAgICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRl
bXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zv
bGRlciA9IG1ha2VTdHJpbmcoZHVtcFJlbmRlclRyZWVUZW1wLCAiL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MiKTsKKyAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciA9IFN0cmlu
ZyhkdW1wUmVuZGVyVHJlZVRlbXApICsgJy8nICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiOwog
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRo
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjogbmlsXTsKICAgICBTdHJpbmcgZnVsbEJyb3dzaW5n
U2Vzc2lvblJlc291cmNlTG9nID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciArICcvJyAr
ICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiOwogICAgIE5TRGljdGlv
bmFyeSAqcmVzb3VyY2VMb2dQbGlzdCA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHNBbmRLZXlzOiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXSwgQCJ2ZXJzaW9uIiwgbmls
XTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudAogV0tDb250ZXh0
UmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7
CiAjaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24o
bGlicmFyeVBhdGhGb3JUZXN0aW5nKCkudXRmOCgpLmRhdGEoKSwgaW5qZWN0ZWRCdW5kbGVQYXRo
KCksIGNvbnRleHQsIGNvbnRleHRDb25maWd1cmF0aW9uKTsKKyAgICBpbml0aWFsaXplV2ViVmll
d0NvbmZpZ3VyYXRpb24obGlicmFyeVBhdGhGb3JUZXN0aW5nKCksIGluamVjdGVkQnVuZGxlUGF0
aCgpLCBjb250ZXh0LCBjb250ZXh0Q29uZmlndXJhdGlvbik7CiAgICAgcmV0dXJuIChfX2JyaWRn
ZSBXS0NvbnRleHRSZWYpZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CiAj
ZWxzZQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvbWFpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9tYWluLmNwcApp
bmRleCBhNGQxOGIzMDI2MzM5ZWRkZDQwMzA3OTgwYWY5MDUzMjcwZTlkZDEwLi5hMjAzOTU2ZmMy
MTA0OGE1MTI5ZjVjNjc1ZTU5MTNlZTE4ZjI4MzQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9tYWluLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9t
YWluLmNwcApAQCAtMjgsMTIgKzI4LDExIEBACiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tlckd0ay5oPgogI2luY2x1ZGUgPGd0ay9ndGsu
aD4KLSNpbmNsdWRlIDx3dGYvRW52aXJvbm1lbnQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVm
UHRyLmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgICBFbnZpcm9u
bWVudDo6c2V0SWZOb3REZWZpbmVkKCJXRUJLSVRfRElTQUJMRV9NRU1PUllfUFJFU1NVUkVfTU9O
SVRPUiIsICIxIik7CisgICAgZ19zZXRlbnYoIldFQktJVF9ESVNBQkxFX01FTU9SWV9QUkVTU1VS
RV9NT05JVE9SIiwgIjEiLCBGQUxTRSk7CiAKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1h
Yy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDZkYjRiMjVkY2RmZWIwNTFkZWM2MWUzYTBkOWYzZDM4ZjViYWQ4ZmMuLjNlNzczYmMwZDVi
NTIzYTM1YTQwNjQwOGM4MWNkYjE1Nzk1MGFmZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xMzUsMTAgKzEzNSwxMCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0ZW5zaW9uRm9yVGVzdChjb25zdCBU
ZXN0SW52b2NhdGlvbiYgdGVzdAogICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFs
c2U7CiAKICAgICBOU1VSTCAqdGVtcERpcjsKLSAgICBhdXRvIHRlbXBvcmFyeUZvbGRlciA9IGxp
YnJhcnlQYXRoRm9yVGVzdGluZygpOwotICAgIGlmICghIXRlbXBvcmFyeUZvbGRlcikKKyAgICBp
ZiAoY29uc3QgY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5n
KCkpIHsKKyAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgo
ZHVtcFJlbmRlclRyZWVUZW1wKTsKICAgICAgICAgdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6WyhOU1N0cmluZyopdGVtcG9yYXJ5Rm9sZGVyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIl0gaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBlbHNl
CisgICAgfSBlbHNlCiAgICAgICAgIHRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltO
U1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNv
bnRlbnRFeHRlbnNpb25zIl0gaXNEaXJlY3Rvcnk6WUVTXTsKIAogICAgIFtbX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZSBzdG9yZVdpdGhVUkw6dGVtcERpcl0gY29tcGlsZUNvbnRlbnRFeHRl
bnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdENvbnRlbnRFeHRlbnNpb25zIiBlbmNvZGVkQ29udGVu
dEV4dGVuc2lvbjpjb250ZW50RXh0ZW5zaW9uU3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dL
VXNlckNvbnRlbnRGaWx0ZXIgKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvd3BlL21haW4uY3BwCmluZGV4IDEzNWJkMjVjZjI3NGZkY2M5MDE4NzIyM2E2NDJjZDEyOWM5
YzJlZGQuLmQ2MjI2OWRkMzk5OGVhZTBiYjVkZGMwYjIzNGYxYjAwOTY0ODBiZDcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL21haW4uY3BwCkBAIC0yNywxMSArMjcsMTAgQEAKIAogI2luY2x1ZGUg
IlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9FbnZp
cm9ubWVudC5oPgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgRW52
aXJvbm1lbnQ6OnNldElmTm90RGVmaW5lZCgiV0VCS0lUX0RJU0FCTEVfTUVNT1JZX1BSRVNTVVJF
X01PTklUT1IiLCAiMSIpOworICAgIGdfc2V0ZW52KCJXRUJLSVRfRElTQUJMRV9NRU1PUllfUFJF
U1NVUkVfTU9OSVRPUiIsICIxIiwgRkFMU0UpOwogCiAgICAgV1RSOjpUZXN0Q29udHJvbGxlciBj
b250cm9sbGVyKGFyZ2MsIGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihhcmd2KSk7CiAgICAgcmV0
dXJuIDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>