<?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>234197</bug_id>
          
          <creation_ts>2021-12-11 07:30:20 -0800</creation_ts>
          <short_desc>REGRESSION(r286893): Breaks the build</short_desc>
          <delta_ts>2021-12-11 07:35:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>234029</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823200</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-12-11 07:30:20 -0800</bug_when>
    <thetext>https://commits.webkit.org/r286893 introduced a regression:
Breaks the build

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>1823202</commentid>
    <comment_count>1</comment_count>
      <attachid>446882</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-12-11 07:30:42 -0800</bug_when>
    <thetext>Created attachment 446882
REVERT of r286893

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823203</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-11 07:34:32 -0800</bug_when>
    <thetext>Committed r286911 (245137@main): &lt;https://commits.webkit.org/245137@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446882.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446882</attachid>
            <date>2021-12-11 07:30:42 -0800</date>
            <delta_ts>2021-12-11 07:34:33 -0800</delta_ts>
            <desc>REVERT of r286893</desc>
            <filename>bug-234197-20211211073041.patch</filename>
            <type>text/plain</type>
            <size>156353</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZiMmY5Zjg3MzU4MjJjNmUyMWI3MDc3
MjYyOTI3OTE2ZjRmZWEwNTkuLjMxZWEwMDBiMDM4OWQ0YTE0MjUwOGIzNDc2ZDdhYjY4ZGY3Nzcz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg2
ODkzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MTk3CisKKyAgICAgICAgQnJlYWtzIHRoZSBidWlsZAorCisgICAgICAgIFJldmVydGVkIGNoYW5n
ZXNldDoKKworICAgICAgICAiW21hY09TXSBBZGQgbmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1
cmUgYmFja2VuZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDAyOQorICAgICAgICBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9yMjg2ODkzCisK
IDIwMjEtMTItMTEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFuIGV4cGVyaW1lbnRhbCBWaWRlb1RyYWNrQ29uZmlndXJhdGlvbiBjbGFzcyBhbmQgYWNj
ZXNzb3Igb24gVmlkZW9UcmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFjNTFkYmU5NTAxOWNhM2UyNDY0NGFh
ZjM3YjBiNDdjZDU0YWE3NmIuLjJmZjZhYjUwNDA1MTdkNDUzYTFkMDliM2QzMzdhMGMwZmFjYjY3
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xMSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyODY4OTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQxOTcKKworICAgICAgICBCcmVha3MgdGhlIGJ1aWxkCisKKyAgICAgICAgUmV2ZXJ0
ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5k
b3cgY2FwdHVyZSBiYWNrZW5kIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0MDI5CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3Iy
ODY4OTMKKwogMjAyMS0xMi0xMSAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ1NTQ2FsY09wZXJhdGlvbk5vZGU6OmFsbG93c05l
Z2F0aXZlUGVyY2VudGFnZVJlZmVyZW5jZSgpIHNob3VsZCBiZSBjb25zdCBtZW1iZXIgZnVuY3Rp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA1ZjZkZjVjNTJmZDgyMTdjN2RlNmY2NDcyODk4NjM1
YzczMjA2YWQwLi4xZjg5ZDA3NTQ5ODFjYjExZjZjNjU4NWRjOWRlZDIyYWJmOGU4YmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xMSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyODY4OTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQxOTcKKworICAgICAgICBCcmVha3MgdGhlIGJ1aWxkCisKKyAgICAgICAgUmV2ZXJ0
ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5k
b3cgY2FwdHVyZSBiYWNrZW5kIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0MDI5CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3Iy
ODY4OTMKKwogMjAyMS0xMi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNrQ29uZmlndXJhdGlvbiBhY2Nlc3NvciBv
biBBdWRpb1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDdjZmM3OGM3ZDFmNDA4NTM4
ZjY5NGMxNDU5YWFlNDNiNzEyOGJjMS4uZTk3MTA1M2UwOTE4NWQxY2RjMWNlM2FhMTkwNTk1MTI5
ODE2NTRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xMSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyODY4OTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQxOTcKKworICAgICAgICBCcmVha3MgdGhlIGJ1aWxkCisKKyAgICAgICAgUmV2
ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3
aW5kb3cgY2FwdHVyZSBiYWNrZW5kIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0MDI5CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3Jn
L3IyODY4OTMKKwogMjAyMS0xMi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNrQ29uZmlndXJhdGlvbiBhY2Nlc3Nv
ciBvbiBBdWRpb1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwK
aW5kZXggMmNkZjYxMWZhNjc5ZjIwODI1MDAwYWFkYTQ2NmI1N2E3MDQyODkwNy4uMDQxMTFiYjZh
ZGEyNjlkMzRhY2JmMjE2ZjAyY2JhNzFjZjZmZmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
LnlhbWwKQEAgLTE0MDcsMTkgKzE0MDcsNiBAQCBVc2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVk
OgogICAgIFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRVc2VHUFVQcm9jZXNzRm9yV2Vi
R0xFbmFibGVkKCkKIAotVXNlU2NyZWVuQ2FwdHVyZUtpdDoKLSAgdHlwZTogYm9vbAotICBjb25k
aXRpb246IEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotICBodW1hblJlYWRhYmxlTmFtZTogIlVz
ZSBTY3JlZW5DYXB0dXJlS2l0IgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJVc2UgU2Ny
ZWVuQ2FwdHVyZUtpdCB3aGVuIGF2YWlsYWJsZSIKLSAgZGVmYXVsdFZhbHVlOgotICAgIFdlYktp
dExlZ2FjeToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCi0gICAgV2ViS2l0OgotICAgICAgZGVmYXVs
dDogZmFsc2UKLSAgICBXZWJDb3JlOgotICAgICAgZGVmYXVsdDogZmFsc2UKLQogVXNlckdlc3R1
cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOgogICB0eXBlOiBib29sCiAgIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVXNlckdlc3R1cmUgUHJvbWlzZSBQcm9wYWdhdGlvbiIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmgKaW5kZXggZTdiNzU0YWI5NjAxMjkzODUzMzIwMzViZWU0NGU1MzM0OWMyNzViMi4uM2MzMTA2
Y2JlYzdmYjJlMjU1Y2FiM2FjYjFkNDFjYWM3Njk0MWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgK
QEAgLTExMDcsMTAgKzExMDcsNiBAQAogI3VuZGVmIEhBVkVfQVZfREVMRUdBVElOR19QTEFZQkFD
S19DT09SRElOQVRPUgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMjAzMDAKLSNkZWZpbmUgSEFWRV9TQ1JFRU5fQ0FQVFVS
RV9LSVQgMQotI2VuZGlmCi0KICNpZiAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIFwKICAgICB8fCAoUExBVEZPUk0oSU9TKSAmJiBf
X0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNjAwMDApKQogI2RlZmluZSBIQVZF
X1NBTkRCT1hfU1RBVEVfRkxBR1MgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
U29mdExpbmtpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NvZnRMaW5raW5nLmgKaW5kZXgg
YTliM2FhNzk4NjY0YWU2MjhjMzYzNjE4Yjg4MzA3ZWU5OTAwODM2MS4uMmI5MTUwOGI4YWMxNmIy
NjMxNzRjZDFkNzZhMGM1MjkxYmM5OTg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29j
b2EvU29mdExpbmtpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9Tb2Z0TGlua2luZy5o
CkBAIC00MjIsMTQgKzQyMiw3IEBAIHN0YXRpYyB2b2lkKiBsaWIjI0xpYnJhcnkoKSBcCiAgICAg
fSBcCiAgICAgfQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSX1dJVEhfQVZB
SUxBQklMSVRZKGZ1bmN0aW9uTmFtZXNwYWNlLCBjbGFzc05hbWUsIGF2YWlsYWJpbGl0eSkgXAot
ICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKLSAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2Ug
eyBcCi0gICAgZXh0ZXJuIENsYXNzICgqZ2V0IyNjbGFzc05hbWUjI0NsYXNzKSgpOyBcCi0gICAg
Y2xhc3NOYW1lICphbGxvYyMjY2xhc3NOYW1lIyNJbnN0YW5jZSgpIGF2YWlsYWJpbGl0eTsgXAot
ICAgIH0KLQotI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9JTlRFUk5BTChmdW5j
dGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsIGV4cG9ydCwgaXNPcHRpb25hbCwg
YXZhaWxhYmlsaXR5KSBcCisjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUX0FORF9JU19PUFRJT05BTChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFz
c05hbWUsIGV4cG9ydCwgaXNPcHRpb25hbCkgXAogICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKICAg
ICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCiAgICAgc3RhdGljIENsYXNzIGluaXQj
I2NsYXNzTmFtZSgpOyBcCkBAIC00NTMsMTUgKzQ0NiwxMSBAQCBzdGF0aWMgdm9pZCogbGliIyNM
aWJyYXJ5KCkgXAogICAgICAgICB9KTsgXAogICAgICAgICByZXR1cm4gY2xhc3MjI2NsYXNzTmFt
ZTsgXAogICAgIH0gXAotICAgIGF2YWlsYWJpbGl0eSBcCiAgICAgfQogCiAjZGVmaW5lIFNPRlRf
TElOS19JU19PUFRJT05BTCB0cnVlCiAjZGVmaW5lIFNPRlRfTElOS19JU19OT1RfT1BUSU9OQUwg
ZmFsc2UKIAotI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVF9B
TkRfSVNfT1BUSU9OQUwoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1lLCBl
eHBvcnQsIGlzT3B0aW9uYWwpIFwKLSAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9JTlRF
Uk5BTChmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsIGV4cG9ydCwgaXNP
cHRpb25hbCwgKQotCiAjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSwgZXhwb3J0KSBcCiAg
ICAgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlRfQU5EX0lTX09QVElPTkFM
KGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSwgZXhwb3J0LCBTT0ZUX0xJ
TktfSVNfTk9UX09QVElPTkFMKQogCkBAIC00NzQsMTYgKzQ2Myw2IEBAIHN0YXRpYyB2b2lkKiBs
aWIjI0xpYnJhcnkoKSBcCiAjZGVmaW5lIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElP
TkFMKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAogICAgIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUX0FORF9JU19PUFRJT05BTChmdW5jdGlv
bk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsICwgU09GVF9MSU5LX0lTX09QVElPTkFM
KQogCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTU19BTExPQ19GVU5DVElPTihjbGFzc05hbWUsIGF2
YWlsYWJpbGl0eSkgXAotICAgIGNsYXNzTmFtZSAqYWxsb2MjI2NsYXNzTmFtZSMjSW5zdGFuY2Uo
KSBhdmFpbGFiaWxpdHk7IFwKLSAgICBjbGFzc05hbWUgKmFsbG9jIyNjbGFzc05hbWUjI0luc3Rh
bmNlKCkgYXZhaWxhYmlsaXR5IFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIFtnZXQjI2NsYXNz
TmFtZSMjQ2xhc3MoKSBhbGxvY107IFwKLSAgICB9IFwKLQotI2RlZmluZSBTT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklMSVRZKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGNsYXNzTmFtZSwgZXhwb3J0LCBhdmFpbGFiaWxpdHkp
IFwKLSAgICBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9JTlRFUk5BTChmdW5jdGlvbk5hbWVz
cGFjZSwgZnJhbWV3b3JrLCBjbGFzc05hbWUsIGV4cG9ydCwgU09GVF9MSU5LX0lTX09QVElPTkFM
LCBTT0ZUX0xJTktfQ0xBU1NfQUxMT0NfRlVOQ1RJT04oY2xhc3NOYW1lLCBhdmFpbGFiaWxpdHkp
KQotCiAjZGVmaW5lIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNw
YWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCiAgICAgbmFtZXNw
YWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAogICAgIHZhcmlhYmxlVHlwZSBnZXRfIyNmcmFtZXdv
cmsjI18jI3ZhcmlhYmxlTmFtZSgpOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAxZmRkNDM1MmFm
OGRiMWMzNjI2YjgxYWJlM2NkMzI4OWNjMWI0MzQ2Li5hMTMzM2MyZGE3OTVmMjZjNmI3NzJiZjY1
ZWUwYTYxOGQxODZmYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE2NTIsNyArMTY1Miw2IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgKLSAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9EaXNwbGF5Q2FwdHVy
ZU1hbmFnZXIuaAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01ETlNSZWdpc3RlckVycm9yLmgK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4NGQ0OTcyMTkwZmI0YjAy
MWY2ZDRlZDg1MGZkYTE2ZDAzZmIyNzIuLmQ5ODA2YTlmYzNhZDFkMzIyMTE1ZWYxOTI5MDI4Yjcx
ZGFiNDk2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI1LDggKzI1LDYgQEAKIAkJMDcxQzAwMzgyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzFDMDAzNjI3MDdFREYwMDBEMDI3QzcgLyogUmVwbGF5S2l0U29mdExp
bmsuaCAqLzsgfTsKIAkJMDc2MTFEQjYyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovOyB9
OwogCQkwNzYxMURCNzI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MTFEQjUy
NDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLzsgfTsKLQkJMDc3
ODkxODEyNzNCMTRGRjAwRTQwOEQxIC8qIFNjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Nzg5MTdGMjczQjE0
RkYwMEU0MDhEMSAvKiBTY3JlZW5DYXB0dXJlS2l0U29mdExpbmsubW0gKi87IH07Ci0JCTA3Nzg5
MTgyMjczQjE0RkYwMEU0MDhEMSAvKiBTY3JlZW5DYXB0dXJlS2l0U29mdExpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Nzg5MTgwMjczQjE0RkYw
MEU0MDhEMSAvKiBTY3JlZW5DYXB0dXJlS2l0U29mdExpbmsuaCAqLzsgfTsKIAkJMDc3RTg3QjEy
MjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYw
IC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwogCQkwNzdFODdCMjIyNkE0NjAzMDBB
MkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0U4N0IwMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5k
YXRpb25Tb2Z0TGluay5oICovOyB9OwogCQkwNzlEMUQ5NzI2OTUwREQ3MDA4ODM1NzcgLyogU3lz
dGVtU3RhdHVzU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0ZW1TdGF0dXNTb2Z0TGlu
ay5oICovOyB9OwpAQCAtNDE1LDggKzQxMyw2IEBACiAJCTA3MUMwMDM2MjcwN0VERjAwMEQwMjdD
NyAvKiBSZXBsYXlLaXRTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXBsYXlLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYx
MURCNDI0M0ZBNUJFMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYxMURCNTI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VU
cmFja2luZ1NvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwNzc4OTE3RjI3M0IxNEZGMDBFNDA4RDEgLyogU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NyZWVuQ2FwdHVyZUtp
dFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzc4OTE4MDI3M0Ix
NEZGMDBFNDA4RDEgLyogU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzdFODdBRjIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0
aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
VkZvdW5kYXRpb25Tb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3
RTg3QjAyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRhdGlvblNvZnRMaW5rLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OUQxRDk1MjY5NTBERDcwMDg4MzU3NyAvKiBTeXN0ZW1T
dGF0dXNTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1T
dGF0dXNTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMSw3ICsx
MDI3LDYgQEAKIAkJCQkwQzc3ODU4NDFGNDUxMzBGMDBGNEVCQjYgLyogTlNXaW5kb3dTUEkuaCAq
LywKIAkJCQkwQzc3ODU4NTFGNDUxMzBGMDBGNEVCQjYgLyogUElQU1BJLmggKi8sCiAJCQkJMEM3
Nzg1ODcxRjQ1MTMwRjAwRjRFQkI2IC8qIFF1aWNrTG9va01hY1NQSS5oICovLAotCQkJCUExMTc1
QjQ4MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCAqLywKIAkJCQk3MUIx
MTQxRjI2ODIzQUNEMDA0RDY3MDEgLyogU3lzdGVtUHJldmlld1NQSS5oICovLAogCQkJCTBDNzc4
NTg4MUY0NTEzMEYwMEY0RUJCNiAvKiBUZWxlcGhvbnlVdGlsaXRpZXNTUEkuaCAqLywKIAkJCSk7
CkBAIC0xMzk1LDggKzEzOTAsNiBAQAogCQkJCTQ0RTFBOEFFMjFGQTU0REEwMEMzMDQ4RSAvKiBM
b29rdXBTb2Z0TGluay5tbSAqLywKIAkJCQlGNEM4NUE0RDI2NTg1NTFBMDA1Qjg5Q0MgLyogUXVp
Y2tMb29rVUlTb2Z0TGluay5oICovLAogCQkJCUY0Qzg1QTRDMjY1ODU1MTkwMDVCODlDQyAvKiBR
dWlja0xvb2tVSVNvZnRMaW5rLm1tICovLAotCQkJCTA3Nzg5MTgwMjczQjE0RkYwMEU0MDhEMSAv
KiBTY3JlZW5DYXB0dXJlS2l0U29mdExpbmsuaCAqLywKLQkJCQkwNzc4OTE3RjI3M0IxNEZGMDBF
NDA4RDEgLyogU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYzNyw3ICsxNjMwLDYgQEAK
IAkJCQlGNDk3NEVBMzI2NUVFQTIyMDBCNDlCOEMgLyogUmV2ZWFsU29mdExpbmsuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ0Mjk1NkNEMjE4QTcyREYwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNERERDlGMjczRUY1NkUwMDY2MEVCQiAvKiBTY2VuZUtpdFNQSS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMDc3ODkxODIyNzNCMTRGRjAwRTQwOEQxIC8qIFNjcmVlbkNh
cHR1cmVLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwQUI4RjEyMEFFMkU4RDAw
QjhCRTg3IC8qIFNlY0tleVByb3h5U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE1ODFG
M0JFQjQ5MDBEQkMzMTcgLyogU2VydmVyc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNDNjZD
REQxRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTEy
LDcgKzE5MDQsNiBAQAogCQkJCUY0Qzg1QTRFMjY1ODU1MUEwMDVCODlDQyAvKiBRdWlja0xvb2tV
SVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQzAwMzcyNzA3RURGMDAwRDAyN0M3
IC8qIFJlcGxheUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ5NzRFQTQyNjVF
RUEyMjAwQjQ5QjhDIC8qIFJldmVhbFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc3
ODkxODEyNzNCMTRGRjAwRTQwOEQxIC8qIFNjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTIxRjNEMURDNTAwOUMxNEIxIC8qIFNsZWVwRGlz
YWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjAxRjNEMUUzOTAwOUMxNEIxIC8q
IFNsZWVwRGlzYWJsZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYmM4MDk4ZWJlYmQwNzUwODVlMzZjMmNkZDhlNjc2NjAy
NDVkOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgSEFWRShTQ1JFRU5fQ0FQVFVSRV9LSVQpCi0KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgU2NyZWVuQ2FwdHVyZUtp
dCk7Ci0KLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSX1dJVEhfQVZBSUxBQklMSVRZKFBBTCwg
U0NXaW5kb3csIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVJfV0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ0Rpc3BsYXksIEFQSV9BVkFJTEFCTEUo
bWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJfV0lUSF9BVkFJTEFCSUxJ
VFkoUEFMLCBTQ1NoYXJlYWJsZUNvbnRlbnQsIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJfV0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ0NvbnRl
bnRGaWx0ZXIsIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVJfV0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ1N0cmVhbUNvbmZpZ3VyYXRpb24sIEFQ
SV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJfV0lU
SF9BVkFJTEFCSUxJVFkoUEFMLCBTQ1N0cmVhbSwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkp
Ci0KLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSX1dJVEhfQVZBSUxBQklMSVRZKFBBTCwgU0NT
dHJlYW1GaWx0ZXIsIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVJfV0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ1N0cmVhbVByb3BlcnRpZXMsIEFQ
SV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVz
S2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSBnZXRf
U2NyZWVuQ2FwdHVyZUtpdF9TQ1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSgpCi0KLSNlbmRpZiAv
LyBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTBkODZlMTExNGI2OTYyOTU0YzJjZmIxYTkxOTdlNmNjMTQ5YTI1ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExpbmsubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotCi0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
LQotU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU2NyZWVu
Q2FwdHVyZUtpdCwgUEFMX0VYUE9SVCkKLQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BU
SU9OQUxfV0lUSF9FWFBPUlRfQU5EX0FWQUlMQUJJTElUWShQQUwsIFNjcmVlbkNhcHR1cmVLaXQs
IFNDV2luZG93LCBQQUxfRVhQT1JULCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMpKSkKLVNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUX0FORF9BVkFJTEFCSUxJ
VFkoUEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ0Rpc3BsYXksIFBBTF9FWFBPUlQsIEFQSV9BVkFJ
TEFCTEUobWFjb3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxf
V0lUSF9FWFBPUlRfQU5EX0FWQUlMQUJJTElUWShQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU2hh
cmVhYmxlQ29udGVudCwgUEFMX0VYUE9SVCwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxB
QklMSVRZKFBBTCwgU2NyZWVuQ2FwdHVyZUtpdCwgU0NDb250ZW50RmlsdGVyLCBQQUxfRVhQT1JU
LCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMpKSkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X09QVElPTkFMX1dJVEhfRVhQT1JUX0FORF9BVkFJTEFCSUxJVFkoUEFMLCBTY3JlZW5DYXB0dXJl
S2l0LCBTQ1N0cmVhbUNvbmZpZ3VyYXRpb24sIFBBTF9FWFBPUlQsIEFQSV9BVkFJTEFCTEUobWFj
b3MoMTIuMykpKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBP
UlRfQU5EX0FWQUlMQUJJTElUWShQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtLCBQQUxf
RVhQT1JULCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMpKSkKLQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlRfQU5EX0FWQUlMQUJJTElUWShQQUwsIFNjcmVl
bkNhcHR1cmVLaXQsIFNDU3RyZWFtRmlsdGVyLCBQQUxfRVhQT1JULCBBUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjMpKSkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQ
T1JUX0FORF9BVkFJTEFCSUxJVFkoUEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbVByb3Bl
cnRpZXMsIFBBTF9FWFBPUlQsIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQotCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNjcmVlbkNh
cHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggYjBjMGI0MzAzY2UyYjQ2OWYzNDFjZTQ0ZmMwZTY2YmRmMWQ2Y2I2ZC4uZWFmYjA4NTQ4MjE3
MzFiMmQ3YzhhZTU3MmM0NDgxNTU5OGY0MWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC01NTYsNyArNTU2LDYgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5tbQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcAotcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLm1tCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBmZDEzNWMyMGQ1YTEyOGJmMTBjYjczYjZiY2QwOTEzZmVlMDZlNzNm
Li4xMmU4MDVjZjVmMWU0ZDNhOWMyNmU5ODQzZjI1M2Y3ODI2NWM0M2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05Miw3ICs5
Miw2IEBACiAJCTA3MDlENzkzMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA5RDc5MTFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDlENzk1
MUFFNTVBMjkwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RDc5NDFBRTU1QTI5
MDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5
Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJp
bGl0eVNsaWRlci5oICovOyB9OwotCQkwNzBCRUQ5ODI3M0Y0MTVEMDA1ODM5MjYgLyogU2NyZWVu
Q2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MEJFRDk3MjczRjQxNTYwMDU4MzkyNiAvKiBTY3JlZW5DYXB0dXJl
S2l0Q2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
RTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwRTJEMEYyNkYyNTA4
OTAwMTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRTJEMEMyNkYxNUIxODAw
MTRBQUMzIC8qIEluYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQkw
NzBFMkQxMDI2RjI1MDkzMDAxNEFBQzMgLyogSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9i
akMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEUy
RDBFMjZGMTVCMTkwMDE0QUFDMyAvKiBJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5o
ICovOyB9OwpAQCAtMjA3LDcgKzIwNiw3IEBACiAJCTA3QjcxMTZEMUQ4OTlFNjMwMDlGMEZGQiAv
KiBDYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3QjcxMTZGMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNzExNkMxRDg5OUU2MzAwOUYwRkZCIC8q
IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDdCOTNGRkMyM0I5NEVDNzAwMzZGOEVBIC8qIE1JTUVUeXBlQ2Fj
aGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Qjkz
RkY5MjNCOTJBQUEwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDdCQjFFNzAyNzE3NkNEOTAwMURGMjg5
IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMDdCQjFFNzAyNzE3NkNEOTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmggKi87IH07CiAJCTA3QzA0NkM0MUU0MjUwOEIwMDcyMDFFNyAvKiBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0I4NzU4MUU0MERDRkQwMDcxQzBFQyAvKiBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MwNDZD
QjFFNDI2NDEzMDA3MjAxRTcgLyogQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTYxRTQwRENFNTAwNzFD
MEVDIC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0MxNDgyRTI2MTJBMjFGMDA3NzU4MjggLyogTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc3QkE1ODgyNjEyNkQ2NjAwNzJGMTlGIC8qIE1lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjIwLDcgKzIxOSw2IEBACiAJCTA3RDZBNEY4MUJGMjMwN0QwMDE3NDE0
NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyogQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovOyB9OwogCQkwN0UzREZEMTFBOUU3ODY1MDA3
NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxh
eWJhY2tUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRDE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmggKi87IH07Ci0JCTA3RUQxOTM4Mjc2Mjc2OTQwMEFGMUVDNSAvKiBEaXNwbGF5
Q2FwdHVyZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3RUQxOTM3Mjc2Mjc2OTQwMEFGMUVDNSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0VF
NzZFQzFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVBMUJFOTZEQjAw
MEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAv
KiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLmggKi87IH07CiAJCTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgwMyAv
KiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdDOEFEMTIxRDA3M0Q2MzAwODdDNUNFIC8qIEFWQXNzZXRNSU1FVHlw
ZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTU4ODUsOCArNTg4Myw2IEBACiAJCTA3MDlENzkxMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDcwOUQ3OTQxQUU1NUEyOTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVkaWFTZXNzaW9uTWFu
YWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVE
RUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTA3MEJFRDk2MjczRjQxNTYwMDU4MzkyNiAvKiBTY3JlZW5DYXB0dXJlS2l0Q2Fw
dHVyZVNvdXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcmVlbkNhcHR1cmVLaXRDYXB0
dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzBCRUQ5NzI3M0Y0
MTU2MDA1ODM5MjYgLyogU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzBFMDkxODE4NzVFRDkzMDAzQTFEM0MgLyogUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRp
YVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwRTA5MUExODc1RUY3
MTAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMjUsNyArNjEyMSw2IEBACiAJCTA3RTNERkQwMUE5RTc4NjUw
MDc2NENBOCAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdFOUUxMkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdFOUUxMkYxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwN0VEMTkzNzI3NjI3Njk0MDBBRjFFQzUgLyogRGlzcGxheUNhcHR1cmVNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlDYXB0dXJlTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0VFNzZFOTFCRTk2REIwMDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0VFNzZFQTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFRTc2RUQxQkVBNjE5
ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ3NSw3ICsxODQ3MCw2IEBACiAJCQkJMDdCNzExNkEx
RDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLywKIAkJCQkwN0I3MTE2QjFEODk5
RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovLAogCQkJCTA3QjcxMTZD
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAotCQkJCTA3RUQx
OTM3Mjc2Mjc2OTQwMEFGMUVDNSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIuaCAqLywKIAkJCQk1
RUJCODkzMDFDNzc3N0UxMDBDNjVENDEgLyogSWNlQ2FuZGlkYXRlLmggKi8sCiAJCQkJNDFDMTRC
QzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi8sCiAJCQkJMUJFNUJG
QzExRDUxNTcxNTAwMTY2NkQ5IC8qIE1lZGlhQ29uc3RyYWludHMuY3BwICovLApAQCAtMTg1ODcs
OCArMTg1ODEsNiBAQAogCQkJCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUI4MyAvKiBSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oICovLAogCQkJCTQxOTI0MjQ3MjEyN0I3Q0MwMDYzNEZD
RiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSAqLywKIAkJCQk0MUQxOTM4
RjIxNTJDNTYxMDA2RjE0Q0EgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oICovLAotCQkJCTA3
MEJFRDk3MjczRjQxNTYwMDU4MzkyNiAvKiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5o
ICovLAotCQkJCTA3MEJFRDk2MjczRjQxNTYwMDU4MzkyNiAvKiBTY3JlZW5DYXB0dXJlS2l0Q2Fw
dHVyZVNvdXJjZS5tbSAqLywKIAkJCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckNvY29hLmggKi8sCiAJCQkJMDdENjM3M0YxQkIwQjExMzAwMjU2Q0U5
IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbSAqLywKIAkJCSk7CkBAIC0zNDAxNyw3
ICszNDAwOSw2IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERpcmVjdG9yeUZp
bGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5M0E5NzAwMjQw
RkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFREFBRkM5
MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBIZWFkZXJzICov
LAotCQkJCTA3RUQxOTM4Mjc2Mjc2OTQwMEFGMUVDNSAvKiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3QkIxRTcwMjcxNzZDRDkwMDFERjI4OSAvKiBEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkZGNTlGNDI3NTc3MjY3
MDA3NzNEMzkgLyogRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzY4MDMsNyArMzY3OTQsNiBAQAogCQkJCTlCRDBCRjkzMTJBNDJCRjUwMDcyRkQ0
MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjczMTFGQjI1QzA5
MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxQkUwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMDcwQkVEOTgyNzNGNDE1RDAwNTgzOTI2IC8qIFNjcmVlbkNhcHR1cmVLaXRD
YXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMUUxRDIzNjIwM0RGMTU0MDA1ODQ2
NjUgLyogU2NyZWVuUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyQzExMUQz
NDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRl
eCAzZWVlODhmMjE2ZTk3OGRmNjMwOTY4NTljMTRiNGNiNTU4NGZhNWY0Li5hYzc0NTMyNmQ3MmFj
ZjBkZWFkZWNlY2RlMjE4MDU3OWI2YmZhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
bi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTE0NSwxMiArMTQ1LDYgQEAKIC8qIFVuZG8gYWN0aW9u
IG5hbWUgKi8KICJBbGlnbiBSaWdodCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkFsaWduIFJpZ2h0
IjsKIAotLyogQWxsb3cgc2NyZWVuIGJ1dHRvbiB0aXRsZSBpbiB3aW5kb3cgYW5kIHNjcmVlbiBz
aGFyaW5nIHByb21wdCAqLwotIkFsbG93IE9ic2VydmluZyBhIFNjcmVlbiIgPSAiQWxsb3cgT2Jz
ZXJ2aW5nIGEgU2NyZWVuIjsKLQotLyogQWxsb3cgd2luZG93IGJ1dHRvbiB0aXRsZSBpbiB3aW5k
b3cgYW5kIHNjcmVlbiBzaGFyaW5nIHByb21wdCAqLwotIkFsbG93IE9ic2VydmluZyBhIFdpbmRv
dyIgPSAiQWxsb3cgT2JzZXJ2aW5nIGEgV2luZG93IjsKLQogLyogQnV0dG9uIHRpdGxlIGluIFN0
b3JhZ2UgQWNjZXNzIEFQSSBwcm9tcHQgKi8KICJBbGxvdyAoY3Jvc3Mtc2l0ZSBjb29raWUgYW5k
IHdlYnNpdGUgZGF0YSBhY2Nlc3MpIiA9ICJBbGxvdyI7CiAKQEAgLTE2OSwxOCArMTYzLDEyIEBA
CiAvKiBBbGxvdyBidXR0b24gdGl0bGUgaW4gdXNlciBtZWRpYSBwcm9tcHQgKi8KICJBbGxvdyAo
dXNlcm1lZGlhKSIgPSAiQWxsb3ciOwogCi0vKiBBbGxvdyBidXR0b24gdGl0bGUgaW4gd2luZG93
IHNoYXJpbmcgcHJvbXB0ICovCi0iQWxsb3cgKHdpbmRvdyBzaGFyaW5nKSIgPSAiQWxsb3ciOwot
CiAvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRl
IGRhdGEgYWNjZXNzLiAqLwogIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2UgY29v
a2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxsb3cg
4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hp
bGUgYnJvd3Npbmcg4oCcJUDigJ0/IjsKIAogLyogTWVzc2FnZSBmb3Igc3BlY2hyZWNvZ25pdGlv
biBwcm9tcHQgKi8KICJBbGxvdyDigJwlQOKAnSB0byBjYXB0dXJlIHlvdXIgYXVkaW8gYW5kIHVz
ZSBpdCBmb3Igc3BlZWNoIHJlY29nbml0aW9uPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gY2FwdHVy
ZSB5b3VyIGF1ZGlvIGFuZCB1c2UgaXQgZm9yIHNwZWVjaCByZWNvZ25pdGlvbj8iOwogCi0vKiBN
ZXNzYWdlIGZvciB3aW5kb3cgYW5kIHNjcmVlbiBzaGFyaW5nIHByb21wdCAqLwotIkFsbG93IOKA
nCVA4oCdIHRvIG9ic2VydmUgb25lIG9mIHlvdXIgd2luZG93cyBvciBzY3JlZW5zPyIgPSAiQWxs
b3cg4oCcJUDigJ0gdG8gb2JzZXJ2ZSBvbmUgb2YgeW91ciB3aW5kb3dzIG9yIHNjcmVlbnM/IjsK
LQogLyogTWVzc2FnZSBmb3Igc2NyZWVuIHNoYXJpbmcgcHJvbXB0ICovCiAiQWxsb3cg4oCcJUDi
gJ0gdG8gb2JzZXJ2ZSB5b3VyIHNjcmVlbj8iID0gIkFsbG93IOKAnCVA4oCdIHRvIG9ic2VydmUg
eW91ciBzY3JlZW4/IjsKIApAQCAtMjgwLDkgKzI2OCw2IEBACiAvKiBMYWJlbCBmb3IgdGhlIGNo
ZWNrIG91dCB3aXRoIEFwcGxlIFBheSBidXR0b24uICovCiAiQ2hlY2sgb3V0IHdpdGggQXBwbGUg
UGF5IiA9ICJDaGVjayBvdXQgd2l0aCBBcHBsZSBQYXkiOwogCi0vKiBNZXNzYWdlIGZvciB3aW5k
b3cgc2hhcmluZyBwcm9tcHQgKi8KLSJDaG9vc2UgYSB3aW5kb3cgdG8gc2hhcmUiID0gIkNob29z
ZSBhIHdpbmRvdyB0byBzaGFyZSI7Ci0KIC8qIHRpdGxlIGZvciBhIHNpbmdsZSBmaWxlIGNob29z
ZXIgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyAqLwogIkNob29zZSBGaWxlIiA9ICJDaG9vc2Ug
RmlsZSI7CiAKQEAgLTQxMiwxMiArMzk3LDYgQEAKIC8qIERpc2FsbG93IGJ1dHRvbiB0aXRsZSBp
biB1c2VyIG1lZGlhIHByb21wdCAqLwogIkRvbuKAmXQgQWxsb3cgKHVzZXJtZWRpYSkiID0gIkRv
buKAmXQgQWxsb3ciOwogCi0vKiBEaXNhbGxvdyBidXR0b24gdGl0bGUgaW4gd2luZG93IGFuZCBz
Y3JlZW4gc2hhcmluZyBwcm9tcHQgKi8KLSJEb27igJl0IEFsbG93ICh3aW5kb3cgYW5kIHNjcmVl
biBzaGFyaW5nKSIgPSAiRG9u4oCZdCBBbGxvdyI7Ci0KLS8qIERpc2FsbG93IGJ1dHRvbiB0aXRs
ZSBpbiB3aW5kb3cgc2hhcmluZyBwcm9tcHQgKi8KLSJEb27igJl0IEFsbG93ICh3aW5kb3cgc2hh
cmluZykiID0gIkRvbuKAmXQgQWxsb3ciOwotCiAvKiBEb3dubG9hZCBBdWRpbyBUbyBEaXNrIGNv
bnRleHQgbWVudSBpdGVtICovCiAiRG93bmxvYWQgQXVkaW8iID0gIkRvd25sb2FkIEF1ZGlvIjsK
IApAQCAtMTE4Myw5ICsxMTYyLDYgQEAKIC8qIFVud2FudGVkIHNvZnR3YXJlIHdhcm5pbmcgdGl0
bGUgKi8KICJXZWJzaXRlIFdpdGggSGFybWZ1bCBTb2Z0d2FyZSBXYXJuaW5nIiA9ICJXZWJzaXRl
IFdpdGggSGFybWZ1bCBTb2Z0d2FyZSBXYXJuaW5nIjsKIAotLyogTGFiZWwgZm9yIHdpbmRvdyBz
aGFyaW5nIG1lbnUgKi8KLSJXaW5kb3c6ICIgPSAiV2luZG93OiAiOwotCiAvKiBZZWFyIGxhYmVs
IGluIGRhdGUgcGlja2VyICovCiAiWUVBUiAoRGF0ZSBwaWNrZXIgZm9yIGV4dHJhIHpvb20gbW9k
ZSkiID0gIllFQVIiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9EaXNwbGF5Q2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0Rpc3BsYXlDYXB0dXJlTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwN2QyMjI5Mjg2MWE2YzVlMGM1ZGJiNzBiMWQ1NDU0ZWEyN2Y1YTgxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0Rpc3BsYXlDYXB0dXJlTWFuYWdlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lu
Y2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRGlzcGxheUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
IHsKLXB1YmxpYzoKLQotICAgIHN0cnVjdCBXaW5kb3dDYXB0dXJlRGV2aWNlIHsKLSAgICAgICAg
Q2FwdHVyZURldmljZSBtX2RldmljZTsKLSAgICAgICAgU3RyaW5nIG1fYXBwbGljYXRpb247Ci0g
ICAgfTsKLQotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dEZXZpY2VzKFZlY3RvcjxXaW5kb3dDYXB0
dXJlRGV2aWNlPiYpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCA5NDQ1YWRhYTU5ODJlYTFl
M2U5ZjRjZDlkYTM3NGVlODFkYzk0NWM3Li5iYTAyOGY0ZGJkZmQxOWViMTJhNmM3ZmVjNmNhMDQ0
ODY5NjUxNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC01NzMsNyArNTczLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBnZXRFeGFjdChWZWN0b3I8U3RyaW5nPiYgZXhhY3QpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiAobV9leGFjdC5pc0VtcHR5KCkpCisgICAgICAgIGlmICghbV9leGFjdC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZXhhY3QgPSBtX2V4YWN0
OwpAQCAtNTgyLDcgKzU4Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZ2V0SWRlYWwoVmVjdG9y
PFN0cmluZz4mIGlkZWFsKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1faWRlYWwuaXNFbXB0
eSgpKQorICAgICAgICBpZiAoIW1faWRlYWwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIGlkZWFsID0gbV9pZGVhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggNWVkODYwODg3ZWNmOGQ0NWVjZGQ0ZTQ4MjljMWQ2MmQxN2Q4ZDUzYS4uMWRkMWU1ZmU1
YjE0MTFlYzkxM2VhNzA0MDQ5YjM2YzAyNmJiMjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
QEAgLTQ4OSw3ICs0ODksNiBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rp
c3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICB9CiAKICAgICBj
YXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkRldmljZUlkOgotICAgICAgICBBU1NFUlQoY29uc3Ry
YWludC5pc1N0cmluZygpKTsKICAgICAgICAgQVNTRVJUKCFtX2hhc2hlZElELmlzRW1wdHkoKSk7
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxTdHJpbmdDb25zdHJhaW50Pihjb25zdHJhaW50KS5m
aXRuZXNzRGlzdGFuY2UobV9oYXNoZWRJRCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA0MzA4MGQ0OTEwYzE3MDc2NjkyN2U4MDM5NjBkY2Nl
NmZmNTE1MjU4Li5mOTJhZTE3M2YxYWE2OWVhNzE4NGYwMjYyNGJlZTYwYjQwODMzMTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlTWFuYWdlci5o
IgorI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFj
a0FnZ3JlZ2F0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAppbmRleCBhZDY2ZTBk
NWMxNzQ5YWZhOGE3NzlmMzVmYmM2YmQzNDNkZGZiM2FhLi5lZWJkODM0MjVkYmU0NjcxNmRiNWIw
YjM2ODM4ODdmNDRjOWEwY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCkBAIC0x
MTAsMTEgKzExMCw2IEBAIHB1YmxpYzoKICAgICBPU09iamVjdFB0cjx0Y2NfaWRlbnRpdHlfdD4g
aWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aXR5OyB9CiAjZW5kaWYKIAotI2lmIEhB
VkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotICAgIGJvb2wgdXNlU2NyZWVuQ2FwdHVyZUtpdCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0VXNlU2NyZWVuQ2FwdHVyZUtpdChib29sKTsKLSNlbmRpZgotCiBw
cml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKTsKICAgICBmcmllbmQgY2xh
c3MgTmV2ZXJEZXN0cm95ZWQ8UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcj47CkBAIC0xNDksMjUg
KzE0NCw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKICAgICBP
U09iamVjdFB0cjx0Y2NfaWRlbnRpdHlfdD4gbV9pZGVudGl0eTsKICNlbmRpZgotCi0jaWYgSEFW
RShTQ1JFRU5fQ0FQVFVSRV9LSVQpCi0gICAgYm9vbCBtX3VzZVNjcmVlbkNhcHR1cmVLaXQgeyBm
YWxzZSB9OwotI2VuZGlmCi0gICAgYm9vbCBtX3VzZU1vY2tDYXB0dXJlRGV2aWNlcyB7IGZhbHNl
IH07CiB9OwogCi0jaWYgSEFWRShTQ1JFRU5fQ0FQVFVSRV9LSVQpCi1pbmxpbmUgYm9vbCBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp1c2VTY3JlZW5DYXB0dXJlS2l0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV91c2VTY3JlZW5DYXB0dXJlS2l0OwotfQotCi1pbmxpbmUgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyOjpzZXRVc2VTY3JlZW5DYXB0dXJlS2l0KGJvb2wgdXNlU2NyZWVu
Q2FwdHVyZUtpdCkKLXsKLSAgICBtX3VzZVNjcmVlbkNhcHR1cmVLaXQgPSB1c2VTY3JlZW5DYXB0
dXJlS2l0OwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaAppbmRl
eCBhYTI5OTRkZDJkMDVhZmUyNjU5YTI2MWI0NDMyYTQ3ZDZlYzk3NzBjLi45OWQ5NDVhODAyMzY5
YmJiY2FhMTI2ZmZiNWEyODNjZmQ4OWNkZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VGYWN0
b3J5LmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYXB0
dXJlRGV2aWNlOwogY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXI7Ci1jbGFzcyBEaXNwbGF5Q2Fw
dHVyZU1hbmFnZXI7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlOwogCiBzdHJ1Y3QgQ2FwdHVy
ZVNvdXJjZU9yRXJyb3I7CkBAIC05Niw3ICs5NSw3IEBAIGNsYXNzIERpc3BsYXlDYXB0dXJlRmFj
dG9yeQogcHVibGljOgogICAgIHZpcnR1YWwgfkRpc3BsYXlDYXB0dXJlRmFjdG9yeSgpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZURpc3BsYXlDYXB0
dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmLCBTdHJpbmcmJiwgY29uc3QgTWVkaWFDb25z
dHJhaW50cyopID0gMDsKLSAgICB2aXJ0dWFsIERpc3BsYXlDYXB0dXJlTWFuYWdlciYgZGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZU1h
bmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKIAogcHJvdGVjdGVkOgog
ICAgIERpc3BsYXlDYXB0dXJlRmFjdG9yeSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggNjFmMDg4ODAxYjM5MmVhYWQwMjMwNjkw
Y2RjYTA1MzM1ZjYwYmJkZi4uYzliOTI0MjEzZDVhZTA3ODJjOGJhNmU4MmMwZDE5ZDIyNDFjMWJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkK
IAogI2luY2x1ZGUgIkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaCIKKyNpbmNs
dWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2luY2x1ZGUgIkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpD
LmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxJT1N1
cmZhY2UvSU9TdXJmYWNlUmVmLmg+CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRp
bWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
ICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVBdWRpb1NQSS5oPgogI2luY2x1ZGUgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VT
UEkuaD4KQEAgLTUwLDEzICs1Miw2IEBACiAjaW5jbHVkZSAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZS5oIgogI2VuZGlmCiAKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSNpbmNsdWRlICJT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJDb3Jl
VmlkZW9Tb2Z0TGluay5oIgotI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIFN0cmlu
ZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKQEAgLTY2
LDE5ICs2MSw5IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OmNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiBkZXZpCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgICAgICByZXR1cm4gY3JlYXRlKFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZShkZXZp
Y2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIFdURk1vdmUoaGFzaFNhbHQpLCBjb25zdHJhaW50
cyk7CiAjZWxzZQotI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotICAgICAgICBpZiAoU2Ny
ZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlKFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpjcmVhdGUoZGV2aWNl
LCBjb25zdHJhaW50cyksIGRldmljZSwgV1RGTW92ZShoYXNoU2FsdCksIGNvbnN0cmFpbnRzKTsK
LSNlbmRpZgogICAgICAgICByZXR1cm4gY3JlYXRlKENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNyZWF0ZShkZXZpY2UucGVyc2lzdGVudElkKCkpLCBkZXZpY2UsIFdURk1vdmUo
aGFzaFNhbHQpLCBjb25zdHJhaW50cyk7CiAjZW5kaWYKICAgICBjYXNlIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OldpbmRvdzoKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSAgICAg
ICAgaWYgKFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjppc0F2YWlsYWJsZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZShTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6Y3Jl
YXRlKGRldmljZSwgY29uc3RyYWludHMpLCBkZXZpY2UsIFdURk1vdmUoaGFzaFNhbHQpLCBjb25z
dHJhaW50cyk7Ci0jZW5kaWYKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZToK
ICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXI6CiAgICAgY2FzZSBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE6CkBAIC0xMDksOCArOTQsOSBAQCBEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKFVuaXF1ZVJl
ZjxDYXB0dXJlcj4mJiBjYXB0dQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRl
bywgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUoaGFzaFNhbHQpKQog
ICAgICwgbV9jYXB0dXJlcihXVEZNb3ZlKGNhcHR1cmVyKSkKICAgICAsIG1fdGltZXIoUnVuTG9v
cDo6Y3VycmVudCgpLCB0aGlzLCAmRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1l
KQorICAgICwgbV9jYXB0dXJlcklzUnVubmluZ09ic2VydmVyKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoYm9vbCBpc1J1bm5pbmcpIHsgaWYgKHdlYWtUaGlzKSB3ZWFrVGhpcy0+bm90
aWZ5TXV0ZWRDaGFuZ2UoIWlzUnVubmluZyk7IH0pCiB7Ci0gICAgbV9jYXB0dXJlci0+c2V0T2Jz
ZXJ2ZXIodGhpcyk7CisgICAgbV9jYXB0dXJlci0+c2V0SXNSdW5uaW5nT2JzZXJ2ZXIoJm1fY2Fw
dHVyZXJJc1J1bm5pbmdPYnNlcnZlcik7CiB9CiAKIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6
On5EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hKCkKQEAgLTMxNyw5ICszMDMsMTAgQEAgV1RGTG9n
Q2hhbm5lbCYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI6OmxvZ0NoYW5uZWwo
KSBjb25zdAogICAgIHJldHVybiBMb2dXZWJSVEM7CiB9CiAKLXZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6Q2FwdHVyZXI6OnNldE9ic2VydmVyKENhcHR1cmVyT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcjo6Y2FwdHVyZXJJ
c1J1bm5pbmdDaGFuZ2VkKGJvb2wgcnVubmluZykKIHsKLSAgICBtX29ic2VydmVyID0gV2Vha1B0
ciB7IG9ic2VydmVyIH07CisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAgICAgICgqbV9vYnNlcnZl
cikocnVubmluZyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAppbmRleCBhYTliNzJiODViMTMxNzhlMmNlMTg0M2Jj
Nzg4NGZlNmRlZjFhYTQ4Li5iMWQwYWFiNWI0OWQ1OTQ3ZWFlMmUxOWFkYzVkNmZlODc0ZTc2NWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC01MSwyNCAr
NTEsMTMgQEAgY2xhc3MgQ2FwdHVyZURldmljZUluZm87CiBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKIAotY2xhc3MgQ2FwdHVyZXJP
YnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYXB0dXJlck9ic2VydmVyPiB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+Q2FwdHVyZXJPYnNlcnZlcigpID0gZGVmYXVsdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBjYXB0dXJlcklzUnVubmluZ0NoYW5nZWQoYm9vbCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGNhcHR1cmVyRmFpbGVkKCkgeyB9OwotfTsKLQotY2xhc3MgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYSBmaW5hbAotICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKLSAgICAs
IHB1YmxpYyBDYXB0dXJlck9ic2VydmVyIHsKK2NsYXNzIERpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E+IHsKIHB1YmxpYzoKICAgICB1c2luZyBEaXNw
bGF5RnJhbWVUeXBlID0gc3RkOjp2YXJpYW50PFJlZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFpblB0
cjxJT1N1cmZhY2VSZWY+LCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PjsKIAogICAgIGNs
YXNzIENhcHR1cmVyIDogcHVibGljIExvZ2dlckhlbHBlciB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLQogICAgICAgICB2aXJ0dWFsIH5DYXB0dXJlcigp
ID0gZGVmYXVsdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoKSA9IDA7CkBAIC04NSwy
MyArNzQsMTUgQEAgcHVibGljOgogICAgICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgICAgIFdURkxvZ0No
YW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKIAotICAgICAgICB2b2lkIHNldE9ic2Vy
dmVyKENhcHR1cmVyT2JzZXJ2ZXIqKTsKKyAgICAgICAgdXNpbmcgSXNSdW5uaW5nT2JzZXJ2ZXIg
PSBXVEY6Ok9ic2VydmVyPHZvaWQoYm9vbCk+OworICAgICAgICB2b2lkIHNldElzUnVubmluZ09i
c2VydmVyKElzUnVubmluZ09ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVyID0gb2JzZXJ2
ZXI7IH07CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIENhcHR1cmVyKCkgPSBkZWZhdWx0Owot
ICAgICAgICB2b2lkIGlzUnVubmluZ0NoYW5nZWQoYm9vbCBydW5uaW5nKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9vYnNlcnZlcikKLSAgICAgICAgICAgICAgICBtX29ic2VydmVyLT5j
YXB0dXJlcklzUnVubmluZ0NoYW5nZWQocnVubmluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9p
ZCBjYXB0dXJlRmFpbGVkKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fb2JzZXJ2ZXIp
Ci0gICAgICAgICAgICAgICAgbV9vYnNlcnZlci0+Y2FwdHVyZXJGYWlsZWQoKTsKLSAgICAgICAg
fQorICAgICAgICB2b2lkIGNhcHR1cmVySXNSdW5uaW5nQ2hhbmdlZChib29sKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFdlYWtQdHI8Q2FwdHVyZXJPYnNlcnZlcj4gbV9vYnNlcnZlcjsKKyAg
ICAgICAgV2Vha1B0cjxJc1J1bm5pbmdPYnNlcnZlcj4gbV9vYnNlcnZlcjsKICAgICAgICAgUmVm
UHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKICAgICB9OwpAQCAtMTI5LDEwICsxMTAsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hIjsgfQogICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0
IHZvaWQqKSBmaW5hbDsKIAotICAgIC8vIENhcHR1cmVyT2JzZXJ2ZXIKLSAgICB2b2lkIGNhcHR1
cmVySXNSdW5uaW5nQ2hhbmdlZChib29sIGlzUnVubmluZykgZmluYWwgeyBub3RpZnlNdXRlZENo
YW5nZSghaXNSdW5uaW5nKTsgfQotICAgIHZvaWQgY2FwdHVyZXJGYWlsZWQoKSBmaW5hbCB7IGNh
cHR1cmVGYWlsZWQoKTsgfQotCiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIAogICAgIFVuaXF1ZVJl
ZjxDYXB0dXJlcj4gbV9jYXB0dXJlcjsKQEAgLTE0Niw2ICsxMjMsNyBAQCBwcml2YXRlOgogICAg
IFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E+IG1fdGltZXI7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQoYm9vbCk+IG1fY2FwdHVyZXJJc1J1bm5p
bmdPYnNlcnZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0
dXJlRGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggOWVlNDhiYjA1
ZjEyMGVmNjZkMTE4YTkwNDU3ZDk3NzZlMGYzN2YwYy4uZTUwMDEyMjg0NDlmMzI4ZGM0ZDM3ZmE5
NWZlNDcxODE3ZmMwNTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZU1h
bmFnZXIuaCIKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkdS
ZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaCIKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZh
dWx0OwogfTsKIAotY2xhc3MgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyIGZp
bmFsIDogcHVibGljIERpc3BsYXlDYXB0dXJlTWFuYWdlciB7CitjbGFzcyBHU3RyZWFtZXJEaXNw
bGF5Q2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFn
ZXIgewogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxHU3RyZWFtZXJEaXNwbGF5Q2Fw
dHVyZURldmljZU1hbmFnZXI+OwogcHVibGljOgogICAgIHN0YXRpYyBHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXImIHNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBlMTNkNTNiMmIyNGRjZTlk
NTAyNmRhMjM3MjgzM2U0ZTQyMTNiMWUwLi4zMDM0MTE1N2IwMGQwMGZmYTdmYmJhN2NjZDZlNTlj
MzIxMjI5NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShHU1RSRUFNRVIpCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
LmgiCiAKLSNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJHU3Ry
ZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVh
bWVyLmgiCiAKQEAgLTc4LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWFuYWdl
ci5jcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShkZXZpY2UsIFdURk1vdmUoaGFzaFNhbHQpLCBj
b25zdHJhaW50cyk7CiAgICAgfQogcHJpdmF0ZToKLSAgICBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIm
IGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIEdTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCk7IH0KKyAgICBDYXB0dXJlRGV2
aWNlTWFuYWdlciYgZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgZmluYWwgeyByZXR1cm4g
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKTsgfQogfTsK
IAogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVh
dGUoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KaW5k
ZXggNjNlZTFjOGJmYzk4N2VhYWEyMjMyM2U0NWMxNzY5OGMwMjBhMGNmOC4uNTVmNjM1YmYyY2Y4
ZWE0YzFmYmVmZTFmODJhOTM4YmI1ZWM4MzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVT
b3VyY2UubW0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6
OmNhcHR1cmVTdGF0ZURpZENoYW5nZSgpCiAKICAgICAgICAgbV9pc1J1bm5pbmcgPSBpc1JlY29y
ZGluZyAmJiAhbV9pbnRlcnJ1cHRlZDsKICAgICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIo
KSwgaWRlbnRpZmllciwgbV9pc1J1bm5pbmcpOwotICAgICAgICBpc1J1bm5pbmdDaGFuZ2VkKG1f
aXNSdW5uaW5nKTsKKyAgICAgICAgY2FwdHVyZXJJc1J1bm5pbmdDaGFuZ2VkKG1faXNSdW5uaW5n
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5j
cHAKaW5kZXggZDMzYjBkYTdlNWNlMjllNWU4ZGMwN2IzNGU3MDM2ZGY2Y2U3NTcwNC4uMTk3YzY2
ZjY5NzE0OTgyOTQ4ZDZiNGZmMGZjMzQ5Y2MyYzk0ZjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5oIgotI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKQEAgLTQxLDEwICs0MCw2IEBACiAjaW5jbHVkZSAiUmVwbGF5S2l0Q2FwdHVyZVNvdXJj
ZS5oIgogI2VuZGlmCiAKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSNpbmNsdWRlICJT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EmIERpc3BsYXlDYXB0dXJlTWFuYWdl
ckNvY29hOjpzaW5nbGV0b24oKQpAQCAtNjYsMTYgKzYxLDcgQEAgY29uc3QgVmVjdG9yPENhcHR1
cmVEZXZpY2U+JiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6Y2FwdHVyZURldmljZXMoKQog
dm9pZCBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6dXBkYXRlRGlzcGxheUNhcHR1cmVEZXZp
Y2VzKCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0KLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJ
VCkKLSAgICBpZiAoU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkp
IHsKLSAgICAgICAgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVE
ZXZpY2VzKG1fZGV2aWNlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAg
IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2Vz
KG1fZGV2aWNlcyk7Ci0KICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBSZXBsYXlLaXRDYXB0dXJl
U291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlcyhtX2RldmljZXMpOwogI2VuZGlmCkBAIC04Mywy
MyArNjksMTIgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6dXBkYXRlRGlzcGxh
eUNhcHR1cmVEZXZpY2VzKCkKIAogdm9pZCBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6dXBk
YXRlV2luZG93Q2FwdHVyZURldmljZXMoKQogewotI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lU
KQotICAgIGlmIChTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6aXNBdmFpbGFibGUoKSkK
LSAgICAgICAgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OndpbmRvd0NhcHR1cmVEZXZp
Y2VzKG1fZGV2aWNlcyk7Ci0jZW5kaWYKIH0KIAogc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNl
PiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0K
LSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSAgICBpZiAoU2NyZWVuQ2FwdHVyZUtpdENh
cHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBTY3JlZW5DYXB0dXJl
S2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoZGV2
aWNlSUQpOwotI2VuZGlmCi0KICAgICByZXR1cm4gQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoZGV2aWNlSUQpOwot
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkZXZpY2VJRCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKQEAgLTEwOSwxMiArODQsNiBAQCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IERp
c3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aAogc3RkOjpv
cHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYTo6d2luZG93
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsK
ICAgICBVTlVTRURfUEFSQU0oZGV2aWNlSUQpOwotCi0jaWYgSEFWRShTQ1JFRU5fQ0FQVFVSRV9L
SVQpCi0gICAgaWYgKFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjppc0F2YWlsYWJsZSgp
KQotICAgICAgICByZXR1cm4gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OndpbmRvd0Nh
cHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGRldmljZUlEKTsKLSNlbmRpZgotCiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTQwLDE2ICsxMDksNiBAQCBzdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjpjYXB0dXJlRGV2aWNl
V2l0aFBlcnNpcwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2E6OndpbmRvd0RldmljZXMoVmVjdG9yPERpc3BsYXlDYXB0dXJlTWFu
YWdlcjo6V2luZG93Q2FwdHVyZURldmljZT4mIHdpbmRvd0RldmljZXMpCi17Ci0jaWYgSEFWRShT
Q1JFRU5fQ0FQVFVSRV9LSVQpCi0gICAgaWYgKFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
Ojppc0F2YWlsYWJsZSgpKQotICAgICAgICByZXR1cm4gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVT
b3VyY2U6OndpbmRvd0RldmljZXMod2luZG93RGV2aWNlcyk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTSh3aW5kb3dEZXZpY2VzKTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2EuaAppbmRleCA3ZDNhNjE4ODRjY2Q5YmY2ODhlZjQ5YTUzYmM3ZjE0Mzdi
YzZjYzRiLi4yOGZmZjQwYTc5NzEzNzA2OTY2OTA0ODU3NDMzMmQ4ZWIyMmVmM2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuaApAQCAtMjcsMTEgKzI3LDExIEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiRGlzcGxheUNhcHR1cmVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIgeworY2xhc3MgRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29j
b2EgZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBEaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYSYgc2luZ2xldG9uKCk7CiAKQEAgLTQ5LDgg
KzQ5LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwogICAgIHN0ZDo6
b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHdpbmRvd0RldmljZXMoVmVjdG9yPFdpbmRv
d0NhcHR1cmVEZXZpY2U+JikgZmluYWw7Ci0KICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbV9k
ZXZpY2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMu
Y3BwCmluZGV4IGFjYTliZmIzODI1Y2EwNGFhNzc1MzU5MDg0MmIxOTM4MjFkNTI5ZTEuLmU1NTVi
YjhlYjRhZThiNTY1MTg4YWQyOTY5ZjRiMTM3MDE4NjEzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y3JlYXRlKGRldmljZSwg
V1RGTW92ZShoYXNoU2FsdCksIGNvbnN0cmFpbnRzKTsKICAgICB9CiBwcml2YXRlOgotICAgIERp
c3BsYXlDYXB0dXJlTWFuYWdlciYgZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1
cm4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OnNpbmdsZXRvbigpOyB9CisgICAgQ2FwdHVy
ZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIERp
c3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjpzaW5nbGV0b24oKTsgfQogfTsKIAogQXVkaW9DYXB0
dXJlRmFjdG9yeSYgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGVmYXVsdEF1ZGlvQ2FwdHVy
ZUZhY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNhM2FhN2IzYjU3NmM4NjNlNmRhMzJiZmE3
NzE2MmJiNTA4ZWFhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVy
ZUtpdENhcHR1cmVTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLQotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJl
TWFuYWdlci5oIgotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCIKLSNpbmNs
dWRlIDx3dGYvQmxvY2tQdHIuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7Ci1PQkpDX0NMQVNT
IE5TRXJyb3I7Ci1PQkpDX0NMQVNTIFNDRGlzcGxheTsKLU9CSkNfQ0xBU1MgU0NTaGFyZWFibGVD
b250ZW50OwotT0JKQ19DTEFTUyBTQ1N0cmVhbTsKLU9CSkNfQ0xBU1MgU0NDb250ZW50RmlsdGVy
OwotT0JKQ19DTEFTUyBTQ1N0cmVhbUNvbmZpZ3VyYXRpb247Ci1PQkpDX0NMQVNTIFNDV2luZG93
OwotT0JKQ19DTEFTUyBXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlcjsKLXVzaW5nIENNU2Ft
cGxlQnVmZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKLQotdHlwZWRlZiBz
dHJ1Y3QgX19JT1N1cmZhY2UqIElPU3VyZmFjZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZSBmaW5hbAotICAgIDogcHVibGlj
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyCi0gICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1
cmVyPiwgU3RyaW5nPiBjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYsIGNvbnN0IE1lZGlhQ29u
c3RyYWludHMqKTsKLQotICAgIGV4cGxpY2l0IFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
KGNvbnN0IENhcHR1cmVEZXZpY2UmLCB1aW50MzJfdCk7Ci0gICAgdmlydHVhbCB+U2NyZWVuQ2Fw
dHVyZUtpdENhcHR1cmVTb3VyY2UoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IHNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNjcmVlbkNhcHR1cmVEZXZpY2VzKFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYpOwotCi0gICAgc3RhdGljIHZvaWQgd2luZG93Q2FwdHVyZURldmljZXMoVmVjdG9y
PENhcHR1cmVEZXZpY2U+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gd2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgd2luZG93RGV2aWNlcyhWZWN0b3I8RGlzcGxh
eUNhcHR1cmVNYW5hZ2VyOjpXaW5kb3dDYXB0dXJlRGV2aWNlPiYpOwotCi0gICAgdm9pZCBzdHJl
YW1GYWlsZWRXaXRoRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+JiYsIGNvbnN0IFN0cmluZyYpOwot
Ci1wcml2YXRlOgotCi0gICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXIK
LSAgICBib29sIHN0YXJ0KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkg
ZmluYWw7Ci0gICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
ZmluYWw7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5
cGUgc3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRp
b24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7Ci0gICAgSW50U2l6
ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7Ci0KLSAgICAvLyBMb2dnZXJIZWxwZXIKLSAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU2NyZWVu
Q2FwdHVyZUtpdENhcHR1cmVTb3VyY2UiOyB9Ci0KLSAgICB2b2lkIHN0YXJ0Q29udGVudFN0cmVh
bSgpOwotICAgIHZvaWQgcHJvY2Vzc1NoYXJhYmxlQ29udGVudChSZXRhaW5QdHI8U0NTaGFyZWFi
bGVDb250ZW50PiYmLCBSZXRhaW5QdHI8TlNFcnJvcj4mJik7Ci0gICAgdm9pZCBmaW5kU2hhcmVh
YmxlQ29udGVudCgpOwotICAgIFJldGFpblB0cjxTQ1N0cmVhbUNvbmZpZ3VyYXRpb24+IHN0cmVh
bUNvbmZpZ3VyYXRpb24oKTsKLSAgICB2b2lkIHVwZGF0ZVN0cmVhbUNvbmZpZ3VyYXRpb24oKTsK
LQotICAgIHVzaW5nIFNDQ29udGVudFN0cmVhbVVwZGF0ZUNhbGxiYWNrID0gdm9pZCAoXikoU0NT
dHJlYW0gKiwgQ01TYW1wbGVCdWZmZXJSZWYpOwotICAgIFNDQ29udGVudFN0cmVhbVVwZGF0ZUNh
bGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlcigpOwotCi0gICAgdXNpbmcgQ29udGVudCA9IHN0
ZDo6dmFyaWFudDxSZXRhaW5QdHI8U0NXaW5kb3c+LCBSZXRhaW5QdHI8U0NEaXNwbGF5Pj47Ci0g
ICAgc3RkOjpvcHRpb25hbDxDb250ZW50PiBtX2NvbnRlbnQ7Ci0KLSAgICBSZXRhaW5QdHI8V2Vi
Q29yZVNjcmVlbkNhcHR1cmVLaXRIZWxwZXI+IG1fY2FwdHVyZUhlbHBlcjsKLSAgICBSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fY3VycmVudEZyYW1lOwotICAgIFJldGFpblB0cjxTQ0Nv
bnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKLSAgICBSZXRhaW5QdHI8U0NTdHJlYW0+IG1f
Y29udGVudFN0cmVhbTsKLSAgICBSZXRhaW5QdHI8U0NTdHJlYW1Db25maWd1cmF0aW9uPiBtX3N0
cmVhbUNvbmZpZ3VyYXRpb247Ci0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9j
YXB0dXJlUXVldWU7Ci0gICAgQmxvY2tQdHI8dm9pZChTQ1N0cmVhbSAqLCBDTVNhbXBsZUJ1ZmZl
clJlZik+IG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyOwotICAgIENhcHR1cmVEZXZpY2UgbV9jYXB0
dXJlRGV2aWNlOwotICAgIHVpbnQzMl90IG1fZGV2aWNlSUQgeyAwIH07Ci0gICAgc3RkOjpvcHRp
b25hbDxJbnRTaXplPiBtX2ludHJpbnNpY1NpemU7Ci0KLSAgICB1aW50MzJfdCBtX3dpZHRoIHsg
MCB9OwotICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OwotICAgIGZsb2F0IG1fZnJhbWVSYXRl
IHsgMCB9OwotICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9OwotICAgIHN0YXRpYyBib29s
IG1fZW5hYmxlZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhB
VkUoU0NSRUVOX0NBUFRVUkVfS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0
dXJlU291cmNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTA2OGQ3Y2QyYmY0
ZDg4ZTI3NzZmOTQ5ODJhZDE5M2Y3YTI4YmJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291
cmNlLmgiCi0KLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLQotI2ltcG9ydCAiRGlzcGxh
eUNhcHR1cmVNYW5hZ2VyLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKLSNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW1w
b3J0ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCi0jaW1wb3J0ICJSZWFsdGltZVZpZGVv
VXRpbGl0aWVzLmgiCi0jaW1wb3J0IDxTY3JlZW5DYXB0dXJlS2l0L1NjcmVlbkNhcHR1cmVLaXQu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL1VV
SUQuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KLQot
I2ltcG9ydCA8cGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExpbmsuaD4KLQotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3VuZ3VhcmRlZC1hdmFpbGFiaWxpdHktbmV3IgotCi1AaW50ZXJmYWNlIFNDU3RyZWFtIChTQ1N0
cmVhbV9EZXByZWNhdGVkKQotLSAodm9pZClzdGFydENhcHR1cmVXaXRoQ0ZyYW1lSGFuZGxlcjoo
U0NTdHJlYW1CdWZmZXJGcmFtZUF2YWlsYWJsZUhhbmRsZXIpZnJhbWVIYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXI7Ci1A
ZW5kCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotQGludGVyZmFjZSBXZWJDb3JlU2NyZWVu
Q2FwdHVyZUtpdEhlbHBlciA6IE5TT2JqZWN0PFNDU3RyZWFtRGVsZWdhdGU+IHsKLSAgICBXZWFr
UHRyPFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlPiBfY2FsbGJhY2s7Ci19Ci0KLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihXZWFrUHRyPFNjcmVlbkNhcHR1cmVLaXRDYXB0
dXJlU291cmNlPiYmKWNhbGxiYWNrOwotLSAodm9pZClkaXNjb25uZWN0OwotLSAodm9pZClzdHJl
YW06KFNDU3RyZWFtICopc3RyZWFtIGRpZFN0b3BXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsK
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVscGVyCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooV2Vha1B0cjxTY3JlZW5DYXB0dXJlS2l0
Q2FwdHVyZVNvdXJjZT4mJiljYWxsYmFjawotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0g
ICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gc2VsZjsKLQotICAgIHJldHVybiBzZWxmOwot
fQotCi0tICh2b2lkKWRpc2Nvbm5lY3QKLXsKLSAgICBfY2FsbGJhY2sgPSBudWxscHRyOwotfQot
Ci0tICh2b2lkKXN0cmVhbTooU0NTdHJlYW0gKilzdHJlYW0gZGlkU3RvcFdpdGhFcnJvcjooTlNF
cnJvciAqKWVycm9yCi17Ci0gICAgY2FsbE9uTWFpblJ1bkxvb3AoW3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHIgeyBzZWxmIH0sIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3IgfV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgc3Ryb25nU2VsZi0+X2NhbGxiYWNrLT5zdHJlYW1GYWlsZWRXaXRoRXJyb3Io
V1RGTW92ZShlcnJvciksICItW1NDU3RyZWFtRGVsZWdhdGUgc3RyZWFtOmRpZFN0b3BXaXRoRXJy
b3I6XSBjYWxsZWQiX3MpOwotICAgIH0pOwotfQotQGVuZAotCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VuZ3VhcmRlZC1h
dmFpbGFiaWxpdHktbmV3IgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVw
cmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0KLXN0YXRpYyB2b2lkIGZvckVhY2hOU1dpbmRvdyhjb25z
dCBGdW5jdGlvbjxib29sKE5TRGljdGlvbmFyeSAqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJik+
Jik7Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6Om1fZW5hYmxlZDsKLQot
c3RhdGljIGJvb2wgdXNpbmdPbGRBUEkoKQotewotICAgIHN0YXRpYyBib29sIG9sZEFQSTsKLSAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57Ci0gICAgICAgIG9sZEFQSSA9ICEhUEFMOjpnZXRTQ1N0cmVhbUZpbHRlckNs
YXNzKCk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gb2xkQVBJOwotfQotCi12b2lkIFNjcmVlbkNh
cHR1cmVLaXRDYXB0dXJlU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBt
X2VuYWJsZWQgPSBlbmFibGVkOwotfQotCi1ib29sIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291
cmNlOjppc0F2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIG1fZW5hYmxlZAotICAgICAgICAmJiBQ
QUw6OmlzU2NyZWVuQ2FwdHVyZUtpdEZyYW1ld29ya0F2YWlsYWJsZSgpCi0gICAgICAgICYmIFBB
TDo6Y2FuTG9hZF9TY3JlZW5DYXB0dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5KCk7
Ci19Ci0KLUV4cGVjdGVkPFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0
dXJlcj4sIFN0cmluZz4gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25z
dCBDYXB0dXJlRGV2aWNlJiBkZXZpY2UsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKQotewotICAg
IEFTU0VSVChkZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
biB8fCBkZXZpY2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdyk7
Ci0KLSAgICBhdXRvIGRldmljZUlEID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90PihkZXZpY2UucGVy
c2lzdGVudElkKCkpOwotICAgIGlmICghZGV2aWNlSUQpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiSW52YWxpZCBkaXNwbGF5IGRldmljZSBJRCJfcyk7Ci0KLSAgICByZXR1cm4gVW5p
cXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPihtYWtlVW5pcXVlUmVm
PFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlPihkZXZpY2UsIGRldmljZUlELnZhbHVlKCkp
KTsKLX0KLQotU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OlNjcmVlbkNhcHR1cmVLaXRD
YXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmljZSwgdWludDMyX3QgZGV2aWNl
SUQpCi0gICAgOiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpDYXB0dXJlcigpCi0gICAgLCBt
X2NhcHR1cmVEZXZpY2UoZGV2aWNlKQotICAgICwgbV9kZXZpY2VJRChkZXZpY2VJRCkKLXsKLX0K
LQotU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6On5TY3JlZW5DYXB0dXJlS2l0Q2FwdHVy
ZVNvdXJjZSgpCi17Ci19Ci0KLWJvb2wgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKLXsKLSAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSk7Ci0KLSAgICBBTFdBWVNfTE9HX0lG
KGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKLQotICAgIGlmIChtX2lzUnVubmluZykKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtX2lzUnVubmluZyA9IHRydWU7Ci0gICAgc3RhcnRD
b250ZW50U3RyZWFtKCk7Ci0KLSAgICByZXR1cm4gbV9pc1J1bm5pbmc7Ci19Ci0KLXZvaWQgU2Ny
ZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0b3AoKQotewotICAgIGlmICghbV9pc1J1bm5p
bmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExP
R0lERU5USUZJRVIpOwotCi0gICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKLQotICAgIGlmIChtX2Nv
bnRlbnRTdHJlYW0pIHsKLSAgICAgICAgW21fY29udGVudFN0cmVhbSBzdG9wV2l0aEhhbmRsZXI6
bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNFcnJvciAqZXJy
b3IpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCBlcnJvciA9IFJldGFpblB0ciB7IGVycm9yIH1dKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+c3RyZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUoZXJyb3IpLCAiLVtTQ1N0cmVhbSBzdG9w
V2l0aEhhbmRsZXI6XSBmYWlsZWQiX3MpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pLmdl
dCgpXTsKLSAgICB9Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0
cmVhbUZhaWxlZFdpdGhFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4mJiBlcnJvciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBFUlJP
Ul9MT0dfSUYobG9nZ2VyUHRyKCkgJiYgZXJyb3IsIExPR0lERU5USUZJRVIsIG1lc3NhZ2UsICIg
d2l0aCBlcnJvciAnIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10s
ICInIik7Ci0gICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpICYmICFlcnJvciwgTE9HSURFTlRJ
RklFUiwgbWVzc2FnZSk7Ci0KLSAgICBjYXB0dXJlRmFpbGVkKCk7Ci19Ci0KLURpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVT
b3VyY2U6OmdlbmVyYXRlRnJhbWUoKQotewotICAgIHJldHVybiBtX2N1cnJlbnRGcmFtZTsKLX0K
LQotdm9pZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6cHJvY2Vzc1NoYXJhYmxlQ29u
dGVudChSZXRhaW5QdHI8U0NTaGFyZWFibGVDb250ZW50PiYmIHNoYXJlYWJsZUNvbnRlbnQsIFJl
dGFpblB0cjxOU0Vycm9yPiYmIGVycm9yKQotewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwotCi0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihXVEZN
b3ZlKGVycm9yKSwgIi1bU0NTdHJlYW0gZ2V0U2hhcmVhYmxlQ29udGVudFdpdGhDb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
bV9jYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW4pIHsKLSAgICAgICAgW1tzaGFyZWFibGVDb250ZW50IGRpc3BsYXlzXSBlbnVtZXJhdGVPYmpl
Y3RzVXNpbmdCbG9jazptYWtlQmxvY2tQdHIoWyZdIChTQ0Rpc3BsYXkgKmRpc3BsYXksIEJPT0wg
KnN0b3ApIHsKLSAgICAgICAgICAgIGlmIChkaXNwbGF5LmRpc3BsYXlJRCA9PSBtX2RldmljZUlE
KSB7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50ID0gZGlzcGxheTsKLSAgICAgICAgICAgICAg
ICAqc3RvcCA9IFlFUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkuZ2V0KCldOwotICAgIH0g
ZWxzZSBpZiAobV9jYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpXaW5kb3cpIHsKLSAgICAgICAgW1tzaGFyZWFibGVDb250ZW50IHdpbmRvd3NdIGVudW1l
cmF0ZU9iamVjdHNVc2luZ0Jsb2NrOm1ha2VCbG9ja1B0cihbJl0gKFNDV2luZG93ICp3aW5kb3cs
IEJPT0wgKnN0b3ApIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cud2luZG93SUQgPT0gbV9kZXZp
Y2VJRCkgewotICAgICAgICAgICAgICAgIG1fY29udGVudCA9IHdpbmRvdzsKLSAgICAgICAgICAg
ICAgICAqc3RvcCA9IFlFUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSkuZ2V0KCldOwotICAg
IH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGlmICghbV9jb250
ZW50KSB7Ci0gICAgICAgIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihuaWwsICJjYXB0dXJlIGRldmlj
ZSBub3QgZm91bmQiX3MpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RhcnRDb250
ZW50U3RyZWFtKCk7Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmZp
bmRTaGFyZWFibGVDb250ZW50KCkKLXsKLSAgICBBU1NFUlQoIW1fY29udGVudCk7Ci0KLSAgICBh
dXRvIG9sZEFQSUNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoU0NTaGFyZWFibGVDb250ZW50ICpzaGFyZWFibGVDb250ZW50KSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHNoYXJlYWJsZUNvbnRlbnQgPSBSZXRhaW5QdHIgeyBzaGFyZWFibGVDb250ZW50
IH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPnByb2Nlc3NTaGFyYWJsZUNvbnRlbnQoV1RGTW92ZShzaGFyZWFibGVDb250
ZW50KSwgeyB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIG5ld0FQSUNvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoU0NTaGFyZWFibGVDb250ZW50ICpzaGFyZWFibGVDb250ZW50LCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBzaGFyZWFibGVDb250ZW50ID0gUmV0YWluUHRyIHsgc2hhcmVhYmxlQ29udGVu
dCB9LCBlcnJvciA9IFJldGFpblB0ciB7IGVycm9yIH1dKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPnByb2Nlc3NTaGFyYWJs
ZUNvbnRlbnQoV1RGTW92ZShzaGFyZWFibGVDb250ZW50KSwgV1RGTW92ZShlcnJvcikpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLQotICAgIHVzaW5nIEdldFNoYXJlYWJsZUNvbnRlbnRDb21wbGV0
aW9uSGFuZGxlciA9IHZvaWQgKF4pKFNDU2hhcmVhYmxlQ29udGVudCAqLCBOU0Vycm9yICopOwot
ICAgIEdldFNoYXJlYWJsZUNvbnRlbnRDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
ciA9IHVzaW5nT2xkQVBJKCkgPyAoR2V0U2hhcmVhYmxlQ29udGVudENvbXBsZXRpb25IYW5kbGVy
KW9sZEFQSUNvbXBsZXRpb25IYW5kbGVyLmdldCgpIDogbmV3QVBJQ29tcGxldGlvbkhhbmRsZXIu
Z2V0KCk7Ci0gICAgW1BBTDo6Z2V0U0NTaGFyZWFibGVDb250ZW50Q2xhc3MoKSBnZXRTaGFyZWFi
bGVDb250ZW50V2l0aENvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKLX0KLQot
UmV0YWluUHRyPFNDU3RyZWFtQ29uZmlndXJhdGlvbj4gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVT
b3VyY2U6OnN0cmVhbUNvbmZpZ3VyYXRpb24oKQotewotICAgIGlmIChtX3N0cmVhbUNvbmZpZ3Vy
YXRpb24pCi0gICAgICAgIHJldHVybiBtX3N0cmVhbUNvbmZpZ3VyYXRpb247Ci0KLSAgICBpZiAo
dXNpbmdPbGRBUEkoKSkKLSAgICAgICAgbV9zdHJlYW1Db25maWd1cmF0aW9uID0gYWRvcHROUygo
U0NTdHJlYW1Db25maWd1cmF0aW9uICopW1BBTDo6YWxsb2NTQ1N0cmVhbVByb3BlcnRpZXNJbnN0
YW5jZSgpIGluaXRdKTsKLSAgICBlbHNlCi0gICAgICAgIG1fc3RyZWFtQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NTQ1N0cmVhbUNvbmZpZ3VyYXRpb25JbnN0YW5jZSgpIGluaXRd
KTsKLQotICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24gc2V0UGl4ZWxGb3JtYXQ6cHJlZmVyZWRQ
aXhlbEJ1ZmZlckZvcm1hdCgpXTsKLSAgICBbbV9zdHJlYW1Db25maWd1cmF0aW9uIHNldFNob3dz
Q3Vyc29yOllFU107Ci0gICAgW21fc3RyZWFtQ29uZmlndXJhdGlvbiBzZXRRdWV1ZURlcHRoOjZd
OwotICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24gc2V0Q29sb3JTcGFjZU5hbWU6KF9fYnJpZGdl
IE5TU3RyaW5nICopa0NHQ29sb3JTcGFjZUxpbmVhclNSR0JdOwotICAgIFttX3N0cmVhbUNvbmZp
Z3VyYXRpb24gc2V0Q29sb3JNYXRyaXg6KF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0
cmVhbVlDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NV07Ci0KLSAgICBpZiAobV9mcmFtZVJhdGUp
Ci0gICAgICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24gc2V0TWluaW11bUZyYW1lVGltZToxIC8g
bV9mcmFtZVJhdGVdOwotCi0gICAgaWYgKG1fd2lkdGggJiYgbV9oZWlnaHQpIHsKLSAgICAgICAg
W21fc3RyZWFtQ29uZmlndXJhdGlvbiBzZXRXaWR0aDptX3dpZHRoXTsKLSAgICAgICAgW21fc3Ry
ZWFtQ29uZmlndXJhdGlvbiBzZXRIZWlnaHQ6bV9oZWlnaHRdOwotICAgIH0KLQotICAgIHJldHVy
biBtX3N0cmVhbUNvbmZpZ3VyYXRpb247Ci19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1
cmVTb3VyY2U6OnN0YXJ0Q29udGVudFN0cmVhbSgpCi17Ci0gICAgaWYgKG1fY29udGVudFN0cmVh
bSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRlbnQpIHsKLSAgICAgICAgZmlu
ZFNoYXJlYWJsZUNvbnRlbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29u
dGVudEZpbHRlciA9IHN3aXRjaE9uKG1fY29udGVudC52YWx1ZSgpLAotICAgICAgICBbXSAoY29u
c3QgUmV0YWluUHRyPFNDRGlzcGxheT4gZGlzcGxheSkgLT4gUmV0YWluUHRyPFNDQ29udGVudEZp
bHRlcj4gewotICAgICAgICAgICAgaWYgKHVzaW5nT2xkQVBJKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGFkb3B0TlMoKFNDQ29udGVudEZpbHRlciAqKVtQQUw6OmFsbG9jU0NTdHJlYW1GaWx0
ZXJJbnN0YW5jZSgpIGluaXRXaXRoRGlzcGxheTpkaXNwbGF5LmdldCgpIGV4Y2x1ZGluZ1dpbmRv
d3M6bmlsXSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFsbG9jU0NDb250
ZW50RmlsdGVySW5zdGFuY2UoKSBpbml0V2l0aERpc3BsYXk6ZGlzcGxheS5nZXQoKSBleGNsdWRp
bmdXaW5kb3dzOm5pbF0pOwotICAgICAgICB9LAotICAgICAgICBbXSAoY29uc3QgUmV0YWluUHRy
PFNDV2luZG93PiB3aW5kb3cpICAtPiBSZXRhaW5QdHI8U0NDb250ZW50RmlsdGVyPiB7Ci0gICAg
ICAgICAgICBpZiAodXNpbmdPbGRBUEkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRO
UygoU0NDb250ZW50RmlsdGVyICopW1BBTDo6YWxsb2NTQ1N0cmVhbUZpbHRlckluc3RhbmNlKCkg
aW5pdFdpdGhEZXNrdG9wSW5kZXBlbmRlbnRXaW5kb3c6d2luZG93LmdldCgpXSk7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFsbG9jU0NDb250ZW50RmlsdGVySW5zdGFuY2Uo
KSBpbml0V2l0aERlc2t0b3BJbmRlcGVuZGVudFdpbmRvdzp3aW5kb3cuZ2V0KCldKTsKLSAgICAg
ICAgfQotICAgICk7Ci0KLSAgICBpZiAoIW1fY29udGVudEZpbHRlcikgewotICAgICAgICBzdHJl
YW1GYWlsZWRXaXRoRXJyb3IobmlsLCAiRmFpbGVkIHRvIGFsbG9jYXRlIFNDQ29udGVudEZpbHRl
ciJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY2FwdHVyZUhlbHBl
cikKLSAgICAgICAgbV9jYXB0dXJlSGVscGVyID0gKFtbV2ViQ29yZVNjcmVlbkNhcHR1cmVLaXRI
ZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pOwotCi0gICAgbV9jb250ZW50U3Ry
ZWFtID0gYWRvcHROUyhbUEFMOjphbGxvY1NDU3RyZWFtSW5zdGFuY2UoKSBpbml0V2l0aEZpbHRl
cjptX2NvbnRlbnRGaWx0ZXIuZ2V0KCkgY2FwdHVyZU91dHB1dFByb3BlcnRpZXM6c3RyZWFtQ29u
ZmlndXJhdGlvbigpLmdldCgpIGRlbGVnYXRlOm1fY2FwdHVyZUhlbHBlci5nZXQoKV0pOwotICAg
IGlmICghbV9jb250ZW50U3RyZWFtKSB7Ci0gICAgICAgIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihu
aWwsICJGYWlsZWQgdG8gYWxsb2NhdGUgU0xDb250ZW50U3RyZWFtIl9zKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGlmICghZXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gUmV0
YWluUHRyIHsgZXJyb3IgfV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
LSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c3RyZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUo
ZXJyb3IpLCAiLVtTQ1N0cmVhbSBzdGFydENhcHR1cmVXaXRoRnJhbWVIYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyOl0gZmFpbGVkIl9zKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAo
W21fY29udGVudFN0cmVhbSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0YXJ0Q2FwdHVy
ZVdpdGhDRnJhbWVIYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyOildKQotICAgICAgICBbbV9jb250
ZW50U3RyZWFtIHN0YXJ0Q2FwdHVyZVdpdGhDRnJhbWVIYW5kbGVyOmZyYW1lQXZhaWxhYmxlSGFu
ZGxlcigpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKLSAgICBl
bHNlIGlmIChbbV9jb250ZW50U3RyZWFtIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3Rh
cnRDYXB0dXJlV2l0aEZyYW1lSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcjopXSkKLSAgICAgICAg
W21fY29udGVudFN0cmVhbSBzdGFydENhcHR1cmVXaXRoRnJhbWVIYW5kbGVyOmZyYW1lQXZhaWxh
YmxlSGFuZGxlcigpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsK
LQotICAgIG1faXNSdW5uaW5nID0gdHJ1ZTsKLX0KLQotSW50U2l6ZSBTY3JlZW5DYXB0dXJlS2l0
Q2FwdHVyZVNvdXJjZTo6aW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW50cmlu
c2ljU2l6ZSkKLSAgICAgICAgcmV0dXJuIG1faW50cmluc2ljU2l6ZS52YWx1ZSgpOwotCi0gICAg
aWYgKG1fY2FwdHVyZURldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuKSB7Ci0gICAgICAgIGF1dG8gZGlzcGxheU1vZGUgPSBhZG9wdENGKENHRGlzcGxheUNv
cHlEaXNwbGF5TW9kZShtX2RldmljZUlEKSk7Ci0gICAgICAgIGF1dG8gc2NyZWVuV2lkdGggPSBD
R0Rpc3BsYXlNb2RlR2V0UGl4ZWxzV2lkZShkaXNwbGF5TW9kZS5nZXQoKSk7Ci0gICAgICAgIGF1
dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUu
Z2V0KCkpOwotCi0gICAgICAgIHJldHVybiB7IENoZWNrZWQ8aW50PihzY3JlZW5XaWR0aCksIENo
ZWNrZWQ8aW50PihzY3JlZW5IZWlnaHQpIH07Ci0gICAgfQotCi0gICAgQ0dSZWN0IGJvdW5kcyA9
IENHUmVjdFplcm87Ci0gICAgZm9yRWFjaE5TV2luZG93KFsmXSAoTlNEaWN0aW9uYXJ5ICp3aW5k
b3dJbmZvLCB1bnNpZ25lZCB3aW5kb3dJRCwgY29uc3QgU3RyaW5nJikgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmICh3aW5kb3dJRCAhPSBtX2RldmljZUlEKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIE5TRGljdGlvbmFyeSAqYm91bmRzRGljdCA9IHdpbmRvd0luZm9bKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NHV2luZG93Qm91bmRzXTsKLSAgICAgICAgaWYgKCFbYm91bmRzRGlj
dCBpc0tpbmRPZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgQ0dSZWN0TWFrZVdpdGhEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24o
KENGRGljdGlvbmFyeVJlZilib3VuZHNEaWN0LCAmYm91bmRzKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kcy5zaXpl
LndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZHMuc2l6ZS5oZWlnaHQpIH07Ci19Ci0KLXZv
aWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0cmVhbUNvbmZpZ3VyYXRp
b24oKQotewotICAgIEFTU0VSVChtX2NvbnRlbnRTdHJlYW0pOwotCi0gICAgW21fY29udGVudFN0
cmVhbSB1cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uOnN0cmVhbUNvbmZpZ3VyYXRpb24oKS5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH1dIChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghZXJyb3IpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3IgfV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+c3RyZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUoZXJyb3IpLCAiLVtTQ1N0cmVhbSB1cGRh
dGVTdHJlYW1Db25maWd1cmF0aW9uOl0gZmFpbGVkIl9zKTsKLSAgICAgICAgfSk7Ci0gICAgfSku
Z2V0KCldOwotCi19Ci0KLXZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmNvbW1p
dENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cykKLXsKLSAgICBpZiAobV93aWR0aCA9PSBzZXR0aW5ncy53aWR0aCgpICYmIG1faGVpZ2h0ID09
IHNldHRpbmdzLmhlaWdodCgpICYmIG1fZnJhbWVSYXRlID09IHNldHRpbmdzLmZyYW1lUmF0ZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAg
ICBtX2hlaWdodCA9IHNldHRpbmdzLmhlaWdodCgpOwotICAgIG1fZnJhbWVSYXRlID0gc2V0dGlu
Z3MuZnJhbWVSYXRlKCk7Ci0KLSAgICBpZiAobV9jb250ZW50U3RyZWFtKSB7Ci0gICAgICAgIG1f
c3RyZWFtQ29uZmlndXJhdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIHVwZGF0ZVN0cmVhbUNvbmZp
Z3VyYXRpb24oKTsKLSAgICB9Ci19Ci0KLVNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpT
Q0NvbnRlbnRTdHJlYW1VcGRhdGVDYWxsYmFjayBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJj
ZTo6ZnJhbWVBdmFpbGFibGVIYW5kbGVyKCkKLXsKLSAgICBpZiAobV9mcmFtZUF2YWlsYWJsZUhh
bmRsZXIpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlci5nZXQoKTsKLQot
ICAgIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoU0NTdHJlYW0gKiwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVm
ZmVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBhdXRvIGF0dGFjaG1lbnRzID0gKF9fYnJpZGdlIE5TQXJyYXkgKilQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIGZh
bHNlKTsKLSAgICAgICAgU0NTdHJlYW1TdGF0dXMgc3RhdHVzID0gU0NTdHJlYW1TdGF0dXNGcmFt
ZVN0b3BwZWQ7Ci0gICAgICAgIFthdHRhY2htZW50cyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9j
azptYWtlQmxvY2tQdHIoWyZdIChOU0RpY3Rpb25hcnkgKmF0dGFjaG1lbnQsIE5TVUludGVnZXIs
IEJPT0wgKnN0b3ApIHsKLSAgICAgICAgICAgIGF1dG8gc3RhdHVzTnVtYmVyID0gKE5TTnVtYmVy
ICopYXR0YWNobWVudFtQQUw6OlNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5XTsKLSAgICAgICAg
ICAgIGlmICghc3RhdHVzTnVtYmVyKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICAgICAgc3RhdHVzID0gKFNDU3RyZWFtU3RhdHVzKVtzdGF0dXNOdW1iZXIgaW50ZWdlclZhbHVl
XTsKLSAgICAgICAgICAgICpzdG9wID0gWUVTOwotICAgICAgICB9KS5nZXQoKV07Ci0KLSAgICAg
ICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAgICAgY2FzZSBTQ1N0cmVhbVN0YXR1c0ZyYW1lU3Rh
cnRlZDoKLSAgICAgICAgY2FzZSBTQ1N0cmVhbVN0YXR1c0ZyYW1lQ29tcGxldGU6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTQ1N0cmVhbVN0YXR1c0ZyYW1lSWRsZToKLSAgICAg
ICAgY2FzZSBTQ1N0cmVhbVN0YXR1c0ZyYW1lQmxhbms6Ci0gICAgICAgIGNhc2UgU0NTdHJlYW1T
dGF0dXNGcmFtZVN1c3BlbmRlZDoKLSAgICAgICAgY2FzZSBTQ1N0cmVhbVN0YXR1c0ZyYW1lU3Rv
cHBlZDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2FtcGxlQnVm
ZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1faW50cmluc2ljU2l6ZSA9IEludFNpemUoUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zKFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3Jt
YXREZXNjcmlwdGlvbihzYW1wbGVCdWZmZXIuZ2V0KCkpLCB0cnVlLCB0cnVlKSk7Ci0gICAgICAg
ICAgICB3ZWFrVGhpcy0+bV9jdXJyZW50RnJhbWUgPSBXVEZNb3ZlKHNhbXBsZUJ1ZmZlcik7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgcmV0dXJuIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVy
LmdldCgpOwotfQotCi1DYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIFNjcmVlbkNhcHR1cmVLaXRD
YXB0dXJlU291cmNlOjpkZXZpY2VUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jYXB0dXJl
RGV2aWNlLnR5cGUoKTsKLX0KLQotUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5
U3VyZmFjZVR5cGUgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN1cmZhY2VUeXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9jYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4gPyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRp
c3BsYXlTdXJmYWNlVHlwZTo6TW9uaXRvciA6IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RGlzcGxheVN1cmZhY2VUeXBlOjpXaW5kb3c7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGlzcGxheUlEU3RyaW5nKQotewotICAgIGlm
ICghaXNBdmFpbGFibGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQ6IHNjcmVlbiBjYXB0dXJlIHVuYXZhaWxhYmxlIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgYXV0byBkaXNwbGF5SUQgPSBwYXJzZUludGVnZXI8
dWludDMyX3Q+KGRpc3BsYXlJRFN0cmluZyk7Ci0gICAgaWYgKCFkaXNwbGF5SUQpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3Vy
Y2U6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEOiBpbnZhbGlkIGRpc3BsYXkg
SUQiKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICByZXR1cm4g
Q2FwdHVyZURldmljZShTdHJpbmc6Om51bWJlcihkaXNwbGF5SUQudmFsdWUoKSksIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgIlNjcmVlbkNhcHR1cmVEZXZpY2UiX3MsIGVtcHR5
U3RyaW5nKCksIHRydWUpOwotfQotCi12b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpzY3JlZW5DYXB0dXJlRGV2aWNlcyhWZWN0b3I8Q2FwdHVyZURldmljZT4mIGRpc3BsYXlzKQot
ewotICAgIGlmICghaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdWludDMy
X3QgZGlzcGxheUNvdW50ID0gMDsKLSAgICBhdXRvIGVyciA9IENHR2V0QWN0aXZlRGlzcGxheUxp
c3QoMCwgbnVsbHB0ciwgJmRpc3BsYXlDb3VudCk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6
c2NyZWVuQ2FwdHVyZURldmljZXMgLSBDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQg
ZXJyb3IgJWQgd2hlbiB0cnlpbmcgdG8gZ2V0IGRpc3BsYXkgY291bnQiLCAoaW50KWVycik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWRpc3BsYXlDb3VudCkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0
dXJuZWQgYSBkaXNwbGF5IGNvdW50IG9mIDAiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFZlY3RvcjxDR0RpcmVjdERpc3BsYXlJRD4gYWN0aXZlRGlzcGxheXMoZGlzcGxheUNvdW50
KTsKLSAgICBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlMaXN0KGRpc3BsYXlDb3VudCwgYWN0aXZl
RGlzcGxheXMuZGF0YSgpLCAmZGlzcGxheUNvdW50KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpzY3JlZW5DYXB0dXJlRGV2aWNlcyAtIENHR2V0QWN0aXZlRGlzcGxheUxpc3QoKSByZXR1cm5l
ZCBlcnJvciAlZCB3aGVuIHRyeWluZyB0byBnZXQgdGhlIGFjdGl2ZSBkaXNwbGF5IGxpc3QiLCAo
aW50KWVycik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgY291bnQgPSAwOwot
ICAgIGZvciAoYXV0byBkaXNwbGF5SUQgOiBhY3RpdmVEaXNwbGF5cykgewotICAgICAgICBDYXB0
dXJlRGV2aWNlIGRpc3BsYXlEZXZpY2UoU3RyaW5nOjpudW1iZXIoZGlzcGxheUlEKSwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJTY3JlZW4gIiwgU3RyaW5n
OjpudW1iZXIoY291bnQrKykpKTsKLSAgICAgICAgZGlzcGxheURldmljZS5zZXRFbmFibGVkKENH
RGlzcGxheUlEVG9PcGVuR0xEaXNwbGF5TWFzayhkaXNwbGF5SUQpKTsKLSAgICAgICAgZGlzcGxh
eXMuYXBwZW5kKFdURk1vdmUoZGlzcGxheURldmljZSkpOwotICAgIH0KLX0KLQotc3RkOjpvcHRp
b25hbDxDYXB0dXJlRGV2aWNlPiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6d2luZG93
Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiB3aW5kb3dJRFN0cmlu
ZykKLXsKLSAgICBhdXRvIHdpbmRvd0lEID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90Pih3aW5kb3dJ
RFN0cmluZyk7Ci0gICAgaWYgKCF3aW5kb3dJRCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihXZWJSVEMsICJTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6d2luZG93Q2FwdHVyZURl
dmljZVdpdGhQZXJzaXN0ZW50SUQ6IGludmFsaWQgd2luZG93IElEIik7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNl
PiBkZXZpY2U7Ci0gICAgZm9yRWFjaE5TV2luZG93KFsmXSAoTlNEaWN0aW9uYXJ5ICosIHVuc2ln
bmVkIGlkLCBjb25zdCBTdHJpbmcmIHdpbmRvd1RpdGxlKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGlkICE9IHdpbmRvd0lELnZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgZGV2aWNlID0gQ2FwdHVyZURldmljZShTdHJpbmc6Om51bWJlcih3aW5kb3dJRC52YWx1
ZSgpKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93LCB3aW5kb3dUaXRsZSwgZW1w
dHlTdHJpbmcoKSwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwotCi0gICAg
cmV0dXJuIGRldmljZTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6
d2luZG93Q2FwdHVyZURldmljZXMoVmVjdG9yPENhcHR1cmVEZXZpY2U+JiB3aW5kb3dzKQotewot
ICAgIGlmICghaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yRWFjaE5T
V2luZG93KFsmXSAoTlNEaWN0aW9uYXJ5ICosIHVuc2lnbmVkIHdpbmRvd0lELCBjb25zdCBTdHJp
bmcmIHdpbmRvd1RpdGxlKSBtdXRhYmxlIHsKLSAgICAgICAgd2luZG93cy5hcHBlbmQoeyBTdHJp
bmc6Om51bWJlcih3aW5kb3dJRCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdywg
d2luZG93VGl0bGUsIGVtcHR5U3RyaW5nKCksIHRydWUgfSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9KTsKLX0KLQotdm9pZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6d2lu
ZG93RGV2aWNlcyhWZWN0b3I8RGlzcGxheUNhcHR1cmVNYW5hZ2VyOjpXaW5kb3dDYXB0dXJlRGV2
aWNlPiYgZGV2aWNlcykKLXsKLSAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvckVhY2hOU1dpbmRvdyhbJl0gKE5TRGljdGlvbmFyeSAqd2luZG93SW5mbywg
dW5zaWduZWQgd2luZG93SUQsIGNvbnN0IFN0cmluZyYgd2luZG93VGl0bGUpIG11dGFibGUgewot
ICAgICAgICBhdXRvICphcHBsaWNhdGlvbk5hbWUgPSAoX19icmlkZ2UgTlNTdHJpbmcgKikod2lu
ZG93SW5mb1soX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dXaW5kb3dPd25lck5hbWVdKTsKLSAgICAg
ICAgZGV2aWNlcy5hcHBlbmQoeyB7IFN0cmluZzo6bnVtYmVyKHdpbmRvd0lEKSwgQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6V2luZG93LCB3aW5kb3dUaXRsZSwgZW1wdHlTdHJpbmcoKSwgdHJ1
ZSB9LCBhcHBsaWNhdGlvbk5hbWUgfSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9KTsK
LX0KLQotdm9pZCBmb3JFYWNoTlNXaW5kb3coY29uc3QgRnVuY3Rpb248Ym9vbChOU0RpY3Rpb25h
cnkgKmluZm8sIHVuc2lnbmVkIHdpbmRvd0lELCBjb25zdCBTdHJpbmcmIHRpdGxlKT4mIHByZWRp
Y2F0ZSkKLXsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gd2luZG93TGlzdCA9IGFkb3B0TlMoKF9f
YnJpZGdlIE5TQXJyYXkgKilDR1dpbmRvd0xpc3RDb3B5V2luZG93SW5mbyhrQ0dXaW5kb3dMaXN0
T3B0aW9uT25TY3JlZW5Pbmx5IHwga0NHV2luZG93TGlzdEV4Y2x1ZGVEZXNrdG9wRWxlbWVudHMs
IGtDR051bGxXaW5kb3dJRCkpOwotICAgIGlmICghd2luZG93TGlzdCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgW3dpbmRvd0xpc3QgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6bWFrZUJsb2Nr
UHRyKFsmXSAoTlNEaWN0aW9uYXJ5ICp3aW5kb3dJbmZvLCBOU1VJbnRlZ2VyLCBCT09MICpzdG9w
KSB7Ci0gICAgICAgICpzdG9wID0gTk87Ci0KLSAgICAgICAgLy8gTWVudXMsIHRoZSBkb2NrLCBl
dGMgaGF2ZSBsYXllcnMgZ3JlYXRlciB0aGFuIDAsIHNraXAgdGhlbS4KLSAgICAgICAgaW50IHdp
bmRvd0xheWVyID0gWyhOU051bWJlciAqKXdpbmRvd0luZm9bKF9fYnJpZGdlIE5TU3RyaW5nICop
a0NHV2luZG93TGF5ZXJdIGludGVnZXJWYWx1ZV07Ci0gICAgICAgIGlmICh3aW5kb3dMYXllcikK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBTa2lwIHdpbmRvd3MgdGhhdCBhcmVu
J3Qgb24gc2NyZWVuCi0gICAgICAgIGlmICghWyhOU051bWJlciAqKXdpbmRvd0luZm9bKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NHV2luZG93SXNPbnNjcmVlbl0gaW50ZWdlclZhbHVlXSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvICp3aW5kb3dUaXRsZSA9IChfX2JyaWRnZSBO
U1N0cmluZyAqKSh3aW5kb3dJbmZvWyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDR1dpbmRvd05hbWVd
KTsKLSAgICAgICAgYXV0byB3aW5kb3dJRCA9IChDR1dpbmRvd0lEKVsoTlNOdW1iZXIgKil3aW5k
b3dJbmZvWyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDR1dpbmRvd051bWJlcl0gaW50ZWdlclZhbHVl
XTsKLSAgICAgICAgaWYgKHByZWRpY2F0ZSh3aW5kb3dJbmZvLCB3aW5kb3dJRCwgd2luZG93VGl0
bGUpKQotICAgICAgICAgICAgKnN0b3AgPSBZRVM7Ci0gICAgfSkuZ2V0KCldOwotfQotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYURldmljZS5oCmluZGV4IGQ4NWZhYjdhYzUxNDMxMmEzM2M0MmFlYjlm
NWNkZjliOTVkMTU2YWIuLmNmNWFiZWI0YjJiMmQ4YTAyNDcxYzJhYTM0YmY1NWQ4MmMxYWZhYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NjgsMTQgKzE2OCwxNCBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICBDYXB0dXJlRGV2
aWNlIGNhcHR1cmVEZXZpY2UoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzTWljcm9waG9u
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2UgeyBwZXJzaXN0ZW50SWQsIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUsIGxhYmVsLCBwZXJzaXN0ZW50SWQs
IHRydWUgfTsKKyAgICAgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlIHsgcGVyc2lzdGVudElk
LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lLCBsYWJlbCwgcGVyc2lzdGVu
dElkIH07CiAgICAgICAgIGlmIChpc1NwZWFrZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBDYXB0
dXJlRGV2aWNlIHsgcGVyc2lzdGVudElkLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTcGVh
a2VyLCBsYWJlbCwgc3BlYWtlclByb3BlcnRpZXMoKS0+cmVsYXRlZE1pY3JvcGhvbmVJZCwgdHJ1
ZSB9OworICAgICAgICAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2UgeyBwZXJzaXN0ZW50SWQsIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNwZWFrZXIsIGxhYmVsLCBzcGVha2VyUHJvcGVydGll
cygpLT5yZWxhdGVkTWljcm9waG9uZUlkIH07CiAgICAgICAgIGlmIChpc0NhbWVyYSgpKQotICAg
ICAgICAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2UgeyBwZXJzaXN0ZW50SWQsIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OkNhbWVyYSwgbGFiZWwsIHBlcnNpc3RlbnRJZCwgdHJ1ZSB9OworICAg
ICAgICAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2UgeyBwZXJzaXN0ZW50SWQsIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OkNhbWVyYSwgbGFiZWwsIHBlcnNpc3RlbnRJZCB9OwogCiAgICAgICAg
IEFTU0VSVChpc0Rpc3BsYXkoKSk7Ci0gICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlIHsgcGVy
c2lzdGVudElkLCBzdGQ6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KHByb3BlcnRpZXMpLnR5
cGUsIGxhYmVsLCBlbXB0eVN0cmluZygpLCB0cnVlIH07CisgICAgICAgIHJldHVybiBDYXB0dXJl
RGV2aWNlIHsgcGVyc2lzdGVudElkLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4s
IGxhYmVsLCBwZXJzaXN0ZW50SWQgfTsKICAgICB9CiAKICAgICBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlIHR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA1NTE5
OWVmNmM5YzI5ZDQxOTUzYTNkYTUxYmNkMjc4YzMxNGZlOGE4Li5jNzFmODZhM2MyOGNkNWRlYmZk
MmVkODFlNzZmNTg1NTg5YjBjODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAt
OTQsOCArOTQsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1
bHREZXZpY2VzKCkKICAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9j
ayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAxOTIwLCAxMDgwIH0g
fSB9LAogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVl
biBkZXZpY2UgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6eWVsbG93LCB7IDM4NDAsIDIxNjAgfSB9IH0sCiAKLSAg
ICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0xIl9zLCAiTW9jayB3aW5kb3cgZGV2aWNl
IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OldpbmRvdywgU1JHQkE8dWludDhfdD4geyAyNTUsIDI0MSwgMTgxIH0sIHsgNjQwLCA0ODAgfSB9
IH0sCi0gICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93
IGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpXaW5kb3csIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9LCB7IDEyODAs
IDYwMCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9j
ayB3aW5kb3cgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBTUkdCQTx1aW50OF90PiB7IDI1NSwgMjQxLCAxODEgfSwgeyA2NDAs
IDQ4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9j
ayB3aW5kb3cgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBTUkdCQTx1aW50OF90PiB7IDI1NSwgMjA4LCAxODEgfSwgeyAxMjgw
LCA2MDAgfSB9IH0sCiAgICAgfTsKIH0KIApAQCAtMjAzLDkgKzIwMyw4IEBAIHB1YmxpYzoKIAog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLQogcHJpdmF0ZToKLSAgICBEaXNwbGF5Q2FwdHVy
ZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5kaXNwbGF5Q2FwdHVyZURl
dmljZU1hbmFnZXIoKTsgfQorICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkaXNwbGF5Q2FwdHVy
ZURldmljZU1hbmFnZXIoKSBmaW5hbCB7IHJldHVybiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7IH0KIH07CiAK
IGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlRmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBBdWRp
b0NhcHR1cmVGYWN0b3J5IHsKQEAgLTQ0Myw3ICs0NDIsNyBAQCBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2aWNlcygpCiAgICAg
ICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBkaXNwbGF5RGV2aWNlczsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChkZXZpY2Uu
aXNEaXNwbGF5KCkpCi0gICAgICAgICAgICAgICAgZGlzcGxheURldmljZXMuYXBwZW5kKGRldmlj
ZS5jYXB0dXJlRGV2aWNlKCkpOworICAgICAgICAgICAgICAgIGRpc3BsYXlEZXZpY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZhbHVlKCkpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKICAgICB9KCkpOwpAQCAtNDY5LDE3ICs0NjgsNiBA
QCBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpk
aXNwbGF5Q2FwdHVyZUZhY3RvcnkoKQogICAgIHJldHVybiBmYWN0b3J5LmdldCgpOwogfQogCi12
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpNb2NrRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjp3aW5kb3dEZXZpY2VzKFZlY3RvcjxEaXNwbGF5Q2FwdHVyZU1hbmFnZXI6Oldp
bmRvd0NhcHR1cmVEZXZpY2U+JiB3aW5kb3dEZXZpY2VzKQotewotICAgIGF1dG8gZGV2aWNlcyA9
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2aWNlcygpOwotICAgIGZv
ciAoYXV0byBkZXZpY2UgOiBkZXZpY2VzKSB7Ci0gICAgICAgIGlmICghZGV2aWNlLmVuYWJsZWQo
KSB8fCBkZXZpY2UudHlwZSgpICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdykK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHdpbmRvd0RldmljZXMuYXBwZW5kKHsg
V1RGTW92ZShkZXZpY2UpLCAiTW9jayBBcHBsaWNhdGlvbiJfcyB9KTsKLSAgICB9Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgKaW5kZXggOTA2M2E1MDJhMzBmMjVjY2MyNmFhOWJjYjc4MWFk
ZWMzYTUwMGEwNi4uZmZiN2U4ZWNlMDY1MTg2MTEyNTY5MWFlYmFhMTYwYWIzZmZhNmRiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkRpc3BsYXlDYXB0dXJlTWFuYWdlci5oIgorI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTW9ja01lZGlhRGV2aWNlLmgi
CiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oIgpAQCAtNTYsMTQgKzU2LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBtaWNyb3Bob25lRGV2aWNlcygpOwogICAgIHN0YXRp
YyBWZWN0b3I8Q2FwdHVyZURldmljZT4mIHNwZWFrZXJEZXZpY2VzKCk7CiAgICAgc3RhdGljIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiYgdmlkZW9EZXZpY2VzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgZGlzcGxheURldmljZXMoKTsKKyAgICBzdGF0
aWMgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBkaXNwbGF5RGV2aWNlcygpOwogCiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBtb2NrRGV2aWNlV2l0aFBlcnNpc3RlbnRJ
RChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNl
PiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBhdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9hdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9
CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSB7
IHJldHVybiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KLSAgICBEaXNwbGF5Q2FwdHVy
ZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIG1fZGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9CisgICAgQ2FwdHVyZURldmljZU1hbmFnZXImIGRpc3Bs
YXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIHsgcmV0dXJuIG1fZGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOyB9CiAKIHByaXZhdGU6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIo
KSA9IGRlZmF1bHQ7CkBAIC04MywxMSArODMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpIGZpbmFsIHsgcmV0dXJuIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjp2aWRlb0RldmljZXMoKTsgfQogICAgICAgICBz
dGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwg
eyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQogICAgIH07Ci0gICAgY2xhc3MgTW9ja0Rpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZU1hbmFnZXIg
eworICAgIGNsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIgZmluYWwgOiBwdWJs
aWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXMoKSBmaW5hbCB7IHJldHVybiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGlzcGxheURldmljZXMoKTsgfQogICAgICAgICBz
dGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElE
KENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBpZCkgZmluYWwg
eyByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKHR5cGUsIGlkKTsgfQotICAgICAgICB2b2lkIHdpbmRvd0RldmljZXMoVmVj
dG9yPERpc3BsYXlDYXB0dXJlTWFuYWdlcjo6V2luZG93Q2FwdHVyZURldmljZT4mKSBmaW5hbDsK
ICAgICB9OwogCiAgICAgTW9ja0F1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIgbV9hdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDM0NDZjYjYyYWY2YmQ0
MTRiMjU0MWVmNzFjNTcwNzIwYmIwNWNjYjcuLmM4YmU1NTg2OTI3NmU1MDYyMGJkMzM1YzAwZTY2
NmRmMmM0NTRhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTUxNSw3ICs1MTUsNiBAQCBV
SVByb2Nlc3MvaW9zL1dLV2ViRXZlbnQubW0KIFVJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9j
ZXNzTGF1bmNoZXJDb2NvYS5tbQogCiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbQot
VUlQcm9jZXNzL21hYy9EaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyLm1tCiBVSVByb2Nlc3Mv
bWFjL0Rpc3BsYXlMaW5rLmNwcAogVUlQcm9jZXNzL21hYy9IaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyLm1tCiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTUy
NCw3ICs1MjMsNiBAQCBVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCiBVSVByb2Nl
c3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbQogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1h
Yy5tbQogVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1t
Ci1VSVByb2Nlc3MvbWFjL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlNYWMubW0KIFVJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCiBVSVByb2Nlc3MvbWFjL1Zp
ZXdTbmFwc2hvdFN0b3JlTWFjLm1tCiBVSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCmluZGV4IDY5YzI0OThlZTQ3MTM5NmJlODEwNTRjNjhhZmU2ODg0NGRjN2ZiMjMuLmQwZWUx
Zjk2NzhkNThiMDVmY2U5ZDU0YTE1ODc4NGVmN2VjNjljMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC02OTAsMTYgKzY5
MCw2IEBAIC0gKHZvaWQpX3NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbjoo
Qk9PTClyZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24KICAgICBfcHJlZmVyZW5jZXMtPnNldE1lZGlh
Q2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihyZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24p
OwogfQogCi0tIChCT09MKV91c2VTY3JlZW5DYXB0dXJlS2l0Ci17Ci0gICAgcmV0dXJuIF9wcmVm
ZXJlbmNlcy0+dXNlU2NyZWVuQ2FwdHVyZUtpdCgpOwotfQotCi0tICh2b2lkKV9zZXRVc2VTY3Jl
ZW5DYXB0dXJlS2l0OihCT09MKXVzZVNjcmVlbkNhcHR1cmVLaXQKLXsKLSAgICBfcHJlZmVyZW5j
ZXMtPnNldFVzZVNjcmVlbkNhcHR1cmVLaXQodXNlU2NyZWVuQ2FwdHVyZUtpdCk7Ci19Ci0KIC0g
KGRvdWJsZSlfaW5hY3RpdmVNZWRpYUNhcHR1cmVTdGVhbVJlcHJvbXB0SW50ZXJ2YWxJbk1pbnV0
ZXMKIHsKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5pbmFjdGl2ZU1lZGlhQ2FwdHVyZVN0ZWFt
UmVwcm9tcHRJbnRlcnZhbEluTWludXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCBiMjk2NGFi
YzdhMjk1ODhjZWNhYTMyYmExZWRlODQ0ZDU3YmMxM2MyLi5jMWM3MjNhMWZmNDdlYWMxOTZiZDA2
MmIzZTI3NzMwMjRmMzFmYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMTIxLDcgKzEyMSw2IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRobSkg
ewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5h
YmxlZDopIEJPT0wgX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRNb2NrQ2FwdHVyZURldmljZXNQcm9tcHRFbmFibGVkOikgQk9PTCBfbW9ja0NhcHR1cmVEZXZp
Y2VzUHJvbXB0RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEu
MykpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWVkaWFDYXB0dXJlUmVxdWly
ZXNTZWN1cmVDb25uZWN0aW9uOikgQk9PTCBfbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25u
ZWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlU2NyZWVuQ2FwdHVyZUtpdDopIEJPT0wgX3Vz
ZVNjcmVlbkNhcHR1cmVLaXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEVudW1lcmF0
aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkOikgQk9PTCBfZW51bWVyYXRpbmdBbGxOZXR3
b3JrSW50ZXJmYWNlc0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygx
MS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRJQ0VDYW5kaWRhdGVGaWx0
ZXJpbmdFbmFibGVkOikgQk9PTCBfaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0V2ViUlRDTGVnYWN5QVBJRW5hYmxlZDopIEJPT0wgX3dlYlJUQ0xlZ2Fj
eUFQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaAppbmRleCA0NzRkYjU2NzljODMxZDg0NmQ3NDk4ODZlMGUxYzNlMWI2YzdhYTJi
Li40MDcwMTRkOTM1NDBhYzE1OGRkZTE5NWNkMDI4MDI5NTJjZDcxYWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmgKQEAgLTEwMywxMiArMTAzLDYgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1hSU2Vzc2lvbkZlYXR1cmVGbGFncykgewogICAgIF9XS1hSU2Vzc2lvbkZlYXR1cmVGbGFnc1Jl
ZmVyZW5jZVNwYWNlVHlwZVVuYm91bmRlZCA9IDEgPDwgNCwKIH07CiAKLXR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb24pIHsKLSAgICBX
S0Rpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkRlY2lzaW9uRGVueSwKLSAgICBXS0Rpc3BsYXlDYXB0
dXJlUGVybWlzc2lvbkRlY2lzaW9uU2NyZWVuUHJvbXB0LAotICAgIFdLRGlzcGxheUNhcHR1cmVQ
ZXJtaXNzaW9uRGVjaXNpb25XaW5kb3dQcm9tcHQsCi19IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KIEBwcm90b2NvbCBXS1VJRGVsZWdhdGVQ
cml2YXRlIDxXS1VJRGVsZWdhdGU+CiAKICNpZmRlZiBGT1VOREFUSU9OX0hBU19ESVJFQ1RJT05B
TF9HRU9NRVRSWQpAQCAtMTQ1LDcgKzEzOSw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGltYWdlT3JNZWRpYURvY3VtZW50U2l6
ZUNoYW5nZWQ6KENHU2l6ZSlzaXplIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwogLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9z
KDEwLjApKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNl
bnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoXikoQk9PTCBpbmNsdWRlU2Vuc2l0aXZl
RGV0YWlscykpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBp
b3MoMTMuMCkpOwotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0
RGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2Vj
dXJpdHlPcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb24gZGVj
aXNpb24pKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZvckRldmljZXM6KF9XS0NhcHR1cmVEZXZp
Y2VzKWRldmljZXMgdXJsOihOU1VSTCAqKXVybCBtYWluRnJhbWVVUkw6KE5TVVJMICopbWFpbkZy
YW1lVVJMIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBm
cmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSk7CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdl
OihfV0tNZWRpYUNhcHR1cmVTdGF0ZURlcHJlY2F0ZWQpc3RhdGUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4
IDE2OGZmNTFkZTg5ZjhjYjhkODBlNWE4NTg3Y2I3MWFhMmYwZmYzZWYuLjRlZTgwNjAwZDU0ZDFj
MDkzMTY2NDQ3MTQwZDM5ODE4NzU0Y2RmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY2LDggKzY2LDYgQEAgc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5
Rm9yVGVzdGluZzopIGRvdWJsZSBfbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5n
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOwog
Ci0tICh2b2lkKV9zZXRJbmRleE9mR2V0RGlzcGxheU1lZGlhRGV2aWNlU2VsZWN0ZWRGb3JUZXN0
aW5nOihudWxsYWJsZSBOU051bWJlciAqKWluZGV4OwotCiAtIChCT09MKV9iZWdpbkJhY2tTd2lw
ZUZvclRlc3Rpbmc7CiAtIChCT09MKV9jb21wbGV0ZUJhY2tTd2lwZUZvclRlc3Rpbmc7CiAtICh2
b2lkKV9yZXNldE5hdmlnYXRpb25HZXN0dXJlU3RhdGVGb3JUZXN0aW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRl
eCBlODYyYzg3YmFhNWUyZWMxMDg5NjQ3YjA0OTU3NzZiMTAwNDFjZGUxLi43Nzk1OGI5MmY0YzJm
M2UzZjAwMTBjOGJmZTE1NjkyMTEzZGU2MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMjYwLDIwICsyNjAs
NiBAQCAtICh2b2lkKV9kZW55TmV4dFVzZXJNZWRpYVJlcXVlc3QKICNlbmRpZgogfQogCi0tICh2
b2lkKV9zZXRJbmRleE9mR2V0RGlzcGxheU1lZGlhRGV2aWNlU2VsZWN0ZWRGb3JUZXN0aW5nOihO
U051bWJlciAqKW5zSW5kZXgKLXsKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSAgICBp
ZiAoIV9wYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBpbmRleDsKLSAgICBpZiAobnNJbmRleCkKLSAgICAgICAgaW5kZXggPSBuc0luZGV4LnVuc2ln
bmVkSW50VmFsdWU7Ci0KLSAgICBfcGFnZS0+c2V0SW5kZXhPZkdldERpc3BsYXlNZWRpYURldmlj
ZVNlbGVjdGVkRm9yVGVzdGluZyhpbmRleCk7Ci0jZW5kaWYKLX0KLQogLSAoZG91YmxlKV9tZWRp
YUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcKIHsKICAgICByZXR1cm4gX3BhZ2UtPm1l
ZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KCkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBhYzEzNTc2YjJlZjk0NmYxZDIzMzkyODA4Mjdj
YjI1NTQxMmIyMjVhLi44N2NmMjRmMThlYmIwYWFiOTU3NTY4MTAyMzIxMDlmYmEwNzViMTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNDQsNyAr
MTQ0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpTZWN1
cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5JikgZmluYWw7CiAgICAgICAgIHZvaWQgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
JikgZmluYWw7CiAgICAgICAgIHZvaWQgbWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlck1lZGlhU3RhdGVGbGFncykgZmluYWw7Ci0gICAgICAgIHZvaWQgcHJv
bXB0Rm9yRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJv
eHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKTsKICAgICAgICAgdm9pZCBwcmludEZyYW1lKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBkZkZp
cnN0UGFnZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBIQVZFKEFQUF9MSU5LUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE0NGZhOTg4MTg0YTZkY2U2NzM4YTA2
ZTZhMmRlZjE0MGJkNTNmYzYuLmVhYTEwYjU0NGVmMzRjMGRjODY0N2Q2Y2U5MTE1NjkyMjZhOWI2
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
MTA5Niw0NSArMTA5Niw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZENoYW5nZUZv
bnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzCiAgICAgW3ByaXZhdGVV
SURlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIGRp
ZENoYW5nZUZvbnRBdHRyaWJ1dGVzOmZvbnRBdHRyaWJ1dGVzLmNyZWF0ZURpY3Rpb25hcnkoKS5n
ZXQoKV07CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnByb21wdEZvckRpc3BsYXlD
YXB0dXJlUGVybWlzc2lvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1l
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1
ZXN0KQotewotICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1f
dWlEZWxlZ2F0ZS0+bV9kZWxlZ2F0ZS5nZXQoKTsKLQotICAgIEFTU0VSVChbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0RGlzcGxheUNhcHR1cmVQ
ZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOildKTsK
LSAgICBBU1NFUlQocmVxdWVzdC5jYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSk7Ci0KLSAg
ICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVs
ZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0RGlzcGxheUNhcHR1cmVQZXJtaXNzaW9u
Rm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gUmVmIHsg
cmVxdWVzdCB9LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oV0tEaXNwbGF5Q2FwdHVyZVBl
cm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikgewotICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotCi0gICAgICAgIHN3aXRjaCAo
ZGVjaXNpb24pIHsKLSAgICAgICAgY2FzZSBXS0Rpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkRlY2lz
aW9uU2NyZWVuUHJvbXB0OgotICAgICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+cHJvbXB0Rm9y
R2V0RGlzcGxheU1lZGlhKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OlVzZXJNZWRp
YURpc3BsYXlDYXB0dXJlUHJvbXB0VHlwZTo6U2NyZWVuKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb25XaW5kb3dQcm9t
cHQ6IHsKLSAgICAgICAgICAgIHByb3RlY3RlZFJlcXVlc3QtPnByb21wdEZvckdldERpc3BsYXlN
ZWRpYShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFEaXNwbGF5Q2Fw
dHVyZVByb21wdFR5cGU6OldpbmRvdyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb25EZW55OgotICAg
ICAgICAgICAgcHJvdGVjdGVkUmVxdWVzdC0+ZGVueShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRDsKLSAgICBpZiAoYXV0byog
bWFpbkZyYW1lID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5tYWluRnJhbWUoKSA6IG51
bGxwdHIpCi0gICAgICAgIG1haW5GcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFtZUlEKCk7Ci0gICAg
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8geyBmcmFtZS5pc01haW5GcmFtZSgpLCB7IH0sIHVzZXJN
ZWRpYU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCB7IH0sIGZyYW1lLmZyYW1lSUQoKSwgbWFpbkZy
YW1lSUQgfTsKLSAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mb1dyYXBwZXIgPSB3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCBmcmFtZS5w
YWdlKCkpKTsKLQotICAgIFdLTWVkaWFDYXB0dXJlVHlwZSB0eXBlID0gV0tNZWRpYUNhcHR1cmVU
eXBlQ2FtZXJhOwotICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCi0gICAg
ICAgIHR5cGUgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBXS01lZGlhQ2FwdHVy
ZVR5cGVDYW1lcmFBbmRNaWNyb3Bob25lIDogV0tNZWRpYUNhcHR1cmVUeXBlTWljcm9waG9uZTsK
LSAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0
KCkgcmVxdWVzdERpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKHRvcExl
dmVsT3JpZ2luKSBpbml0aWF0ZWRCeUZyYW1lOmZyYW1lSW5mb1dyYXBwZXIuZ2V0KCkgZGVjaXNp
b25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Ci0KLX0KIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
IHVzZXJNZWRpYU9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3QpCiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKQEAgLTExNDksMTMgKzExMTAsMTcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3gKIAogICAgIGJvb2wgcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpyZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOnR5cGU6ZGVjaXNp
b25IYW5kbGVyOildOwogICAgIGJvb2wgcmVzcG9uZHNUb1JlcXVlc3RVc2VyTWVkaWFBdXRob3Jp
emF0aW9uRm9yRGV2aWNlcyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3OnJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRGV2aWNlczp1cmw6bWFp
bkZyYW1lVVJMOmRlY2lzaW9uSGFuZGxlcjopXTsKLSAgICBib29sIHJlc3BvbmRzVG9SZXF1ZXN0
RGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdERpc3BsYXlDYXB0dXJlUGVybWlzc2lv
bkZvck9yaWdpbjppbml0aWF0ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXTsKIAotICAgIGlm
ICghcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uICYmICFyZXNwb25kc1Rv
UmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzICYmICFyZXNwb25kc1RvUmVx
dWVzdERpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkZvck9yaWdpbikgeworICAgIGlmICghcmVzcG9u
ZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uICYmICFyZXNwb25kc1RvUmVxdWVzdFVz
ZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKSB7CiAgICAgICAgIHJlcXVlc3QuZG9EZWZh
dWx0QWN0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAocmVxdWVzdC5y
ZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVxdWVzdC5jYW5Qcm9tcHRGb3JHZXREaXNwbGF5
TWVkaWEoKSkgeworICAgICAgICByZXF1ZXN0LnByb21wdEZvckdldERpc3BsYXlNZWRpYSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzcGVjaWZp
YyBkZWxlZ2F0ZSBmb3IgZGlzcGxheSBjYXB0dXJlLgogICAgIGlmICghcmVxdWVzdC5yZXF1aXJl
c0Rpc3BsYXlDYXB0dXJlKCkgJiYgcmVzcG9uZHNUb1JlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNz
aW9uKSB7CiAgICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6cmVxdWVzdE1lZGlhQ2FwdHVy
ZVBlcm1pc3Npb25Gb3JPcmlnaW46aW5pdGlhdGVkQnlGcmFtZTp0eXBlOmRlY2lzaW9uSGFuZGxl
cjopKTsKQEAgLTExOTMsMjAgKzExNTgsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2Fw
dHVyZSgpICYmIHJlcXVlc3QuY2FuUHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpIHsKLSAgICAg
ICAgaWYgKHJlc3BvbmRzVG9SZXF1ZXN0RGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2lu
KQotICAgICAgICAgICAgcHJvbXB0Rm9yRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uKHBhZ2UsIGZy
YW1lLCB1c2VyTWVkaWFPcmlnaW4sIHRvcExldmVsT3JpZ2luLCByZXF1ZXN0KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVxdWVzdC5wcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKLQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFyZXNwb25kc1RvUmVxdWVzdFVzZXJN
ZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzKSB7Ci0gICAgICAgIHJlcXVlc3QuZG9EZWZhdWx0
QWN0aW9uKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBVUkwgcmVxdWVzdEZyYW1l
VVJMIHsgZnJhbWUudXJsKCkgfTsKICAgICBVUkwgbWFpbkZyYW1lVVJMIHsgZnJhbWUucGFnZSgp
LT5tYWluRnJhbWUoKS0+dXJsKCkgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDZhZTJmYmYyYjE0ODM3ZjYzNzEzN2E2MjI4YjMwYWU5ZWVmNzQzMDEuLmFiOTBk
ZmRiMTg1MWJmN2VkZDI5YjQ1YzdkZDU3OWQ3MDc5YzAxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vz
c1Byb3h5LmgiCiAjZW5kaWYKIAotI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotI2luY2x1
ZGUgPFdlYkNvcmUvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaD4KLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC04NjEsMTAg
Kzg1Nyw2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnN5
bmNXaXRoV2ViQ29yZVByZWZzKCkgY29uc3QKICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLmVuc3VyZUdQVVByb2Nlc3MoKS5zZXRVc2VNb2NrQ2FwdHVyZURldmljZXMobW9j
a0RldmljZXNFbmFibGVkKTsKICNlbmRpZgogCi0jaWYgSEFWRShTQ1JFRU5fQ0FQVFVSRV9LSVQp
Ci0gICAgV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnNldEVuYWJsZWQo
bV9wYWdlLnByZWZlcmVuY2VzKCkudXNlU2NyZWVuQ2FwdHVyZUtpdCgpKTsKLSNlbmRpZgotCiAg
ICAgaWYgKE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlckVuYWJsZWQoKSA9PSBtb2NrRGV2aWNlc0VuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKICAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0TW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJFbmFibGVkKG1vY2tEZXZpY2VzRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuY3BwCmluZGV4IDViMWY2ZDVmZThlYWZjMDBjZjA3OGRiNjlkOWRkNThlZDJhOWY4OTkuLjc1
YmJkYzFkMDIxYWU2NTk2MTIwZmY1NjY0NWQ3ZmViYjg0ZDhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuY3BwCkBAIC0zMSwxMyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotI2lmICFQTEFURk9STShDT0NPQSkKLVJlZjxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVh
dGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyIHVzZXJNZWRpYUlELCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4s
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBW
ZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29yZTo6TWVkaWFTdHJlYW1S
ZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBkZWNpc2lv
bkNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlE
LCBmcmFtZUlELCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVv
RGV2aWNlcyksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZGVjaXNpb25Db21wbGV0aW9uSGFu
ZGxlcikpKTsKLX0KLSNlbmRpZgotCiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCBVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllciB1c2VyTWVk
aWFJRCwgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwg
VmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMsIFdlYkNvcmU6Ok1lZGlhU3RyZWFt
UmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgZGVjaXNp
b25Db21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKICAgICAsIG1f
dXNlck1lZGlhSUQodXNlck1lZGlhSUQpCkBAIC0xNDcsMTEgKzE0MCwxMSBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6
VXNlck1lZGlhQWNjZQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVt
ZXJhdGlvblZhbHVlKV07CiB9CiAKLXZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eTo6cHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKFVzZXJNZWRpYURpc3BsYXlDYXB0dXJlUHJvbXB0
VHlwZSBwcm9tcHRUeXBlKQordm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5Ojpw
cm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKENPQ09BKQotICAgIEFTU0VSVChtX21hbmFnZXIgJiYgY2FuUHJvbXB0Rm9yR2V0
RGlzcGxheU1lZGlhKCkgJiYgcHJvbXB0VHlwZSAhPSBVc2VyTWVkaWFEaXNwbGF5Q2FwdHVyZVBy
b21wdFR5cGU6OlVzZXJDaG9vc2UpOwotICAgIGlmICghbV9tYW5hZ2VyIHx8ICFjYW5Qcm9tcHRG
b3JHZXREaXNwbGF5TWVkaWEoKSB8fCBwcm9tcHRUeXBlICE9IFVzZXJNZWRpYURpc3BsYXlDYXB0
dXJlUHJvbXB0VHlwZTo6VXNlckNob29zZSkgeworICAgIEFTU0VSVChtX21hbmFnZXIgJiYgY2Fu
UHJvbXB0Rm9yR2V0RGlzcGxheU1lZGlhKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFjYW5Q
cm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKSkgewogICAgICAgICBkZW55KFVzZXJNZWRpYUFjY2Vz
c0RlbmlhbFJlYXNvbjo6UGVybWlzc2lvbkRlbmllZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmgKaW5kZXggMTRhYmI0MTI0MWY5MmIxZGIxZWUxOTVhNDAxOWZlYWMx
MzU1NzZlMy4uZGY0MTJhYjY1ZWMzN2RkNDczMGVhZmM3Y2I0ZTNkNTUxNjM0OWRiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuaApAQCAtMzgsMTggKzM4LDE2IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSYsIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgUmVmPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFZl
Y3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZT4mJiwgV2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgPSB7IH0pOwotCi0gICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGUoVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyIHVzZXJNZWRpYUlE
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNlck1lZGlh
RG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BMZXZlbERv
Y3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRpb0Rldmlj
ZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywgV2ViQ29y
ZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0geyB9KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eShtYW5h
Z2VyLCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1lSUQsIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlh
RG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3Zl
KGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlkZW9EZXZpY2VzKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KIAogICAgIHZvaWQg
YWxsb3coY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZVVJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0Rl
dmljZVVJRCk7CiAgICAgdm9pZCBhbGxvdygpOwogICAgIHZvaWQgcHJvbXB0Rm9yR2V0VXNlck1l
ZGlhKCk7Ci0KLSAgICBlbnVtIGNsYXNzIFVzZXJNZWRpYURpc3BsYXlDYXB0dXJlUHJvbXB0VHlw
ZSB7IFdpbmRvdywgU2NyZWVuLCBVc2VyQ2hvb3NlIH07Ci0gICAgdmlydHVhbCB2b2lkIHByb21w
dEZvckdldERpc3BsYXlNZWRpYShVc2VyTWVkaWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGUgPSBV
c2VyTWVkaWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGU6OlVzZXJDaG9vc2UpOwotICAgIHZpcnR1
YWwgYm9vbCBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKTsKLQorICAgIHZvaWQgcHJvbXB0
Rm9yR2V0RGlzcGxheU1lZGlhKCk7CisgICAgYm9vbCBjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVk
aWEoKTsKICAgICB2b2lkIGRvRGVmYXVsdEFjdGlvbigpOwogICAgIGVudW0gY2xhc3MgVXNlck1l
ZGlhQWNjZXNzRGVuaWFsUmVhc29uIHsgTm9Db25zdHJhaW50cywgVXNlck1lZGlhRGlzYWJsZWQs
IE5vQ2FwdHVyZURldmljZXMsIEludmFsaWRDb25zdHJhaW50LCBIYXJkd2FyZUVycm9yLCBQZXJt
aXNzaW9uRGVuaWVkLCBPdGhlckZhaWx1cmUgfTsKICAgICB2b2lkIGRlbnkoVXNlck1lZGlhQWNj
ZXNzRGVuaWFsUmVhc29uID0gVXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpVc2VyTWVkaWFE
aXNhYmxlZCk7CkBAIC05NywxMiArOTUsOSBAQCBwdWJsaWM6CiAKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiBkZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKCkgeyByZXR1cm4gc3Rk
OjpleGNoYW5nZShtX2RlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIsIHsgfSk7IH0KIAotcHJvdGVj
dGVkOgorcHJpdmF0ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiwgV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgdXNl
ck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mJiBhdWRp
b0RldmljZXMsIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNlcywg
V2ViQ29yZTo6TWVkaWFTdHJlYW1SZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogCi0gICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkqIG1h
bmFnZXIoKSBjb25zdCB7IHJldHVybiBtX21hbmFnZXI7IH0KLQotcHJpdmF0ZToKICAgICBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyIG1fdXNlck1lZGlhSUQ7CiAgICAgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA5NmM5NTk1NWZhZWZhNzMwOWMxYTBjYTIwMmVlMmYxZGI2
MWViNmM1Li44NzQwODI0NmM5YzhkYTUxODRlZWRlZjZhMjZiNTBjMzZiZmMwODgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3NCw3ICsxNzQsNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oPgpAQCAtMzE1LDEwICszMTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGln
aGxpZ2h0VmlzaWJpbGl0eS5oPgogI2VuZGlmCiAKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJ
VCkKLSNpbXBvcnQgIkRpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIuaCIKLSNlbmRpZgotCiAv
LyBUaGlzIGNvbnRyb2xzIHdoYXQgc3RyYXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2Fs
ZXNjaW5nLgogI2RlZmluZSBNRVJHRV9XSEVFTF9FVkVOVFMgMQogCkBAIC04NTY4LDcgKzg1NjMs
NiBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5
Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCiAgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5PigqdGhpcyk7Ci0KICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyOwogfQogCkBAIC0xMDkwNywxMyArMTA5MDEsNiBAQCBXZWJDb3JlOjpDYXB0dXJl
U291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JT
cGVlY2hSZQogCiAjZW5kaWYKIAotI2lmIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEluZGV4T2ZHZXREaXNwbGF5TWVkaWFEZXZpY2VTZWxlY3RlZEZvclRl
c3Rpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCi17Ci0gICAgRGlzcGxheUNhcHR1
cmVTZXNzaW9uTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0SW5kZXhPZkRldmljZVNlbGVjdGVkRm9y
VGVzdGluZyhpbmRleCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFVykKIHZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRHZXRDYW1lcmEoTW9kZWxJZGVu
dGlmaWVyIG1vZGVsSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Q2FtZXJhLCBSZXNvdXJjZUVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGRhMDQzZjBkYWEyNTVjOWFlZDMwMWEwMDQ0MDJiNmEwMjc0NjMxZGQuLjBmODhiYjViNzllYmM2
ZmEyYTllODk2NTQzMzE0ZjAyMDI4ZjY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xOTc0LDEwICsxOTc0LDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkNh
cHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNv
Z25pdGlvbigpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICB2b2lkIHNldEluZGV4T2ZHZXREaXNwbGF5TWVkaWFEZXZpY2VTZWxlY3Rl
ZEZvclRlc3Rpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pOwotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBjaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9jdXMoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5Q2FwdHVyZVNlc3Npb25N
YW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZDkzYjNjNmExMjhmYjZk
MThiMzVlOWE5NzY2ZjdlOWFlMzAxMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlDYXB0dXJl
U2Vzc2lvbk1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0KLSNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIgewotcHVibGljOgotICAgIHN0
YXRpYyBEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0
aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotCi0gICAgRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdl
cigpOwotICAgIH5EaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIHBy
b21wdEZvckdldERpc3BsYXlNZWRpYShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpV
c2VyTWVkaWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGUsIFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPik+JiYpOwotICAgIHZvaWQgc2V0SW5kZXhP
ZkRldmljZVNlbGVjdGVkRm9yVGVzdGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkg
eyBtX2luZGV4T2ZEZXZpY2VTZWxlY3RlZEZvclRlc3RpbmcgPSBpbmRleDsgfQotCi1wcml2YXRl
OgotCi0jaWYgSEFWRShTQ1JFRU5fQ0FQVFVSRV9LSVQpCi0gICAgZW51bSBjbGFzcyBDYXB0dXJl
U2Vzc2lvblR5cGUgeyBOb25lLCBTY3JlZW4sIFdpbmRvdyB9OwotICAgIHZvaWQgYWxlcnRGb3JH
ZXREaXNwbGF5TWVkaWEoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5h
Z2VyOjpDYXB0dXJlU2Vzc2lvblR5cGUpPiYmKTsKLSAgICB2b2lkIHNob3dXaW5kb3dQaWNrZXIo
V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+KT4m
Jik7Ci0gICAgdm9pZCBzaG93U2NyZWVuUGlja2VyKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPik+JiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2FwdHVyZURldmljZT4gZGV2aWNlU2VsZWN0ZWRGb3JUZXN0aW5nKFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwotI2VuZGlmCi0KLSAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBtX2luZGV4T2ZEZXZpY2VTZWxlY3RlZEZvclRlc3Rpbmc7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3Bs
YXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
RGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzk5ZjZmMTNhMjQyOWYwZDc5NjYyNzIxODBjYzY0YzMwNmEyMzJlYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDI5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyLmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAi
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0IDxXZWJDb3JlL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBv
cnQgPHd0Zi9VUkxIZWxwZXJzLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2Eu
aD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLQotc3RhdGlj
IHZvaWQgYWxlcnRGb3JXaW5kb3dTZWxlY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFN0cmluZz4sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsKLSAg
ICBpZiAoIXdlYlZpZXcpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPERp
c3BsYXlDYXB0dXJlTWFuYWdlcjo6V2luZG93Q2FwdHVyZURldmljZT4gd2luZG93SW5mbzsKLSAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5kaXNwbGF5Q2FwdHVyZUZh
Y3RvcnkoKS5kaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKS53aW5kb3dEZXZpY2VzKHdpbmRv
d0luZm8pOwotICAgIGlmICh3aW5kb3dJbmZvLmlzRW1wdHkoKSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBzdGQ6OnNvcnQod2luZG93SW5mby5iZWdpbigpLCB3aW5kb3dJbmZvLmVu
ZCgpLCBbXShhdXRvJiBhLCBhdXRvJiBiKSB7Ci0gICAgICAgIGlmIChhLm1fYXBwbGljYXRpb24g
IT0gYi5tX2FwcGxpY2F0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbihhLm1fYXBwbGljYXRpb24sIGIubV9hcHBsaWNhdGlvbik7Ci0KLSAgICAgICAgcmV0
dXJuIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhLm1fZGV2aWNlLmxhYmVsKCksIGIubV9kZXZp
Y2UubGFiZWwoKSk7Ci0gICAgfSk7Ci0KLSAgICBhdXRvIGFsZXJ0ID0gYWRvcHROUyhbW05TQWxl
cnQgYWxsb2NdIGluaXRdKTsKLSAgICBbYWxlcnQgc2V0TWVzc2FnZVRleHQ6V0VCX1VJX05TU1RS
SU5HKEAiQ2hvb3NlIGEgd2luZG93IHRvIHNoYXJlIiwgTWVzc2FnZSBmb3Igd2luZG93IHNoYXJp
bmcgcHJvbXB0KV07Ci0KLSAgICBhdXRvIHBvcHVwQnV0dG9uID0gYWRvcHROUyhbW05TUG9wVXBC
dXR0b24gYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgxMCwgMCwgMjkwLCAzNikgcHVs
bHNEb3duOk5PXSk7Ci0gICAgYXV0byBtZW51ID0gW3BvcHVwQnV0dG9uIG1lbnVdOwotICAgIG1l
bnUuYXV0b2VuYWJsZXNJdGVtcyA9IE5POwotICAgIFN0cmluZyBjdXJyZW50QXBwbGljYXRpb247
Ci0gICAgdW5zaWduZWQgaW5mb0luZGV4ID0gMDsKLSAgICBmb3IgKGF1dG8mIGluZm8gOiB3aW5k
b3dJbmZvKSB7Ci0gICAgICAgIGlmIChpbmZvLm1fYXBwbGljYXRpb24gIT0gY3VycmVudEFwcGxp
Y2F0aW9uKSAgICB7Ci0gICAgICAgICAgICBhdXRvIGFwcGxpY2F0aW9uSXRlbSA9IGFkb3B0TlMo
W1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOmluZm8ubV9hcHBsaWNhdGlvbiBhY3Rp
b246bmlsIGtleUVxdWl2YWxlbnQ6QCIiXSk7Ci0gICAgICAgICAgICBbYXBwbGljYXRpb25JdGVt
IHNldEVuYWJsZWQ6Tk9dOwotICAgICAgICAgICAgW21lbnUgYWRkSXRlbTphcHBsaWNhdGlvbkl0
ZW0uZ2V0KCldOwotICAgICAgICAgICAgY3VycmVudEFwcGxpY2F0aW9uID0gaW5mby5tX2FwcGxp
Y2F0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0aXRsZSA9IGluZm8ubV9kZXZpY2Uu
bGFiZWwoKTsKLSAgICAgICAgYXV0byB3aW5kb3dJdGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRXaXRoVGl0bGU6KCF0aXRsZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGluZm8ubV9h
cHBsaWNhdGlvbikgYWN0aW9uOm5pbCBrZXlFcXVpdmFsZW50OkAiIl0pOwotICAgICAgICBbd2lu
ZG93SXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOjFdOwotICAgICAgICBbd2luZG93SXRlbSBzZXRS
ZXByZXNlbnRlZE9iamVjdDpAKGluZm9JbmRleCsrKV07Ci0gICAgICAgIFttZW51IGFkZEl0ZW06
d2luZG93SXRlbS5nZXQoKV07Ci0gICAgfQotICAgIFtwb3B1cEJ1dHRvbiBzZWxlY3RJdGVtOm5p
bF07Ci0KLSAgICBhdXRvIG1lbnVMYWJlbCA9IGFkb3B0TlMoW1tOU1RleHRWaWV3IGFsbG9jXSBp
bml0XSk7Ci0gICAgW21lbnVMYWJlbCBzZXRTdHJpbmc6V0VCX1VJX05TU1RSSU5HKEAiV2luZG93
OiAiLCAiTGFiZWwgZm9yIHdpbmRvdyBzaGFyaW5nIG1lbnUiKV07Ci0gICAgW21lbnVMYWJlbCBz
ZXREcmF3c0JhY2tncm91bmQ6Tk9dOwotICAgIFttZW51TGFiZWwgc2V0U2VsZWN0YWJsZTpOT107
Ci0gICAgW21lbnVMYWJlbCBzZXRFZGl0YWJsZTpOT107Ci0KLSAgICBhdXRvIGFjY2Vzc29yeVZp
ZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMzAwLCA0MCldKTsKLSAgICBbYWNjZXNzb3J5VmlldyBhZGRTdWJ2aWV3OnBvcHVwQnV0dG9u
LmdldCgpXTsKLSAgICBbYWNjZXNzb3J5VmlldyBhZGRTdWJ2aWV3Om1lbnVMYWJlbC5nZXQoKV07
Ci0gICAgW2FsZXJ0IHNldEFjY2Vzc29yeVZpZXc6YWNjZXNzb3J5Vmlldy5nZXQoKV07Ci0KLSAg
ICBOU0J1dHRvbiAqYnV0dG9uID0gW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpXRUJfVUlfTlNT
VFJJTkcoQCJBbGxvdyAod2luZG93IHNoYXJpbmcpIiwgIkFsbG93IGJ1dHRvbiB0aXRsZSBpbiB3
aW5kb3cgc2hhcmluZyBwcm9tcHQiKV07Ci0gICAgYnV0dG9uLmtleUVxdWl2YWxlbnQgPSBAIiI7
Ci0gICAgYnV0dG9uID0gW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpXRUJfVUlfTlNTVFJJTkco
QCJEb27igJl0IEFsbG93ICh3aW5kb3cgc2hhcmluZykiLCAiRGlzYWxsb3cgYnV0dG9uIHRpdGxl
IGluIHdpbmRvdyBzaGFyaW5nIHByb21wdCIpXTsKLSAgICBidXR0b24ua2V5RXF1aXZhbGVudCA9
IEAiXEUiOwotCi0gICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpbd2ViVmlldyB3
aW5kb3ddIGNvbXBsZXRpb25IYW5kbGVyOltwb3B1cEJ1dHRvbiA9IFdURk1vdmUocG9wdXBCdXR0
b24pLCB3aW5kb3dJbmZvLCBjb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgewotICAgICAg
ICBpZiAocmV0dXJuQ29kZSAhPSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm4pIHsKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25CbG9jayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBOU051bWJlciAqaW5mb0luZGV4ID0g
W1twb3B1cEJ1dHRvbiBzZWxlY3RlZEl0ZW1dIHJlcHJlc2VudGVkT2JqZWN0XTsKLSAgICAgICAg
aWYgKCFpbmZvSW5kZXggfHwgW2luZm9JbmRleCB1bnNpZ25lZEludGVnZXJWYWx1ZV0gPiB3aW5k
b3dJbmZvLnNpemUoKSkgewotICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGF1dG8gaW5mbyA9IHdpbmRvd0luZm9bW2luZm9JbmRleCB1bnNpZ25lZEludGVnZXJWYWx1
ZV1dOwotICAgICAgICBjb21wbGV0aW9uQmxvY2soaW5mby5tX2RldmljZS5wZXJzaXN0ZW50SWQo
KSwgaW5mby5tX2RldmljZS5sYWJlbCgpKTsKLSAgICB9XTsKLX0KLQotdm9pZCBEaXNwbGF5Q2Fw
dHVyZVNlc3Npb25NYW5hZ2VyOjphbGVydEZvckdldERpc3BsYXlNZWRpYShXZWJQYWdlUHJveHkm
IHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OkNhcHR1cmVTZXNz
aW9uVHlwZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBw
YWdlLmNvY29hVmlldygpOwotICAgIGlmICghd2ViVmlldykgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyOjpDYXB0dXJlU2Vzc2lvblR5cGU6
Ok5vbmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKnZpc2libGVP
cmlnaW4gPSBhcHBsaWNhdGlvblZpc2libGVOYW1lRnJvbU9yaWdpbihvcmlnaW4pOwotICAgIGlm
ICghdmlzaWJsZU9yaWdpbikKLSAgICAgICAgdmlzaWJsZU9yaWdpbiA9IGFwcGxpY2F0aW9uVmlz
aWJsZU5hbWUoKTsKLQotICAgIE5TU3RyaW5nICphbGVydFRpdGxlID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gdG8gb2JzZXJ2ZSBv
bmUgb2YgeW91ciB3aW5kb3dzIG9yIHNjcmVlbnM/IiwgIk1lc3NhZ2UgZm9yIHdpbmRvdyBhbmQg
c2NyZWVuIHNoYXJpbmcgcHJvbXB0IiksIHZpc2libGVPcmlnaW5dOwotICAgIGF1dG8gKmFsbG93
V2luZG93QnV0dG9uU3RyaW5nID0gV0VCX1VJX05TU1RSSU5HKEAiQWxsb3cgT2JzZXJ2aW5nIGEg
V2luZG93IiwgIkFsbG93IHdpbmRvdyBidXR0b24gdGl0bGUgaW4gd2luZG93IGFuZCBzY3JlZW4g
c2hhcmluZyBwcm9tcHQiKTsKLSAgICBhdXRvICphbGxvd1NjcmVlbkJ1dHRvblN0cmluZyA9IFdF
Ql9VSV9OU1NUUklORyhAIkFsbG93IE9ic2VydmluZyBhIFNjcmVlbiIsICJBbGxvdyBzY3JlZW4g
YnV0dG9uIHRpdGxlIGluIHdpbmRvdyBhbmQgc2NyZWVuIHNoYXJpbmcgcHJvbXB0Iik7Ci0gICAg
YXV0byAqZG9Ob3RBbGxvd0J1dHRvblN0cmluZyA9IFdFQl9VSV9OU1NUUklORyhAIkRvbuKAmXQg
QWxsb3cgKHdpbmRvdyBhbmQgc2NyZWVuIHNoYXJpbmcpIiwgIkRpc2FsbG93IGJ1dHRvbiB0aXRs
ZSBpbiB3aW5kb3cgYW5kIHNjcmVlbiBzaGFyaW5nIHByb21wdCIpOwotCi0gICAgYXV0byBhbGVy
dCA9IGFkb3B0TlMoW1tOU0FsZXJ0IGFsbG9jXSBpbml0XSk7Ci0gICAgW2FsZXJ0IHNldE1lc3Nh
Z2VUZXh0OmFsZXJ0VGl0bGVdOwotCi0gICAgYXV0byAqYnV0dG9uID0gW2FsZXJ0IGFkZEJ1dHRv
bldpdGhUaXRsZTphbGxvd1dpbmRvd0J1dHRvblN0cmluZ107Ci0gICAgYnV0dG9uLmtleUVxdWl2
YWxlbnQgPSBAIiI7Ci0KLSAgICBidXR0b24gPSBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOmFs
bG93U2NyZWVuQnV0dG9uU3RyaW5nXTsKLSAgICBidXR0b24ua2V5RXF1aXZhbGVudCA9IEAiIjsK
LQotICAgIGJ1dHRvbiA9IFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6ZG9Ob3RBbGxvd0J1dHRv
blN0cmluZ107Ci0gICAgYnV0dG9uLmtleUVxdWl2YWxlbnQgPSBAIlxFIjsKLQotICAgIFthbGVy
dCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6W3dlYlZpZXcgd2luZG93XSBjb21wbGV0aW9uSGFu
ZGxlcjpbY29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKV0oTlNNb2RhbFJlc3BvbnNlIHJldHVybkNvZGUpIHsKLSAgICAgICAgRGlzcGxheUNh
cHR1cmVTZXNzaW9uTWFuYWdlcjo6Q2FwdHVyZVNlc3Npb25UeXBlIHJlc3VsdCA9IERpc3BsYXlD
YXB0dXJlU2Vzc2lvbk1hbmFnZXI6OkNhcHR1cmVTZXNzaW9uVHlwZTo6Tm9uZTsKLSAgICAgICAg
c3dpdGNoIChyZXR1cm5Db2RlKSB7Ci0gICAgICAgIGNhc2UgTlNBbGVydEZpcnN0QnV0dG9uUmV0
dXJuOgotICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlcjo6
Q2FwdHVyZVNlc3Npb25UeXBlOjpXaW5kb3c7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBOU0FsZXJ0U2Vjb25kQnV0dG9uUmV0dXJuOgotICAgICAgICAgICAgcmVzdWx0ID0gRGlz
cGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlcjo6Q2FwdHVyZVNlc3Npb25UeXBlOjpTY3JlZW47Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOU0FsZXJ0VGhpcmRCdXR0b25SZXR1cm46
Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyOjpDYXB0
dXJlU2Vzc2lvblR5cGU6Ok5vbmU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0g
ICAgICAgIGNvbXBsZXRpb25CbG9jayhyZXN1bHQpOwotICAgIH1dOwotfQotCi1zdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OmRldmljZVNl
bGVjdGVkRm9yVGVzdGluZyhDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUpCi17
Ci0gICAgQVNTRVJUKG1faW5kZXhPZkRldmljZVNlbGVjdGVkRm9yVGVzdGluZyk7Ci0KLSAgICB1
bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgZm9yIChhdXRvJiBkZXZpY2UgOiBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5kaXNwbGF5Q2FwdHVyZUZhY3RvcnkoKS5kaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXIoKS5jYXB0dXJlRGV2aWNlcygpKSB7Ci0gICAgICAgIGlmIChk
ZXZpY2UuZW5hYmxlZCgpICYmIGRldmljZS50eXBlKCkgPT0gZGV2aWNlVHlwZSkgewotICAgICAg
ICAgICAgaWYgKGluZGV4ID09IG1faW5kZXhPZkRldmljZVNlbGVjdGVkRm9yVGVzdGluZy52YWx1
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IGRldmljZSB9OwotICAgICAgICAgICAgKytp
bmRleDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0K
LXZvaWQgRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlcjo6c2hvd1dpbmRvd1BpY2tlcihXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChtX2luZGV4T2ZEZXZpY2VTZWxlY3RlZEZv
clRlc3RpbmcpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGV2aWNlU2VsZWN0ZWRGb3JU
ZXN0aW5nKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdykpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYWxlcnRGb3JXaW5kb3dTZWxlY3Rpb24ocGFnZSwgb3JpZ2luLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB3aW5kb3dJRCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHdpbmRvd1RpdGxl
KSBtdXRhYmxlIHsKLQotICAgICAgICBpZiAoIXdpbmRvd0lEIHx8ICF3aW5kb3dUaXRsZSkgewot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIENhcHR1cmVEZXZpY2UgZGV2aWNlID0geyB3
aW5kb3dJRC52YWx1ZSgpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3csIHdpbmRv
d1RpdGxlLnZhbHVlKCksIGVtcHR5U3RyaW5nKCksIHRydWUgfTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBkZXZpY2UgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRGlzcGxheUNhcHR1cmVT
ZXNzaW9uTWFuYWdlcjo6c2hvd1NjcmVlblBpY2tlcihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8Q2FwdHVyZURldmljZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICht
X2luZGV4T2ZEZXZpY2VTZWxlY3RlZEZvclRlc3RpbmcpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZGV2aWNlU2VsZWN0ZWRGb3JUZXN0aW5nKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OlNjcmVlbikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbE9uTWFpblJ1bkxv
b3AoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIGRldmljZSA6IFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OnNpbmdsZXRvbigpLmRpc3BsYXlDYXB0dXJlRmFjdG9yeSgpLmRpc3BsYXlDYXB0dXJl
RGV2aWNlTWFuYWdlcigpLmNhcHR1cmVEZXZpY2VzKCkpIHsKLSAgICAgICAgICAgIGlmIChkZXZp
Y2UuZW5hYmxlZCgpICYmIGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6U2NyZWVuKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBkZXZpY2Ug
fSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLSAgICB9KTsKLX0KLSNl
bmRpZgotCi1ib29sIERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OmlzQXZhaWxhYmxlKCkK
LXsKLSNpZiBIQVZFKFNDUkVFTl9DQVBUVVJFX0tJVCkKLSAgICByZXR1cm4gU2NyZWVuQ2FwdHVy
ZUtpdENhcHR1cmVTb3VyY2U6OmlzQXZhaWxhYmxlKCk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgotfQotCi1EaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyJiBEaXNwbGF5Q2Fw
dHVyZVNlc3Npb25NYW5hZ2VyOjpzaW5nbGV0b24oKQotewotICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEaXNwbGF5Q2FwdHVyZVNlc3Npb25N
YW5hZ2VyPiBtYW5hZ2VyOwotICAgIHJldHVybiBtYW5hZ2VyOwotfQotCi1EaXNwbGF5Q2FwdHVy
ZVNlc3Npb25NYW5hZ2VyOjpEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyKCkKLXsKLX0KLQot
RGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlcjo6fkRpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFn
ZXIoKQotewotfQotCi12b2lkIERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OnByb21wdEZv
ckdldERpc3BsYXlNZWRpYShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVk
aWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGUgcHJvbXB0VHlwZSwgV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBBU1NFUlQoaXNBdmFpbGFibGUoKSk7Ci0KLSNpZiBIQVZFKFNDUkVFTl9D
QVBUVVJFX0tJVCkKLSAgICBpZiAoIWlzQXZhaWxhYmxlKCkgfHwgIWNvbXBsZXRpb25IYW5kbGVy
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAocHJvbXB0VHlwZSA9PSBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OjpVc2VyTWVkaWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGU6OlNjcmVlbikg
ewotICAgICAgICBzaG93U2NyZWVuUGlja2VyKHBhZ2UsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHByb21wdFR5
cGUgPT0gVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlhRGlzcGxheUNh
cHR1cmVQcm9tcHRUeXBlOjpXaW5kb3cpIHsKLSAgICAgICAgc2hvd1dpbmRvd1BpY2tlcihwYWdl
LCBvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGFsZXJ0Rm9yR2V0RGlzcGxheU1lZGlhKHBhZ2UsIG9yaWdpbiwgW3RoaXMs
IHBhZ2UgPSBSZWYgeyBwYWdlIH0sIG9yaWdpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OkNhcHR1
cmVTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChzZXNzaW9u
VHlwZSA9PSBDYXB0dXJlU2Vzc2lvblR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoc2Vzc2lvblR5cGUgPT0gQ2FwdHVyZVNlc3Npb25UeXBlOjpTY3JlZW4p
Ci0gICAgICAgICAgICBzaG93U2NyZWVuUGlja2VyKHBhZ2UsIG9yaWdpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaG93V2luZG93UGlj
a2VyKHBhZ2UsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0pOwot
I2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwotI2VuZGlmCi0KLX0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eU1hYy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlNYWMuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiNTEwNjJkMmNlMTAxODJkZjVjY2UwNzRhY2NiZGJk
ODU3MzdiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eU1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHlNYWMgZmluYWwgOiBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eSB7Ci1wdWJsaWM6Ci0gICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHlNYWMoKSBmaW5hbDsKLQotICAgIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlNYWMo
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmLCBXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlE
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4m
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYm
IGF1ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZp
Y2VzLCBXZWJDb3JlOjpNZWRpYVN0cmVhbVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0KLSAgICB2b2lkIHByb21wdEZvckdldERpc3BsYXlNZWRpYShVc2VyTWVk
aWFEaXNwbGF5Q2FwdHVyZVByb21wdFR5cGUpIGZpbmFsOwotICAgIGJvb2wgY2FuUHJvbXB0Rm9y
R2V0RGlzcGxheU1lZGlhKCkgZmluYWw7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTEwZDEwNTk4NTRkOGY3MzE4NWY3MTBmMDZhMDJlNzljZjUzOTY2Ny4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eU1hYy5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHlNYWMuaCIKLQotI2ltcG9ydCAiRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFu
YWdlci5oIgotI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVm
PFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6OmNyZWF0ZShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYg
bWFuYWdlciwgVXNlck1lZGlhUmVxdWVzdElkZW50aWZpZXIgdXNlck1lZGlhSUQsIEZyYW1lSWRl
bnRpZmllciBtYWluRnJhbWVJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2
aWNlcywgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBNZWRpYVN0cmVhbVJl
cXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGRlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RQcm94eU1hYyhtYW5hZ2VyLCB1c2VyTWVkaWFJRCwgbWFpbkZyYW1l
SUQsIGZyYW1lSUQsIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHRv
cExldmVsRG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKGF1ZGlvRGV2aWNlcyksIFdURk1vdmUodmlk
ZW9EZXZpY2VzKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShkZWNpc2lvbkNvbXBsZXRpb25I
YW5kbGVyKSkpOwotfQotCi1Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5TWFjOjpVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5TWFjKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCBVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllciB1c2VyTWVk
aWFJRCwgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4mJiB2aWRlb0RldmljZXMs
IE1lZGlhU3RyZWFtUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikKLSAgICA6IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkobWFuYWdlciwgdXNlck1lZGlhSUQsIG1haW5GcmFtZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3Vt
ZW50T3JpZ2luKSwgV1RGTW92ZShhdWRpb0RldmljZXMpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlcyks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpCi17
Ci19Ci0KLVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlNYWM6On5Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5TWFjKCkKLXsKLX0KLQotdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5TWFjOjpwcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoVXNlck1lZGlhRGlzcGxh
eUNhcHR1cmVQcm9tcHRUeXBlIHByb21wdFR5cGUpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKCFtYW5hZ2VyKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXI6OnNpbmdsZXRvbigpLnByb21w
dEZvckdldERpc3BsYXlNZWRpYShwcm9tcHRUeXBlLCBtYW5hZ2VyKCktPnBhZ2UoKSwgdG9wTGV2
ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dKHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gZGV2aWNlKSBtdXRhYmxlIHsK
LQotICAgICAgICBpZiAoIWRldmljZSkgewotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVu
eShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb246OlBlcm1pc3Npb25EZW5pZWQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0RWxpZ2libGVWaWRlb0RldmljZVVJRHMoeyBk
ZXZpY2UudmFsdWUoKSB9KTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWxsb3coU3RyaW5nKCks
IGRldmljZS52YWx1ZSgpLnBlcnNpc3RlbnRJZCgpKTsKLSAgICB9KTsKLSNlbHNlCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5TWFjOjpjYW5Qcm9tcHRGb3JHZXREaXNwbGF5TWVkaWEoKQotewotI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHJldHVybiBEaXNwbGF5
Q2FwdHVyZVNlc3Npb25NYW5hZ2VyOjppc0F2YWlsYWJsZSgpOwotI2Vsc2UKLSAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMTNhMWUxMWRkNzYw
ODNkOWJmMzFhMGQzOWViOTU0YmFmYTk4ZThlLi5hNDVkNGQzNjkzMTc4NDQ3MDRkNDcxODBmYzRk
YWQ2ZjFiOTY2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTI1MTUsMTAgKzI1MTUsNiBAQAogCQkwN0UxOUYwNzIzRDREQzg4MDA5
NEZGQjQgLyogUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlVGV4dFRyYWNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Ux
OUYwODIzRDUzM0I5MDA5NEZGQjQgLyogVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDdFMTlGMDkyM0Q1MzNCQTAwOTRGRkI0IC8qIFRleHRUcmFja1ByaXZh
dGVSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0VGMDc1MTI3NDU5M0ZBMDA2NkVBMDQgLyogVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3RUYwNzUyMjc0NTkzRkEwMDY2RUEwNCAvKiBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0UHJveHlNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdFRjA3NTgy
NzQ1QTgxNjAwNjZFQTA0IC8qIERpc3BsYXlDYXB0dXJlU2Vzc2lvbk1hbmFnZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwN0VGMDc1OTI3NDVBODE2MDA2NkVBMDQgLyogRGlzcGxh
eUNhcHR1cmVTZXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Q2FwdHVyZVNl
c3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjdENkE1RkU4
NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBL
aXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZy
YW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5QzE2NjdGRTg0MTE1
OEMwMkFBQzA3IC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gZW47
IHBhdGggPSBlbi5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMERDQkY0RDkyNkUyRUQzMjAwRUEwRTA3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTY3Myw4
ICsxMTY2OSw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCODc4QjYxMzEzMzQyOERDMDA2ODg4
RTkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjg3OEI2MTQxMzM0MjhEQzAwNjg4OEU5
IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKLQkJCQkwN0VGMDc1OTI3NDVBODE2MDA2NkVBMDQg
LyogRGlzcGxheUNhcHR1cmVTZXNzaW9uTWFuYWdlci5oICovLAotCQkJCTA3RUYwNzU4Mjc0NUE4
MTYwMDY2RUEwNCAvKiBEaXNwbGF5Q2FwdHVyZVNlc3Npb25NYW5hZ2VyLm1tICovLAogCQkJCUMx
ODE3MzYyMjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8sCiAJCQkJQzE4MTcz
NjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggKi8sCiAJCQkJMzFBQkE3OUMyMTVB
RjlFMDAwQzkwRTMxIC8qIEhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCAqLywKQEAgLTExNjkz
LDggKzExNjg3LDYgQEAKIAkJCQlDRDQ5MUIxMDFFNzM0ODIxMDAwMDkwNjYgLyogVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJQ0Q0OTFCMTExRTczNDgyMTAwMDA5MDY2
IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDRDQ5MUIxNDFFNzM0
OUYzMDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAq
LywKLQkJCQkwN0VGMDc1MjI3NDU5M0ZBMDA2NkVBMDQgLyogVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eU1hYy5oICovLAotCQkJCTA3RUYwNzUxMjc0NTkzRkEwMDY2RUEwNCAvKiBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5TWFjLm1tICovLAogCQkJCTJEMTI1QzVEMTg1N0VB
MDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJMkQ2Q0Qx
MTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tICovLAogCQkJCTcy
OEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuaAppbmRleCA3YzU0YTJhMzBjZDVlYTdmZGJkYjk4NjMzYmE4NDBhYWVlYTBkYWU1Li4x
ZTE3OTUxMzM1MDU5MjEwZjJlNzZjODk5ZmMxYWQ1NDA3Y2RmNDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlDYXB0dXJlTWFuYWdlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2FwdHVyZURldmljZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFT
b3VyY2VGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllci5oPgpAQCAtMTAwLDEyICsxMDAsMTIgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZURpc3BsYXlDYXB0
dXJlU291cmNlKGNvbnN0IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2UmLCBTdHJpbmcmJiwgY29uc3Qg
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cyopIGZpbmFsOwotICAgICAgICBXZWJDb3JlOjpEaXNw
bGF5Q2FwdHVyZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsIHsg
cmV0dXJuIG1fbWFuYWdlci5tX25vT3BDYXB0dXJlRGV2aWNlTWFuYWdlcjsgfQorICAgICAgICBX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlTWFuYWdlciYgZGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
KCkgZmluYWwgeyByZXR1cm4gbV9tYW5hZ2VyLm1fbm9PcENhcHR1cmVEZXZpY2VNYW5hZ2VyOyB9
CiAKICAgICAgICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1fbWFuYWdlcjsKICAgICB9Owog
Ci0gICAgY2xhc3MgTm9PcENhcHR1cmVEZXZpY2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRp
c3BsYXlDYXB0dXJlTWFuYWdlciB7CisgICAgY2xhc3MgTm9PcENhcHR1cmVEZXZpY2VNYW5hZ2Vy
IDogcHVibGljIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIE5vT3BDYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2YThkYmI4M2I3MjI2
NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLjcyYTU2ZGM3NzcwMzY2ZDAwYzUzMzU1ZGQzMzM2
NGIwMzUxZjgwNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODY4
OTMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQx
OTcKKworICAgICAgICBCcmVha3MgdGhlIGJ1aWxkCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgorCisgICAgICAgICJbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVy
ZSBiYWNrZW5kIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0MDI5CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL3IyODY4OTMKKwog
MjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYzhjMzRmOWIyNTYyZGY5MjUyOGRl
OTAwNDBmNGQ5YmMyYmQyZTJlNy4uNDlmYjkyNjZkYjQzNjM2MWNmNDMzYmI0MzA5MjU1N2YxN2Rl
Y2NjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMTE1LDcgKzExNSw2
IEBAIFRlc3RzL1dlYktpdENvY29hL0Z1bGxzY3JlZW5SZW1vdmVOb2RlQmVmb3JlRW50ZXIubW0K
IFRlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KIFRlc3RzL1dlYktpdENvY29hL0dlb2xv
Y2F0aW9uLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9HZXREaXNwbGF5TWVkaWEubW0KLVRlc3RzL1dl
YktpdENvY29hL0dldERpc3BsYXlNZWRpYVdpbmRvd0FuZFNjcmVlbi5tbQogVGVzdHMvV2ViS2l0
Q29jb2EvR2V0UmVzb3VyY2VEYXRhLm1tCiBUZXN0cy9XZWJLaXRDb2NvYS9IU1RTLm1tCiBUZXN0
cy9XZWJLaXRDb2NvYS9JREJDaGVja3BvaW50V0FMLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE3OGIzMDljNDVjM2EwNjRmMjhiMDdkYjBmYTkwMGI0NGQ3MTgyOWEuLjdmNjkxNTUzZTNl
NDMzZDIyNWYzMzQzYTYxN2Y1MGQ0NjllZjgyODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNjI5LDcgKzE2MjksNiBAQAogCQkwNDUxQTVBNjIzNUU0MzhFMDA5REY5NDUgLyogQnVtcFBv
aW50ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QnVtcFBvaW50ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZGb3VuZGF0aW9uU29mdExp
bmtUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzEzNzA0OTI2NTMyMEU1
MDBDQTJDOUEgLyogQXVkaW9CdWZmZXJTaXplLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQXVkaW9CdWZmZXJTaXplLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwNzM4MDEyRTI3NUVBREFCMDAwRkE3N0MgLyogR2V0RGlzcGxheU1lZGlhV2luZG93
QW5kU2NyZWVuLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0RGlzcGxheU1lZGlhV2luZG93
QW5kU2NyZWVuLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ2NjQ1NzIyRkY2
MkQwMDBFMzQ1MUEgLyogQWNjZXNzaWJpbGl0eVRlc3RTdXBwb3J0UHJvdG9jb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RTdXBwb3J0UHJvdG9jb2wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RQ
bHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDkyQjM5MURGOEFEQTQw
MDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzQyMyw3ICszNDIyLDYgQEAKIAkJCQlDRERDN0M2ODI1RkZGNkQwMDAyMjQy
NzggLyogRnVsbHNjcmVlblJlbW92ZU5vZGVCZWZvcmVFbnRlci5tbSAqLywKIAkJCQk2MzFFRkZG
NTFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gKi8sCiAJCQkJMDdFMUY2QTAxRkZD
M0EwODAwOTZDN0VDIC8qIEdldERpc3BsYXlNZWRpYS5tbSAqLywKLQkJCQkwNzM4MDEyRTI3NUVB
REFCMDAwRkE3N0MgLyogR2V0RGlzcGxheU1lZGlhV2luZG93QW5kU2NyZWVuLm1tICovLAogCQkJ
CTJEQURGMjYyMjFDQjhGMzIwMDNEM0UzQSAvKiBHZXRSZXNvdXJjZURhdGEubW0gKi8sCiAJCQkJ
NDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8sCiAJCQkJNUNCNTk5
MEEyNjlFNzRFQzAwMkE3Q0ZGIC8qIEhTVFMubW0gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dldERpc3BsYXlNZWRpYVdpbmRvd0FuZFNjcmVl
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR2V0RGlzcGxheU1l
ZGlhV2luZG93QW5kU2NyZWVuLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTlm
N2RmN2NmNGUzYjU1ZDE3NGQwNzlhMWExZjY3NjIxN2Y4MmJhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvR2V0RGlzcGxheU1lZGlhV2luZG93QW5kU2NyZWVuLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lm
IEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgotI2ltcG9ydCAiVGVzdC5oIgotI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCAi
VXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaCIKLSNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KLSNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgotCi1A
aW50ZXJmYWNlIFdpbmRvd0FuZFNjcmVlbkNhcHR1cmVUZXN0VmlldyA6IFRlc3RXS1dlYlZpZXcK
LS0gKEJPT0wpaGF2ZVN0cmVhbTooQk9PTClleHBlY3RlZDsKLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdpbmRvd0FuZFNjcmVlbkNhcHR1cmVUZXN0VmlldwotLSAoQk9PTCloYXZlU3RyZWFtOihC
T09MKWV4cGVjdGVkCi17Ci0gICAgaW50IHJldHJ5Q291bnQgPSAxMDAwOwotICAgIHdoaWxlIChy
ZXRyeUNvdW50LS0pIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBbc2VsZiBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaGF2ZVN0cmVhbSgpIl07Ci0gICAgICAgIGlmIChyZXN1bHQuYm9v
bFZhbHVlID09IGV4cGVjdGVkKQotICAgICAgICAgICAgcmV0dXJuIFlFUzsKLQotICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IE5POwotfQotQGVuZAotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoV2ViS2l0
MiwgR2V0RGlzcGxheU1lZGlhV2luZG93QW5kU2NyZWVuUHJvbXB0KQotewotICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVh
dGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRl
c3QiKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vz
c1Bvb2wgKiljb250ZXh0LmdldCgpOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2Fw
dHVyZUVuYWJsZWQgPSBZRVM7Ci0KLSAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdOwotICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1Nl
Y3VyZUNvbm5lY3Rpb24gPSBOTzsKLSAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCA9IFlFUzsKLSAgICBwcmVmZXJlbmNlcy5fdXNlU2NyZWVuQ2FwdHVyZUtpdCA9IFlF
UzsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2luZG93
QW5kU2NyZWVuQ2FwdHVyZVRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotCi0gICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0RGlzcGxheU1lZGlhIl07Ci0KLSAg
ICAvLyBDaGVjayAiRG9u4oCZdCBBbGxvdyIKLSAgICBbZGVsZWdhdGUgc2V0R2V0RGlzcGxheU1l
ZGlhRGVjaXNpb246V0tEaXNwbGF5Q2FwdHVyZVBlcm1pc3Npb25EZWNpc2lvbkRlbnldOwotICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwcm9tcHRGb3JDYXB0dXJl
KHsgdmlkZW8gOiB0cnVlIH0pIl07Ci0gICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsK
LSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBoYXZlU3RyZWFtOk5PXSk7Ci0KLSAgICAvLyBDaGVj
ayAiQWxsb3cgU2NyZWVuIgotICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJzdG9wKCkiXTsKLSAgICBbZGVsZWdhdGUgcmVzZXRXYXNQcm9tcHRlZF07Ci0gICAgW3dl
YlZpZXcgX3NldEluZGV4T2ZHZXREaXNwbGF5TWVkaWFEZXZpY2VTZWxlY3RlZEZvclRlc3Rpbmc6
QDBdOwotICAgIFtkZWxlZ2F0ZSBzZXRHZXREaXNwbGF5TWVkaWFEZWNpc2lvbjpXS0Rpc3BsYXlD
YXB0dXJlUGVybWlzc2lvbkRlY2lzaW9uU2NyZWVuUHJvbXB0XTsKLSAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicHJvbXB0Rm9yQ2FwdHVyZSh7IHZpZGVvIDogdHJ1
ZSB9KSJdOwotICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07Ci0gICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgaGF2ZVN0cmVhbTpZRVNdKTsKLSAgICBhdXRvIGxhYmVsID0gW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LmxhYmVsIl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGxhYmVsLCBAIk1vY2sgc2NyZWVuIGRldmlj
ZSAxIik7Ci0KLSAgICAvLyBDaGVjayAiQWxsb3cgV2luZG93IgotICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzdG9wKCkiXTsKLSAgICBbZGVsZWdhdGUgcmVzZXRX
YXNQcm9tcHRlZF07Ci0gICAgW3dlYlZpZXcgX3NldEluZGV4T2ZHZXREaXNwbGF5TWVkaWFEZXZp
Y2VTZWxlY3RlZEZvclRlc3Rpbmc6QDBdOwotICAgIFtkZWxlZ2F0ZSBzZXRHZXREaXNwbGF5TWVk
aWFEZWNpc2lvbjpXS0Rpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkRlY2lzaW9uV2luZG93UHJvbXB0
XTsKLSAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicHJvbXB0Rm9y
Q2FwdHVyZSh7IHZpZGVvIDogdHJ1ZSB9KSJdOwotICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9t
cHRlZF07Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgaGF2ZVN0cmVhbTpZRVNdKTsKLSAgICBs
YWJlbCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKVswXS5sYWJlbCJdOwotICAgIEVYUEVDVF9XS19TVFJFUShsYWJlbCwgQCJN
b2NrIHdpbmRvdyBkZXZpY2UgMSIpOwotCi0gICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInN0b3AoKSJdOwotICAgIFt3ZWJWaWV3IF9zZXRJbmRleE9mR2V0RGlzcGxh
eU1lZGlhRGV2aWNlU2VsZWN0ZWRGb3JUZXN0aW5nOm5pbF07Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmIC8vIEhBVkUoU0NSRUVOX0NBUFRVUkVfS0lUKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQppbmRleCBkZGVm
ODkyMDZjMzlkNWM2N2QwMzU3NjJjOGM2ZWE5ZTlmNzc0ZjJjLi45YTkxY2VmZDczMDljMWQxZjNk
MDUzYTgwNDNkMGMwOWVjNjdhNTAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFn
ZUJhY2tncm91bmRDb2xvci5tbQpAQCAtMzksOCArMzksOCBAQAogICAgIEVYUEVDVF9UUlVFKFth
Y3R1YWwgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7IFwKICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXhwZWN0ZWQsIChOU1N0cmluZyAqKWFjdHVhbCk7CiAKLWNvbnN0ZXhwciBDR0Zsb2F0
IGJhY2tncm91bmRSZWRDb2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDAsIDAsIDEgfTsKLWNvbnN0
ZXhwciBDR0Zsb2F0IGJhY2tncm91bmRCbHVlQ29sb3JDb21wb25lbnRzWzRdID0geyAwLCAwLCAx
LCAxIH07Citjb25zdGV4cHIgQ0dGbG9hdCByZWRDb2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDAs
IDAsIDEgfTsKK2NvbnN0ZXhwciBDR0Zsb2F0IGJsdWVDb2xvckNvbXBvbmVudHNbNF0gPSB7IDAs
IDAsIDEsIDEgfTsKIAogc3RhdGljIFJldGFpblB0cjxDR0NvbG9yPiBkZWZhdWx0QmFja2dyb3Vu
ZENvbG9yKCkKIHsKQEAgLTY4LDcgKzY4LDcgQEAgVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3IsIE9uTG9hZCkKIFRFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yLCBTaW5nbGVTb2xpZENvbG9yKQogewogICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9w
dENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAg
YXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQo
KSwgYmFja2dyb3VuZFJlZENvbG9yQ29tcG9uZW50cykpOworICAgIGF1dG8gcmVkQ29sb3IgPSBh
ZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9u
ZW50cykpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBFWFBF
Q1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpLmdldCgpKSk7CkBAIC05Myw3
ICs5Myw3IEBAIFRFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBTaW5nbGVC
bGVuZGVkQ29sb3IpCiBURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgTXVs
dGlwbGVTb2xpZENvbG9ycykKIHsKICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8g
cmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJh
Y2tncm91bmRSZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMp
KTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgRVhQRUNUX1RS
VUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3Jd
LkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOwpAQCAtMTc5LDggKzE3
OSw4IEBAIEBlbmQKIFRFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBLVk8p
CiB7CiAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBiYWNrZ3JvdW5kUmVkQ29sb3JD
b21wb25lbnRzKSk7Ci0gICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUo
c1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJhY2tncm91bmRCbHVlQ29sb3JDb21wb25lbnRzKSk7Cisg
ICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5n
ZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgYXV0byBibHVlQ29sb3IgPSBhZG9wdENG
KENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIGJsdWVDb2xvckNvbXBvbmVudHMp
KTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgYXV0byB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciA9IGFkb3B0TlMoW1tXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKQEAgLTI4Myw4ICsyODMsOCBAQCBjb25zdGV4cHIgQ0dGbG9hdCB3aGl0ZUNvbG9y
Q29tcG9uZW50c1s0XSA9IHsgMSwgMSwgMSwgMSB9OwogVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3IsIE1hdGNoZXNTY3JvbGxWaWV3KQogewogICAgIGF1dG8gc1JHQkNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKSk7Ci0gICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29s
b3JTcGFjZS5nZXQoKSwgYmFja2dyb3VuZFJlZENvbG9yQ29tcG9uZW50cykpOwotICAgIGF1dG8g
Ymx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCBi
YWNrZ3JvdW5kQmx1ZUNvbG9yQ29tcG9uZW50cykpOworICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9w
dENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50
cykpOworICAgIGF1dG8gYmx1ZUNvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xv
clNwYWNlLmdldCgpLCBibHVlQ29sb3JDb21wb25lbnRzKSk7CiAgICAgYXV0byB3aGl0ZUNvbG9y
ID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCB3aGl0ZUNvbG9y
Q29tcG9uZW50cykpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHJvY2Vz
c1Rlcm1pbmF0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
UHJvY2Vzc1Rlcm1pbmF0ZS5tbQppbmRleCA4NTExODg4Y2RmYWRiYzQ5MzM5ODZhMmVlNGVlZGIy
OTNhMDA3MjI1Li41OTU0MmViYmExNmVmOGQ0MGMxZWYyMGE1M2I2Y2I1YjJkM2Y2NDIyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlByb2Nlc3NU
ZXJtaW5hdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQcm9jZXNzVGVybWluYXRlLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKIFRFU1QoV2ViS2l0LCBXZWJQcm9jZXNzVGVybWluYXRlKQogewpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZS5oCmluZGV4
IGZiMTRhMDU0YTZhYjdkOTdiOTY1ZmQ1ZDFhYTcxNzdiYzc0NTE4ZTIuLjJjMWZlOTZkZjVkZWI3
NjY1NjAzZjQyYWJkOTNjNzg4ZmUyZjdiMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLmgKQEAgLTI1LDE0ICsyNSwx
MiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbXBvcnQgPFdlYktpdC9XS1VJRGVs
ZWdhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAKIEBpbnRl
cmZhY2UgVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGU+
IHsKICAgICBib29sIF93YXNQcm9tcHRlZDsKICAgICBpbnQgX251bWJlck9mUHJvbXB0czsKICAg
ICBXS1Blcm1pc3Npb25EZWNpc2lvbiBfYXVkaW9EZWNpc2lvbjsKICAgICBXS1Blcm1pc3Npb25E
ZWNpc2lvbiBfdmlkZW9EZWNpc2lvbjsKLSAgICBXS0Rpc3BsYXlDYXB0dXJlUGVybWlzc2lvbkRl
Y2lzaW9uIF9nZXREaXNwbGF5TWVkaWFEZWNpc2lvbjsKIH0KIAogQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCB3YXNQcm9tcHRlZDsKQEAgLTQ0LDEyICs0MiwxMCBAQAogCiAtKHZvaWQpc2V0QXVk
aW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247CiAtKHZvaWQpc2V0Vmlk
ZW9EZWNpc2lvbjooV0tQZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb247Ci0tKHZvaWQpc2V0R2V0
RGlzcGxheU1lZGlhRGVjaXNpb246KFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb24p
ZGVjaXNpb247CiAKIC8vIFdLVUlEZWxlZ2F0ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3Vy
aXR5T3JpZ2luICopb3JpZ2luIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
dHlwZTooV0tNZWRpYUNhcHR1cmVUeXBlKXR5cGUgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S1Blcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JV
Ukw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVSTDooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVJ
ZGVudGlmaWVyOihOU1VJbnRlZ2VyKWZyYW1lSWRlbnRpZmllciBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TU3RyaW5nICpzYWx0LCBCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlcjsK
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERpc3BsYXlDYXB0
dXJlUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBpbml0aWF0
ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tEaXNwbGF5Q2FwdHVyZVBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikpZGVjaXNpb25IYW5k
bGVyOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlLm1tCmluZGV4IGY1MGMxNTBmN2M2NTRlNTA2MmQ2OWY0
N2NiZDZmMjVmN2JkNDMzMDEuLmEyOTRkMTBhY2NiYzkwMWJlZjFjZjI1ZDIzODM5ZWRlOWIzY2E1
ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZVVJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlVUlEZWxlZ2F0ZS5tbQpAQCAtNDEsNyArNDEsNiBAQCAtKGlkKWluaXQgewogICAgICAg
ICBfbnVtYmVyT2ZQcm9tcHRzID0gMDsKICAgICAgICAgX2F1ZGlvRGVjaXNpb24gPSBXS1Blcm1p
c3Npb25EZWNpc2lvbkdyYW50OwogICAgICAgICBfdmlkZW9EZWNpc2lvbiA9IFdLUGVybWlzc2lv
bkRlY2lzaW9uR3JhbnQ7Ci0gICAgICAgIF9nZXREaXNwbGF5TWVkaWFEZWNpc2lvbiA9IFdLRGlz
cGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb25EZW55OwogICAgIH0KIAogICAgIHJldHVybiBz
ZWxmOwpAQCAtNjgsMTAgKzY3LDYgQEAgLSh2b2lkKXNldFZpZGVvRGVjaXNpb246KFdLUGVybWlz
c2lvbkRlY2lzaW9uKWRlY2lzaW9uIHsKICAgICBfdmlkZW9EZWNpc2lvbiA9IGRlY2lzaW9uOwog
fQogCi0tKHZvaWQpc2V0R2V0RGlzcGxheU1lZGlhRGVjaXNpb246KFdLRGlzcGxheUNhcHR1cmVQ
ZXJtaXNzaW9uRGVjaXNpb24pZGVjaXNpb24gewotICAgIF9nZXREaXNwbGF5TWVkaWFEZWNpc2lv
biA9IGRlY2lzaW9uOwotfQotCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdE1lZGlhQ2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4g
KilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB0eXBlOihXS01l
ZGlhQ2FwdHVyZVR5cGUpdHlwZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLUGVybWlzc2lv
bkRlY2lzaW9uIGRlY2lzaW9uKSlkZWNpc2lvbkhhbmRsZXIgewogICAgICsrX251bWJlck9mUHJv
bXB0czsKICAgICBfd2FzUHJvbXB0ZWQgPSB0cnVlOwpAQCAtMTAxLDE0ICs5Niw2IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0TWVkaWFDYXB0dXJlUGVybWlz
c2lvbkZvck9yaWdpbjooV0tTCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZyYW1lVVJM
OihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIpZnJhbWVJ
ZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnNhbHQsIEJPT0wg
YXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIHsKICAgICBkZWNpc2lvbkhhbmRsZXIoQCIweDk4
NzY1NDMyMTAiLCBZRVMpOwogfQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHJlcXVlc3REaXNwbGF5Q2FwdHVyZVBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4gKilvcmlnaW4gaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRGlzcGxheUNhcHR1cmVQZXJtaXNzaW9uRGVjaXNpb24g
ZGVjaXNpb24pKWRlY2lzaW9uSGFuZGxlcgotewotICAgICsrX251bWJlck9mUHJvbXB0czsKLSAg
ICBfd2FzUHJvbXB0ZWQgPSB0cnVlOwotICAgIGRlY2lzaW9uSGFuZGxlcihfZ2V0RGlzcGxheU1l
ZGlhRGVjaXNpb24pOwotfQotCiBAZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>