<?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>136164</bug_id>
          
          <creation_ts>2014-08-22 11:21:37 -0700</creation_ts>
          <short_desc>REGRESSION(r172844): re-applying WEBCORE_EXPORTS patch (Requested by alexchristensen on #webkit).</short_desc>
          <delta_ts>2014-08-22 11:25:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030761</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 11:21:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/172844 broke the build:
re-applying WEBCORE_EXPORTS patch (Requested by alexchristensen on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030762</commentid>
    <comment_count>1</comment_count>
      <attachid>236993</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 11:22:04 -0700</bug_when>
    <thetext>Created attachment 236993
ROLLOUT of r172844

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030764</commentid>
    <comment_count>2</comment_count>
      <attachid>236993</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 11:25:54 -0700</bug_when>
    <thetext>Comment on attachment 236993
ROLLOUT of r172844

Clearing flags on attachment: 236993

Committed r172862: &lt;http://trac.webkit.org/changeset/172862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030765</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 11:25:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236993</attachid>
            <date>2014-08-22 11:22:04 -0700</date>
            <delta_ts>2014-08-22 11:25:53 -0700</delta_ts>
            <desc>ROLLOUT of r172844</desc>
            <filename>bug-136164-20140822112156.patch</filename>
            <type>text/plain</type>
            <size>301530</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5NWNkMTgxY2EyZGRlNjhlODA2N2Qw
NTQwNzFlMGJjYWFiYzllMGQuLmNlYmVhZDM2NzRmODQ2MzM2OWUwZjM1NDhmZmJlOGFiYTE1Zjgy
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDgtMjIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NzI4NDQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzYxNjQKKworICAgICAgICByZS1hcHBseWluZyBXRUJDT1JFX0VYUE9SVFMgcGF0Y2ggKFJlcXVl
c3RlZCBieQorICAgICAgICBhbGV4Y2hyaXN0ZW5zZW4gb24gI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJSZXZlcnQgcjE3MjgzMSwgaXQgYnJva2Ug
dGhlIFdpbmRvd3MgYnVpbGQuIgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xNzI4NDQKKwogMjAxNC0wOC0yMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGlPUyBidWlsZCBkdWUgdG8gcjE3MjgzMiBhbmQgbW92ZSBSVUJCRVJfQkFO
RElORyBvdXQgb2YgRmVhdHVyZURlZmluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhkZGE4ODBkODEwMWVh
ZTViYTljNTM5NjcwNTliMmJlYzA1MjlkYWYuLjVjZjU5MWExYTAwNjUzZGZiZTFmZDY2ZmY1Nzkw
M2Y3NGVmZGI2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wOC0yMiAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE3Mjg0NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNjE2NAorCisgICAgICAgIHJlLWFwcGx5aW5nIFdFQkNPUkVfRVhQ
T1JUUyBwYXRjaCAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGFsZXhjaHJpc3RlbnNlbiBvbiAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlJldmVydCBy
MTcyODMxLCBpdCBicm9rZSB0aGUgV2luZG93cyBidWlsZC4iCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3Mjg0NAorCiAyMDE0LTA4LTIxICBEYXZpZCBIeWF0dCAg
PGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgcnVkaW1lbnRhcnkgQm9wb21v
Zm8gUnVieSBzdXBwb3J0IChydWJ5LXBvc2l0aW9uOmludGVyLWNoYXJhY3RlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oIGIvU291cmNlL1dURi93dGYvRXhwb3J0
TWFjcm9zLmgKaW5kZXggNWE0YWY1Zjc1MmMzMWEyMWQ4NzM3OTI4NDc4MDBkMzQ1ZWE1YjM3OC4u
YzkwYjlmMDM0ODk3YmQ2NjlhNzBiZTRjMGQ5MWI0MTZkNjJiYmQ1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwb3J0TWFj
cm9zLmgKQEAgLTEwNSwyNCArMTA1LDYgQEAKIAogI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9T
KQogCi0vLyBXVEZfVEVTVElORyAoYW5kIFdFQkNPUkVfVEVTVElORyBpbiBQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oKSBpcyB1c2VkIGZvcgotLy8gZXhwb3J0aW5nIHN5bWJvbHMgd2hpY2ggYXJlIHJl
ZmVycmVkIGZyb20gV2ViQ29yZVRlc3RTdXBwb3J0IGxpYnJhcnkuCi0vLyBTaW5jZSB0aGUgc2V0
IG9mIEFQSXMgaXMgY29tbW9uIGJldHdlZW4gcG9ydHMsCi0vLyBpdCBpcyByYXRoZXIgd29ydGgg
YW5ub3RhdGluZyBpbnNpZGUgdGhlIGNvZGUgdGhhbiBtYWludGFpbmluZyBwb3J0IHNwZWNpZmlj
IGV4cG9ydCBsaXN0cy4KLSNpZiBVU0UoRVhQT1JUX01BQ1JPU19GT1JfVEVTVElORykKLQotI2lm
IGRlZmluZWQoV1RGX0lTX0xJTktFRF9JTl9TQU1FX0JJTkFSWSkKLSNkZWZpbmUgV1RGX1RFU1RJ
TkcgV1RGX0VYUE9SVF9ERUNMQVJBVElPTgotI2Vsc2UKLSNkZWZpbmUgV1RGX1RFU1RJTkcgV1RG
X0lNUE9SVF9ERUNMQVJBVElPTgotI2VuZGlmCi0KLSNlbHNlIC8vIFVTRShFWFBPUlRfTUFDUk9T
X0ZPUl9URVNUSU5HKQotCi0jZGVmaW5lIFdURl9URVNUSU5HCi0KLSNlbmRpZiAvLyBVU0UoRVhQ
T1JUX01BQ1JPU19GT1JfVEVTVElORykKLQogI2lmIGRlZmluZWQoV1RGX0lTX0xJTktFRF9JTl9T
QU1FX0JJTkFSWSkKICNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9FWFBPUlQKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgK
aW5kZXggMTgwNTE0YTUxOWRjNGU1ZjUyNjg3YWE4M2QzNzg4ZDdkMDk2MjM4Yy4uNjQ0ZGJmYjI0
YWVmZGIyOTY0MDI4MmE2ZDYwMWQwZDZiNDU5NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaApAQCAtNTIsMjIgKzUyLDIyIEBAIGNs
YXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8R2VvbG9jYXRpb24+LCBwdWJsCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWY8R2Vv
bG9jYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkdlb2xvY2F0
aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdlb2xvY2F0aW9uKCk7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldEFsbEdlb2xv
Y2F0aW9uUGVybWlzc2lvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRBbGxHZW9s
b2NhdGlvblBlcm1pc3Npb24oKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAKICAgICB2b2lkIGdldEN1cnJlbnRQ
b3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9u
RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPik7CiAgICAgaW50IHdh
dGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4pOwogICAgIHZv
aWQgY2xlYXJXYXRjaChpbnQgd2F0Y2hJRCk7CiAKLSAgICB2b2lkIHNldElzQWxsb3dlZChib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzQWxsb3dlZChib29sKTsKICAgICBib29s
IGlzQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dHZW9sb2NhdGlvbiA9PSBZZXM7IH0K
IAogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRleCBk
Mjg1ZTI1NzVmOTJiN2NmNTQxNDc2OWZlMmQ2ZjRlNWQ4Y2YwY2JmLi4yNDZlODkyMjQ3Yjk5Y2Zl
ZmQ4MDk1YjNhOTMzM2NiNGNjMDBjNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTU0LDE0
ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biopOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsKIAot
ICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKLSAgICB2b2lk
IGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciopOwogCiAgICAgR2VvbG9j
YXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNsaWVudCog
Y2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBHZW9sb2NhdGlvbkNvbnRyb2xsZXIqIGZyb20o
UGFnZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25Db250cm9sbGVyKj4o
U3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kLmgKaW5kZXggZWM0MzUwYWIwZDg0ZjIyNGNmNzVmODE3NTk0YmQ5MmQ3ZmNh
MThkZS4uNDNlMzZmYmVkY2QyY2FlODFlNWRmMDQwNTljMjA3ZDJlODNiZjE1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
LmgKQEAgLTU5LDggKzU5LDggQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3Mg
SURCRGF0YWJhc2VCYWNrZW5kIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZW5k
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIs
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgSURCU2VydmVyQ29ubmVjdGlvbiYpOwotICAg
IH5JREJEYXRhYmFzZUJhY2tlbmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJ
REJTZXJ2ZXJDb25uZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgfklEQkRhdGFiYXNlQmFj
a2VuZCgpOwogCiAgICAgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbigpIHsg
cmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbi5nZXQoKTsgfQogCkBAIC03MSw4ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZEluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4SW5kZXhJZCk7CiAgICAgdm9pZCByZW1vdmVJ
bmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAKLSAgICB2b2lk
IG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lv
bik7Ci0gICAgdm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICAvLyBJREJEYXRhYmFz
ZUJhY2tlbmQKICAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VNZXRhZGF0YS5oCmluZGV4IGMzOTM2OTYwNTRl
ZTcwOTBlMjZmMmJiYzM1OGM4NDcyN2VlY2EwMzcuLjE1YjdjMjgwMGJkOWQyZjQ2YTM3OWMxYTNl
ZDU5NTE2MzAxM2UyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZU1ldGFkYXRhLmgKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IElE
QkRhdGFiYXNlTWV0YWRhdGEgewogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhPiBPYmplY3RTdG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBvYmpl
Y3RTdG9yZXM7CiAKLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIElEQkRhdGFiYXNlTWV0YWRhdGEgaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5oCmluZGV4IDViODBmOWFkMDI4MzFkYTQzOGVjOTE2MjhjYzE4
Y2VmZjRiNmFlYWQuLjc4NTMwYjMxMGQxZjA0YWU5YzY2ODYyYjVhOTlkZDNiZTkwM2Y0M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJLZXkoYXJyYXksIHNp
emVFc3RpbWF0ZSkpOwogICAgIH0KIAotICAgIH5JREJLZXkoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+SURCS2V5KCk7CiAKICAgICAvLyBJbiBvcmRlciBvZiB0aGUgbGVhc3QgdG8gdGhlIGhpZ2hl
c3QgcHJlY2VkZW50IGluIHRlcm1zIG9mIHNvcnQgb3JkZXIuCiAgICAgZW51bSBUeXBlIHsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgY29uc3QgS2V5QXJyYXkmIGFy
cmF5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlEYXRhLmgKaW5kZXggNzAxNGIxNTkzY2QzNjk5YTc1ZmUzZDhhZTkzZWE3YzI5NDA0ZDg5
ZC4uZDcyNjViZTQ4Yjc3MGI0NzY5NDMwNmI4NmMxODQxNTE3ZTI0ZmFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApAQCAtNDMsNyArNDMsNyBA
QCBzdHJ1Y3QgSURCS2V5RGF0YSB7CiAgICAgewogICAgIH0KIAotICAgIElEQktleURhdGEoY29u
c3QgSURCS2V5Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgSURCS2V5RGF0YShjb25zdCBJREJLZXkq
KTsKIAogICAgIHN0YXRpYyBJREJLZXlEYXRhIG1pbmltdW0oKQogICAgIHsKQEAgLTYxLDI2ICs2
MSwyNiBAQCBzdHJ1Y3QgSURCS2V5RGF0YSB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgUGFzc1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkg
Y29uc3Q7CiAKICAgICBJREJLZXlEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgdm9p
ZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEtl
eWVkRGVjb2RlciYsIElEQktleURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29k
ZShLZXllZEVuY29kZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBk
ZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5RGF0YSYpOwogCiAgICAgLy8gY29tcGFyZSgpIGhh
cyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc3RyY21wKCkuCiAgICAgLy8gICAtIFJldHVybnMgbmVn
YXRpdmUgaWYgdGhpcyBJREJLZXlEYXRhIGlzIGxlc3MgdGhhbiBvdGhlci4KICAgICAvLyAgIC0g
UmV0dXJucyBwb3NpdGl2ZSBpZiB0aGlzIElEQktleURhdGEgaXMgZ3JlYXRlciB0aGFuIG90aGVy
LgogICAgIC8vICAgLSBSZXR1cm5zIHplcm8gaWYgdGhpcyBJREJLZXlEYXRhIGlzIGVxdWFsIHRv
IG90aGVyLgotICAgIGludCBjb21wYXJlKGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29tcGFyZShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEFycmF5VmFsdWUoY29uc3QgVmVjdG9yPElEQktleURhdGE+
Jik7CiAgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNl
dERhdGVWYWx1ZShkb3VibGUpOwotICAgIHZvaWQgc2V0TnVtYmVyVmFsdWUoZG91YmxlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE51bWJlclZhbHVlKGRvdWJsZSk7CiAKICNpZm5kZWYg
TkRFQlVHCi0gICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKICAgICBJREJLZXk6
OlR5cGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBh
dGguaAppbmRleCA2ZGNkN2RlYWNkOTA4ZDA4ZWNlNTk0NjVmZmNjMmU2ZDVlNjU2Y2I2Li4xMWIy
YjE5Nzc3MWFkZmQ5OWM1MmY2MGQzMDZhZTE1MThlY2I4ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCkBAIC00OCw4ICs0OCw4IEBAIHZvaWQg
SURCUGFyc2VLZXlQYXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0
aFBhcnNlRXJyb3ImKTsKIGNsYXNzIElEQktleVBhdGggewogcHVibGljOgogICAgIElEQktleVBh
dGgoKSA6IG1fdHlwZShOdWxsVHlwZSkgeyB9Ci0gICAgZXhwbGljaXQgSURCS2V5UGF0aChjb25z
dCBTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBJREJLZXlQYXRoKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhcnJheSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSURCS2V5UGF0aChjb25zdCBT
dHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJLZXlQYXRoKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcnJheSk7CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBOdWxsVHlw
ZSA9IDAsCkBAIC03Nyw4ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIElEQktleVBhdGggaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5UGF0aCYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGRlY29kZShLZXllZERlY29kZXImLCBJREJLZXlQYXRo
Jik7CiAKIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaAppbmRleCBlNTUxY2Y0ZDNhMmRlZWFjYmVkMDRj
ZmEwMTJmYzk1NzUwNDM1OWY0Li5hMTY4ZGI0MjcwZDY4MmYxYmJmMzUzODZlN2IxMzg2MGNlYjA2
MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlS
YW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgbG93ZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiB1cHBlciwgYm9vbCBsb3dlck9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBib3Vu
ZChjb250ZXh0LCBsb3dlciwgdXBwZXIsIGxvd2VyT3BlbiwgZmFsc2UsIGVjKTsgfQogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBib3VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGxvd2VyLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCi0gICAgYm9vbCBpc09ubHlLZXkoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzT25seUtleSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIElEQktleVJh
bmdlKFBhc3NSZWZQdHI8SURCS2V5PiBsb3dlciwgUGFzc1JlZlB0cjxJREJLZXk+IHVwcGVyLCBM
b3dlckJvdW5kVHlwZSBsb3dlclR5cGUsIFVwcGVyQm91bmRUeXBlIHVwcGVyVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCmlu
ZGV4IDcxNTQxOTI0ZGRiZWU5ODFiYzMzYTZmYjIxNTc0ZDBlMzdmN2VkMzMuLjU2Y2Y0NjE3OTI2
MjNlOTk2NDRiYWQ3M2ZjMTAyMDIyMjQyNDk3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlRGF0YS5oCkBAIC01Nyw5ICs1Nyw5IEBAIHN0
cnVjdCBJREJLZXlSYW5nZURhdGEgewogCiAgICAgSURCS2V5UmFuZ2VEYXRhIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gbWF5YmVDcmVhdGVJREJL
ZXlSYW5nZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IG1heWJlQ3JlYXRlSURCS2V5UmFuZ2UoKSBjb25zdDsKIAotICAgIGJvb2wgaXNFeGFjdGx5
T25lS2V5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0V4YWN0bHlPbmVLZXko
KSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggOTAxOTNiYTg0NjkxY2Zl
MzA5M2VjZGUyNGNjNDkyMmYzNDNlMzNjYy4uYTk4MDEwMDgzOTNjNTcyMTkzMGNkZWQxZDkzYzNk
NTg2YzU0ZTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtNjQsNyArNjQsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwogY2xhc3MgTm90aWZpY2F0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90
aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IE5vdGlmaWNhdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIE5vdGlmaWNhdGlvbigpOwogI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBzdGF0aWMgUGFzc1JlZjxOb3RpZmlj
YXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNv
bnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNv
ZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogI2VuZGlmCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZjxOb3RpZmljYXRpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CiAjZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIH5Ob3Rp
ZmljYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsK
IAogICAgIHZvaWQgc2hvdygpOwogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKQEAg
LTExMSwxMCArMTExLDEwIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNsb3NlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNr
KTsKICAgICAKLSAgICB2b2lkIGRpc3BhdGNoQ2xpY2tFdmVudCgpOwotICAgIHZvaWQgZGlzcGF0
Y2hDbG9zZUV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKTsKLSAgICB2b2lk
IGRpc3BhdGNoU2hvd0V2ZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaENs
aWNrRXZlbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFNob3dFdmVudCgpOwogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRp
b24+OjpkZXJlZjsKQEAgLTEyOCwxMSArMTI4LDExIEBAIHB1YmxpYzoKICAgICAvLyBEZXByZWNh
dGVkLiBVc2UgZnVuY3Rpb25zIGZyb20gTm90aWZpY2F0aW9uQ2VudGVyLgogICAgIHZvaWQgZGV0
YWNoUHJlc2VudGVyKCkgeyB9CiAKLSAgICB2b2lkIGZpbmFsaXplKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
c3RhdGljIGNvbnN0IFN0cmluZyBwZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
LSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xp
ZW50OjpQZXJtaXNzaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5n
IHBlcm1pc3Npb25TdHJpbmcoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uKTsKICAgICBz
dGF0aWMgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+ID0gMCk7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25Db250cm9sbGVyLmgKaW5kZXggNThmNGY5NjI5ZTk3Y2ZiOTJlN2IyZjFjZjRk
NWVkNGQzNzIyZWMwNy4uYzU2NTEzMzUxMzBmMGI2ZmY5NTdmOTVlZjIyMmM0MTA2MWUzMjcxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBOb3Rp
ZmljYXRpb25Db250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCkpKTsgfQotICAgIHN0YXRpYyBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVu
dEZyb20oUGFnZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOb3RpZmljYXRpb25DbGll
bnQqIGNsaWVudEZyb20oUGFnZSopOwogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuaAppbmRleCBmMDJhNjMyZWRkYmNjMmM1MDRmZmExODQxYzJmZjc4MzA0NTJl
ZjEyLi4xYzJkOTE0MWM5MGM2NDdhMDM3YjhjMGM0ZmRkOTAxZThlNDA2MTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaApAQCAtNDAsMTMgKzQwLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIEdDQ29udHJvbGxlciYgZ2NDb250cm9s
bGVyKCk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKCk7
Ci0gICAgICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3ROb3coKTsgLy8gSXQncyBiZXR0ZXIgdG8gY2Fs
bCBnYXJiYWdlQ29sbGVjdFNvb24sIHVubGVzcyB5b3UgaGF2ZSBhIHNwZWNpZmljIHJlYXNvbiBu
b3QgdG8uCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2FyYmFnZUNvbGxlY3RTb29uKCk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2FyYmFnZUNvbGxlY3ROb3coKTsgLy8gSXQn
cyBiZXR0ZXIgdG8gY2FsbCBnYXJiYWdlQ29sbGVjdFNvb24sIHVubGVzcyB5b3UgaGF2ZSBhIHNw
ZWNpZmljIHJlYXNvbiBub3QgdG8uCiAKLSAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdE9uQWx0
ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSk7IC8vIFVzZWQgZm9y
IHN0cmVzcyB0ZXN0aW5nLgotICAgICAgICB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7
Ci0gICAgICAgIHZvaWQgc2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQo
Ym9vbCk7Ci0gICAgICAgIHZvaWQgZGlzY2FyZEFsbENvbXBpbGVkQ29kZSgpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1
Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNzIHRlc3RpbmcuCisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRp
bWVyRW5hYmxlZChib29sKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjYXJkQWxs
Q29tcGlsZWRDb2RlKCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBHQ0NvbnRyb2xsZXIoKTsg
Ly8gVXNlIGdjQ29udHJvbGxlcigpIGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9JZGVudGlmaWVyUmVwLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmll
clJlcC5oCmluZGV4IDhjMTAzMTY5OTY1ZTZkMDdiNDdlOGE5ODM5ZmI0N2U3YjE4YWYwMWMuLjI0
OGVmODkzMTNlNjZjYmRhMzU2OGE0OWFhNGI1NWYzNThmYjdjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL0lkZW50aWZpZXJSZXAuaApAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIElkZW50aWZpZXJSZXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBJZGVudGlmaWVyUmVwKiBnZXQoaW50KTsKLSAgICBzdGF0aWMg
SWRlbnRpZmllclJlcCogZ2V0KGNvbnN0IGNoYXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSWRlbnRpZmllclJlcCogZ2V0KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElk
ZW50aWZpZXJSZXAqIGdldChjb25zdCBjaGFyKik7CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
KElkZW50aWZpZXJSZXAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1ZhbGlk
KElkZW50aWZpZXJSZXAqKTsKICAgICAKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmluZzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXgg
YTljMmZhNjY0YmM3NjI0YjZkNzdiNWVkNDdiNzBiNDFmNTU4ZjhmZS4uOTIwNmRjOTRhYzk4YmIw
MDZkYmI2ZDk0YjFiM2Y0YmU1ODE0N2FkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaApAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEltbXV0YWJsZVN0eWxl
UHJvcGVydGllcyA6IHB1YmxpYyBTdHlsZVByb3BlcnRpZXMgewogcHVibGljOgotICAgIH5JbW11
dGFibGVTdHlsZVByb3BlcnRpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzKCk7CiAgICAgc3RhdGljIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50
LCBDU1NQYXJzZXJNb2RlKTsKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5U2l6ZTsgfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoQ1NTUGFyc2VyTW9k
ZSA9IENTU1F1aXJrc01vZGUpOwogICAgIHN0YXRpYyBQYXNzUmVmPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291
bnQpOwogCi0gICAgfk11dGFibGVTdHlsZVByb3BlcnRpZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+TXV0YWJsZVN0eWxlUHJvcGVydGllcygpOwogCiAgICAgdW5zaWduZWQgcHJvcGVydHlDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlWZWN0b3Iuc2l6ZSgpOyB9CiAKQEAgLTIxNiw3
ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgcGFyc2VEZWNs
YXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxlRGVjbGFyYXRpb24sIFN0eWxlU2hlZXRDb250ZW50
cyogY29udGV4dFN0eWxlU2hlZXQpOwogCi0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIENTU1N0eWxlRGVjbGFy
YXRpb24qIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKICAgICBDU1NTdHlsZURlY2xhcmF0
aW9uKiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnQpOwogCiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oCmlu
ZGV4IGFhZGQ1Mjc5ZGY4NjhlNGYyMDhmYzg2NzM5NjQ0MDNiNzA1ODk2NTIuLjk3NmYyNTU3YzEw
NGY5OTYxNmJkYzRiYmE3ZWNhNDRhY2UzMzJkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgKQEAgLTY4LDggKzY4LDggQEAgY2xhc3MgSWdub3Jh
YmxlRXhjZXB0aW9uQ29kZSA6IHB1YmxpYyBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIgewogCiBj
bGFzcyBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIgOiBwdWJsaWMgRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyIHsKIHB1YmxpYzoKLSAgICBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwotICAgIH5Ob0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNr
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXIoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5Ob0V4Y2VwdGlv
bkFzc2VydGlvbkNoZWNrZXIoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgRXhjZXB0
aW9uQ29kZSBkZWZhdWx0RXhjZXB0aW9uQ29kZSA9IDB4YWFhYWFhYWE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuaAppbmRleCAwNzQxM2IwNWU1OTc3NTkxMzVhMDEwMTViNDFjYzM0MTFmNGY3
ZTU5Li44Njg3YjFmZjg2ZjRiNmEzM2E2ZWE0MDBlMjk0OTI4YzU0ZmMxYzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBLZXlib2FyZEV2ZW50KCk7Ci0gICAgS2V5Ym9hcmRFdmVudChjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBBYnN0cmFjdFZpZXcqKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBLZXlib2FyZEV2ZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgS2V5Ym9hcmRFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmLCBBYnN0cmFjdFZpZXcqKTsKICAgICBLZXlib2Fy
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEtleWJvYXJkRXZlbnRJbml0Jik7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1LZXlib2FyZEV2ZW50PiBtX2tleUV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5kZXggMWY1YTFlYTM5MTUwMzUwODNjNjBkYzM5YmIwZGU4
MzQzZTA3MjYwZS4uNmRjNzZjODZiZDQxNGQwMjhkOTZlZTFmMTA3ZGY5NDNjMTYwZjVlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNb3VzZUV2ZW50KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8TW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgZG91YmxlIHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+LAogICAgICAgICBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAgIGludCBt
b3ZlbWVudFgsIGludCBtb3ZlbWVudFksCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCB1bnNpZ25lZCBzaG9ydCBidXR0b24sCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
IHJlbGF0ZWRUYXJnZXQpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgZG91YmxlIHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGRvdWJs
ZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKICAgICAgICAgaW50IGRldGFp
bCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBpbnQgbW92ZW1lbnRYLCBpbnQgbW92ZW1lbnRZ
LApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
LAogICAgICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0LCBQYXNzUmVm
UHRyPERhdGFUcmFuc2Zlcj4sIGJvb2wgaXNTaW11bGF0ZWQgPSBmYWxzZSk7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFy
Z2V0KTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VFdmVudEluaXQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAppbmRleCA4NWUwMThiZWNlOWI2NjJiMDI1NDY1
MDYxMGI4MjUyYzg3ZWI0M2NmLi42NmZjMTA3Mzc5OTRlZGRlYmYxZWY1ODMxNDg3N2M2ODI5ODBk
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaApAQCAtNDYsOCArNDYs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50TG9jYXRpb247IH0KICAgICAgICAg
aW50IGxheWVyWCgpIG92ZXJyaWRlOwogICAgICAgICBpbnQgbGF5ZXJZKCkgb3ZlcnJpZGU7Ci0g
ICAgICAgIGludCBvZmZzZXRYKCk7Ci0gICAgICAgIGludCBvZmZzZXRZKCk7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIGludCBvZmZzZXRYKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGludCBv
ZmZzZXRZKCk7CiAgICAgICAgIGJvb2wgaXNTaW11bGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U2ltdWxhdGVkOyB9CiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VYKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VZKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApp
bmRleCAyYzYxY2Q5N2RiZTAwYjRjOWYxMjA3NGNmMjVjNDVlYzhhZjlhOGE0Li4yZjJlZDgxZmFj
MGYxN2EwN2ZlYTJmMDI3OTkwMGI1YzU5ZWUzYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE1Miw4ICsx
NTIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZChjb25zdCBTdHJp
bmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKLSAgICBzdGF0aWMgdm9pZCBz
dGFydElnbm9yaW5nTGVha3MoKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wSWdub3JpbmdMZWFrcygp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHN0YXJ0SWdub3JpbmdMZWFrcygpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHN0b3BJZ25vcmluZ0xlYWtzKCk7CiAKICAg
ICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCkBAIC0xOTMsMTIgKzE5MywxMiBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlc2Ugc2hvdWxkIGFsbCBhY3R1YWxseSByZXR1cm4gYSBub2RlLCBi
dXQgdGhpcyBpcyBvbmx5IGltcG9ydGFudCBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MsCiAgICAgLy8g
d2hpY2ggd2lsbCBhbHJlYWR5IGtub3cgYW5kIGhvbGQgYSByZWYgb24gdGhlIHJpZ2h0IG5vZGUg
dG8gcmV0dXJuLiBSZXR1cm5pbmcgYm9vbCBhbGxvd3MKICAgICAvLyB0aGVzZSBtZXRob2RzIHRv
IGJlIG1vcmUgZWZmaWNpZW50IHNpbmNlIHRoZXkgZG9uJ3QgbmVlZCB0byByZXR1cm4gYSByZWYK
LSAgICBib29sIGluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW5zZXJ0
QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgYm9vbCByZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBib29sIHJlbW92ZUNoaWxk
KE5vZGUqIGNoaWxkLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9vbCBhcHBlbmRDaGlsZChQYXNz
UmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwg
RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCByZW1vdmUoRXhjZXB0aW9uQ29kZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhh
c0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgPSAwOwogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdDsKQEAgLTIxNCw4ICsyMTQsOCBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHBy
ZWZpeCkgY29uc3Q7CiAgICAgU3RyaW5nIGxvb2t1cE5hbWVzcGFjZVByZWZpeChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgRWxlbWVudCogb3JpZ2luYWxFbGVtZW50KSBj
b25zdDsKICAgICAKLSAgICBTdHJpbmcgdGV4dENvbnRlbnQoYm9vbCBjb252ZXJ0QlJzVG9OZXds
aW5lcyA9IGZhbHNlKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHRDb250ZW50KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dENvbnRl
bnQoYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcyA9IGZhbHNlKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRleHRDb250ZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAKICAgICBOb2RlKiBsYXN0RGVzY2VuZGFudCgpIGNvbnN0OwogICAgIE5vZGUqIGZp
cnN0RGVzY2VuZGFudCgpIGNvbnN0OwpAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICBF
bGVtZW50KiBzaGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGluIGEg
c2hhZG93IHRyZWUsIHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhlcndpc2UsIHJldHVybnMg
dGhpcy4KICAgICAvLyBEZXByZWNhdGVkLiBTaG91bGQgdXNlIHNoYWRvd0hvc3QoKSBhbmQgY2hl
Y2sgdGhlIHJldHVybiB2YWx1ZS4KLSAgICBOb2RlKiBkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JO
b2RlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogZGVwcmVjYXRlZFNoYWRvd0Fu
Y2VzdG9yTm9kZSgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QqIGNvbnRhaW5pbmdTaGFkb3dSb290
KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OwogCkBAIC0zMDEs
NyArMzAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQ
b2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzUm9vdEVkaXRhYmxl
RWxlbWVudCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiByb290RWRpdGFibGVFbGVtZW50KCkgY29u
c3Q7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudChFZGl0YWJsZVR5cGUpIGNvbnN0
OwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBwYXJzZXIgd2hlbiB0aGlzIGVsZW1lbnQncyBjbG9z
ZSB0YWcgaXMgcmVhY2hlZCwKQEAgLTMzMSw3ICszMzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSB7IHNldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxj
RmxhZyk7IH0KICAgICB2b2lkIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBjbGVhckZs
YWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KIAotICAgIHZvaWQgc2V0TmVlZHNTdHls
ZVJlY2FsYyhTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSA9IEZ1bGxTdHlsZUNoYW5nZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hhbmdlVHlw
ZSA9IEZ1bGxTdHlsZUNoYW5nZSk7CiAgICAgdm9pZCBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKSB7
IG1fbm9kZUZsYWdzICY9IH5TdHlsZUNoYW5nZU1hc2s7IH0KIAogICAgIHZvaWQgc2V0SXNMaW5r
KGJvb2wgZikgeyBzZXRGbGFnKGYsIElzTGlua0ZsYWcpOyB9CkBAIC0zNDgsMTIgKzM0OCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIFVzZXJTZWxlY3RBbGxEb2VzTm90QWZmZWN0RWRpdGFiaWxpdHks
CiAgICAgICAgIFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlCiAgICAgfTsKLSAgICBi
b29sIGlzQ29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0
QWxsRG9lc05vdEFmZmVjdEVkaXRhYmlsaXR5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
Q29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0QWxsRG9l
c05vdEFmZmVjdEVkaXRhYmlsaXR5KTsKICAgICBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxl
KCk7CiAKLSAgICB2b2lkIGluc3BlY3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc3Bl
Y3QoKTsKIAotICAgIGJvb2wgaGFzRWRpdGFibGVTdHlsZShFZGl0YWJsZVR5cGUgZWRpdGFibGVU
eXBlID0gQ29udGVudElzRWRpdGFibGUsIFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgdHJlYXRtZW50
ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpIGNvbnN0CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNFZGl0YWJsZVN0eWxlKEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBD
b250ZW50SXNFZGl0YWJsZSwgVXNlclNlbGVjdEFsbFRyZWF0bWVudCB0cmVhdG1lbnQgPSBVc2Vy
U2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoZWRpdGFibGVUeXBlKSB7CiAgICAgICAgIGNhc2UgQ29udGVudElzRWRpdGFibGU6CkBAIC0z
NzksMTQgKzM3OSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRp
bmdCb3goKSBjb25zdDsKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkgY29u
c3QgeyByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCgpKTsgfQotICAgIExh
eW91dFJlY3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBMYXlvdXRSZWN0IHJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCk7CiAgICAgSW50UmVjdCBw
aXhlbFNuYXBwZWRSZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpIHsgcmV0dXJuIHBpeGVsU25h
cHBlZEludFJlY3QocmVuZGVyUmVjdChpc1JlcGxhY2VkKSk7IH0KIAotICAgIHVuc2lnbmVkIG5v
ZGVJbmRleCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIG5vZGVJbmRleCgp
IGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGUgRE9NIG93bmVyRG9jdW1lbnQgYXR0cmlidXRl
LiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIG51bGwsIGV4Y2VwdCBpbiB0aGUgY2FzZQogICAg
IC8vIG9mIGEgRG9jdW1lbnQgbm9kZS4KLSAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2Rl
LgogICAgIC8vIEEgRG9jdW1lbnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KQEAgLTQyMCw3ICs0MjAs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIGlzRGVzY2VuZGFudE9mKGNv
bnN0IE5vZGUqKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGVzY2VuZGFudE9m
KGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBib29sIGlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2Vu
ZGFudE9mKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUq
KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5vZGUq
KSBjb25zdDsKQEAgLTUxMCw3ICs1MTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7CiAKLSAgICB1bnNpZ25lZCBzaG9ydCBjb21wYXJlRG9j
dW1lbnRQb3NpdGlvbihOb2RlKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc2hvcnQg
Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSopOwogCiAgICAgdmlydHVhbCBOb2RlKiB0b05v
ZGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEhUTUxJbnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVt
ZW50KCk7CkBAIC01NTksNyArNTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlclRy
YW5zaWVudE11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiopOwog
ICAgIHZvaWQgbm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogCi0gICAg
dm9pZCB0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7CiAKICAgICB1bnNpZ25l
ZCBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBpbmNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCA9IDEpOwpAQCAtNjc3LDEyICs2Nzcs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIH0KIAotICAgIHZv
aWQgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZWRMYXN0
UmVmKCk7CiAgICAgYm9vbCBoYXNUcmVlU2hhcmVkUGFyZW50KCkgY29uc3QgeyByZXR1cm4gISFw
YXJlbnROb2RlKCk7IH0KIAogICAgIGVudW0gRWRpdGFibGVMZXZlbCB7IEVkaXRhYmxlLCBSaWNo
bHlFZGl0YWJsZSB9OwogICAgIGJvb2wgaGFzRWRpdGFibGVTdHlsZShFZGl0YWJsZUxldmVsLCBV
c2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUp
IGNvbnN0OwotICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShFZGl0YWJsZUxldmVs
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRWRpdGFibGVUb0FjY2Vzc2liaWxp
dHkoRWRpdGFibGVMZXZlbCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmgKaW5kZXggNDE4NzA2NDZiMjUxZDdiM2M0
N2RiNzY5NTgzNDNlNDBiOTdjYzIzNS4uMDgxMTM4NmJkOWY0OTE1MjJlYmRjNDM1NTk3ZTBlYjFh
ODZmOTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5oCkBAIC03MSw5ICs3MSw5IEBA
IE5vZGUqIG5leHRJbmNsdWRpbmdQc2V1ZG9Ta2lwcGluZ0NoaWxkcmVuKGNvbnN0IE5vZGUqLCBj
b25zdCBOb2RlKiA9IDApOwogCiBuYW1lc3BhY2UgTm9kZVRyYXZlcnNhbCB7CiAKLU5vZGUqIG5l
eHRBbmNlc3RvclNpYmxpbmcoY29uc3QgTm9kZSopOwotTm9kZSogbmV4dEFuY2VzdG9yU2libGlu
Zyhjb25zdCBOb2RlKiwgY29uc3QgTm9kZSogc3RheVdpdGhpbik7Ci1Ob2RlKiBkZWVwTGFzdENo
aWxkKE5vZGUqKTsKK1dFQkNPUkVfRVhQT1JUIE5vZGUqIG5leHRBbmNlc3RvclNpYmxpbmcoY29u
c3QgTm9kZSopOworV0VCQ09SRV9FWFBPUlQgTm9kZSogbmV4dEFuY2VzdG9yU2libGluZyhjb25z
dCBOb2RlKiwgY29uc3QgTm9kZSogc3RheVdpdGhpbik7CitXRUJDT1JFX0VYUE9SVCBOb2RlKiBk
ZWVwTGFzdENoaWxkKE5vZGUqKTsKIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVUeXBlPgogaW5saW5l
IE5vZGUqIHRyYXZlcnNlTmV4dFRlbXBsYXRlKE5vZGVUeXBlKiBjdXJyZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uaAppbmRleCBmOTY1M2Y4NzI4M2E5ODliMGQ4ZGVkODI2NDFlZGI4ZjIyOGY1YmQwLi4w
ODA4YjU4ZDljNmRkZWQ2MTJhYjM1NGQ1ODcxNzkxZWY4NjQzZDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBvc2l0aW9uSXNBZnRlckNo
aWxkcmVuLAogICAgIH07CiAKLSAgICBQb3NpdGlvbigpCisgICAgV0VCQ09SRV9FWFBPUlQgUG9z
aXRpb24oKQogICAgICAgICA6IG1fb2Zmc2V0KDApCiAgICAgICAgICwgbV9hbmNob3JUeXBlKFBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvcikKICAgICAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGZhbHNlKQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgaW50IG1fb2Zm
c2V0OwogICAgIH07Ci0gICAgUG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBM
ZWdhY3lFZGl0aW5nT2Zmc2V0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbihQYXNzUmVm
UHRyPE5vZGU+IGFuY2hvck5vZGUsIExlZ2FjeUVkaXRpbmdPZmZzZXQpOwogCiAgICAgLy8gRm9y
IGNyZWF0aW5nIGJlZm9yZS9hZnRlciBwb3NpdGlvbnM6CiAgICAgUG9zaXRpb24oUGFzc1JlZlB0
cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBlKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gRm9yIGNyZWF0aW5nIG9mZnNldCBwb3NpdGlvbnM6CiAgICAgLy8gRklYTUU6
IFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGV2ZW50dWFsbHkgZ28gYXdheS4gU2VlIGJ1ZyA2MzA0
MC4KLSAgICBQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIGludCBvZmZzZXQs
IEFuY2hvclR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4gYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSk7CiAKICAgICBBbmNob3JUeXBl
IGFuY2hvclR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBbmNob3JUeXBlPihtX2Fu
Y2hvclR5cGUpOyB9CiAKQEAgLTk2LDExICs5NiwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVz
ZSBhcmUgYWx3YXlzIERPTSBjb21wbGlhbnQgdmFsdWVzLiAgRWRpdGluZyBwb3NpdGlvbnMgbGlr
ZSBbaW1nLCAwXSAoYWthIFtpbWcsIGJlZm9yZV0pCiAgICAgLy8gd2lsbCByZXR1cm4gaW1nLT5w
YXJlbnROb2RlKCkgYW5kIGltZy0+bm9kZUluZGV4KCkgZnJvbSB0aGVzZSBmdW5jdGlvbnMuCi0g
ICAgTm9kZSogY29udGFpbmVyTm9kZSgpIGNvbnN0OyAvLyBOVUxMIGZvciBhIGJlZm9yZS9hZnRl
ciBwb3NpdGlvbiBhbmNob3JlZCB0byBhIG5vZGUgd2l0aCBubyBwYXJlbnQKKyAgICBXRUJDT1JF
X0VYUE9SVCBOb2RlKiBjb250YWluZXJOb2RlKCkgY29uc3Q7IC8vIG51bGwgZm9yIGEgYmVmb3Jl
L2FmdGVyIHBvc2l0aW9uIGFuY2hvcmVkIHRvIGEgbm9kZSB3aXRoIG5vIHBhcmVudAogICAgIFRl
eHQqIGNvbnRhaW5lclRleHQoKSBjb25zdDsKIAogICAgIGludCBjb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCkgY29uc3Q7ICAvLyBPKG4pIGZvciBiZWZvcmUvYWZ0ZXItYW5jaG9yZWQgcG9z
aXRpb25zLCBPKDEpIGZvciBwYXJlbnQtYW5jaG9yZWQgcG9zaXRpb25zCi0gICAgUG9zaXRpb24g
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkgY29uc3Q7IC8vIENvbnZlbmllbmNlIG1ldGhvZCBm
b3IgRE9NIHBvc2l0aW9ucyB0aGF0IGFsc28gZml4ZXMgdXAgc29tZSBwb3NpdGlvbnMgZm9yIGVk
aXRpbmcKKyAgICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBwYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSBjb25zdDsgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBET00gcG9zaXRpb25zIHRoYXQg
YWxzbyBmaXhlcyB1cCBzb21lIHBvc2l0aW9ucyBmb3IgZWRpdGluZwogCiAgICAgLy8gSW5saW5l
IE8oMSkgYWNjZXNzIGZvciBQb3NpdGlvbnMgd2hpY2ggY2FsbGVycyBrbm93IHRvIGJlIHBhcmVu
dC1hbmNob3JlZAogICAgIGludCBvZmZzZXRJbkNvbnRhaW5lck5vZGUoKSBjb25zdApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICAvLyBNb3ZlIHVwIG9yIGRvd24gdGhlIERPTSBieSBv
bmUgcG9zaXRpb24uCiAgICAgLy8gT2Zmc2V0cyBhcmUgY29tcHV0ZWQgdXNpbmcgcmVuZGVyIHRl
eHQgZm9yIG5vZGVzIHRoYXQgaGF2ZSByZW5kZXJlcnMgLSBidXQgbm90ZSB0aGF0IGV2ZW4gd2hl
bgogICAgIC8vIHVzaW5nIGNvbXBvc2VkIGNoYXJhY3RlcnMsIHRoZSByZXN1bHQgbWF5IGJlIGlu
c2lkZSBhIHNpbmdsZSB1c2VyLXZpc2libGUgY2hhcmFjdGVyIGlmIGEgbGlnYXR1cmUgaXMgZm9y
bWVkLgotICAgIFBvc2l0aW9uIHByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgPSBDb2RlUG9pbnQp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIHByZXZpb3VzKFBvc2l0aW9uTW92
ZVR5cGUgPSBDb2RlUG9pbnQpIGNvbnN0OwogICAgIFBvc2l0aW9uIG5leHQoUG9zaXRpb25Nb3Zl
VHlwZSA9IENvZGVQb2ludCkgY29uc3Q7CiAgICAgc3RhdGljIGludCB1bmNoZWNrZWRQcmV2aW91
c09mZnNldChjb25zdCBOb2RlKiwgaW50IGN1cnJlbnQpOwogICAgIHN0YXRpYyBpbnQgdW5jaGVj
a2VkUHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGNvbnN0IE5vZGUqLCBpbnQgY3Vy
cmVudCk7CkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogTWFr
ZSB0aGVzZSBub24tbWVtYmVyIGZ1bmN0aW9ucyBhbmQgcHV0IHRoZW0gc29tZXdoZXJlIGluIHRo
ZSBlZGl0aW5nIGRpcmVjdG9yeS4KICAgICAvLyBUaGVzZSBhcmVuJ3QgcmVhbGx5IGJhc2ljICJw
b3NpdGlvbiIgb3BlcmF0aW9ucy4gTW9yZSBoaWdoIGxldmVsIGVkaXRpbmcgaGVscGVyIGZ1bmN0
aW9ucy4KLSAgICBQb3NpdGlvbiBsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKEVBZmZpbml0eSwg
Ym9vbCBjb25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA9IGZhbHNlKSBjb25zdDsKLSAg
ICBQb3NpdGlvbiB0cmFpbGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJvb2wgY29u
c2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPSBmYWxzZSkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUG9zaXRpb24gbGVhZGluZ1doaXRlc3BhY2VQb3NpdGlvbihFQWZmaW5pdHksIGJv
b2wgY29uc2lkZXJOb25Db2xsYXBzaWJsZVdoaXRlc3BhY2UgPSBmYWxzZSkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUG9zaXRpb24gdHJhaWxpbmdXaGl0ZXNwYWNlUG9zaXRpb24oRUFmZmlu
aXR5LCBib29sIGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID0gZmFsc2UpIGNvbnN0
OwogICAgIAogICAgIC8vIFRoZXNlIHJldHVybiB1c2VmdWwgdmlzdWFsbHkgZXF1aXZhbGVudCBw
b3NpdGlvbnMuCi0gICAgUG9zaXRpb24gdXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpIGNvbnN0OwotICAgIFBvc2l0aW9uIGRv
d25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBvc2l0aW9uIHVwc3RyZWFtKEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBkb3duc3RyZWFtKEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSBjb25zdDsKICAg
ICAKICAgICBib29sIGlzQ2FuZGlkYXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbmRlcmVkQ2hh
cmFjdGVyKCkgY29uc3Q7CkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
CiBwcml2YXRlOgotICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5jaG9yKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IG9mZnNldEZvclBvc2l0aW9uQWZ0ZXJBbmNob3IoKSBj
b25zdDsKICAgICAKICAgICBQb3NpdGlvbiBwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKEVBZmZp
bml0eSkgY29uc3Q7CiAgICAgUG9zaXRpb24gbmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0
eSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4IGM0YjMxYWY1MTRjZTFjNWQzNTkyZmNhMTU4MmFi
YTUzNTY4MzBlZjYuLjVlNjVlNDUxMzg2ZTIwMWI1MTUyYzY0NjU2NTg4YzY0MTdlYjFhMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5oCkBAIC01Miw0MyArNTIsNDMgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwog
CiBjbGFzcyBSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJhbmdlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmLCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0
Q29udGFpbmVyLCBpbnQgc3RhcnRPZmZzZXQsIFBhc3NSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVy
LCBpbnQgZW5kT2Zmc2V0KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKERv
Y3VtZW50JiwgY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJhbmdlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKERvY3Vt
ZW50JiwgUGFzc1JlZlB0cjxOb2RlPiBzdGFydENvbnRhaW5lciwgaW50IHN0YXJ0T2Zmc2V0LCBQ
YXNzUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lciwgaW50IGVuZE9mZnNldCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgc3RhdGlj
IG5vbi1tZW1iZXIsIG5vbi1mcmllbmQgZnVuY3Rpb24uCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mKTsKICNlbmRpZgotICAgIH5SYW5nZSgpOworICAgIFdFQkNPUkVfRVhQT1JU
IH5SYW5nZSgpOwogCiAgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9vd25lckRvY3VtZW50LmdldCgpKTsgfQogCi0gICAg
Tm9kZSogc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LmNvbnRhaW5lcigp
OyB9Ci0gICAgaW50IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5vZmZzZXQo
KTsgfQotICAgIE5vZGUqIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kLmNvbnRh
aW5lcigpOyB9Ci0gICAgaW50IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kLm9mZnNl
dCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogc3RhcnRDb250YWluZXIoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0LmNvbnRhaW5lcigpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IHN0
YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC5vZmZzZXQoKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIE5vZGUqIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kLmNvbnRh
aW5lcigpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kLm9mZnNldCgpOyB9CiAKICAgICBOb2RlKiBzdGFydENvbnRhaW5lcihFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAgICAgaW50IHN0YXJ0T2Zmc2V0KEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKICAgICBOb2RlKiBlbmRDb250YWluZXIoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIGlu
dCBlbmRPZmZzZXQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIGJvb2wgY29sbGFwc2VkKEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbGxhcHNlZChF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKLSAgICBOb2RlKiBjb21tb25BbmNlc3RvckNvbnRhaW5l
cihFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogY29tbW9u
QW5jZXN0b3JDb250YWluZXIoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHN0YXRpYyBOb2Rl
KiBjb21tb25BbmNlc3RvckNvbnRhaW5lcihOb2RlKiBjb250YWluZXJBLCBOb2RlKiBjb250YWlu
ZXJCKTsKLSAgICB2b2lkIHNldFN0YXJ0KFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyLCBpbnQg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHZvaWQg
c2V0RW5kKFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25D
b2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHZvaWQgY29sbGFwc2UoYm9vbCB0b1N0
YXJ0LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9vbCBpc1BvaW50SW5SYW5nZShOb2RlKiByZWZO
b2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTdGFydChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0
aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEVuZChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lciwgaW50IG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bGxhcHNlKGJvb2wgdG9TdGFydCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNQb2ludEluUmFuZ2UoTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHNob3J0IGNvbXBhcmVQb2ludChOb2RlKiByZWZOb2RlLCBpbnQgb2Zmc2V0
LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgZW51bSBDb21wYXJlUmVzdWx0cyB7IE5PREVf
QkVGT1JFLCBOT0RFX0FGVEVSLCBOT0RFX0JFRk9SRV9BTkRfQUZURVIsIE5PREVfSU5TSURFIH07
CiAgICAgQ29tcGFyZVJlc3VsdHMgY29tcGFyZU5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwogICAgIGVudW0gQ29tcGFyZUhvdyB7IFNUQVJUX1RPX1NUQVJULCBTVEFS
VF9UT19FTkQsIEVORF9UT19FTkQsIEVORF9UT19TVEFSVCB9OwotICAgIHNob3J0IGNvbXBhcmVC
b3VuZGFyeVBvaW50cyhDb21wYXJlSG93LCBjb25zdCBSYW5nZSogc291cmNlUmFuZ2UsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaG9ydCBjb21wYXJlQm91bmRh
cnlQb2ludHMoQ29tcGFyZUhvdywgY29uc3QgUmFuZ2UqIHNvdXJjZVJhbmdlLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAgICAgc3RhdGljIHNob3J0IGNvbXBhcmVCb3VuZGFyeVBvaW50cyhOb2Rl
KiBjb250YWluZXJBLCBpbnQgb2Zmc2V0QSwgTm9kZSogY29udGFpbmVyQiwgaW50IG9mZnNldEIs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgc2hvcnQgY29tcGFyZUJvdW5kYXJ5UG9pbnRz
KGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYm91bmRhcnlBLCBjb25zdCBSYW5nZUJvdW5kYXJ5
UG9pbnQmIGJvdW5kYXJ5QiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgYm91bmRhcnlQb2lu
dHNWYWxpZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYm91bmRhcnlQb2ludHNW
YWxpZCgpIGNvbnN0OwogICAgIGJvb2wgaW50ZXJzZWN0c05vZGUoTm9kZSogcmVmTm9kZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlQ29udGVudHMoRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZXh0cmFjdENvbnRlbnRzKEV4Y2VwdGlv
bkNvZGUmKTsKQEAgLTk3LDI4ICs5NywyOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvU3RyaW5n
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIFN0cmluZyB0b0hUTUwoKSBjb25zdDsKLSAg
ICBTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0ZXh0KCkg
Y29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUNvbnRleHR1
YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZv
aWQgZGV0YWNoKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBjbG9uZVJh
bmdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRy
PFJhbmdlPiBjbG9uZVJhbmdlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
U3RhcnRBZnRlcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
LSAgICB2b2lkIHNldEVuZEJlZm9yZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKLSAgICB2b2lkIHNldEVuZEFmdGVyKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9
IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHZvaWQgc2VsZWN0Tm9kZShOb2RlKiwgRXhjZXB0
aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICB2b2lkIHNlbGVjdE5vZGVDb250
ZW50cyhOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhcnRBZnRlcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuZEJlZm9yZShOb2RlKiwgRXhjZXB0aW9uQ29k
ZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVu
ZEFmdGVyKE5vZGUqLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0Tm9kZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYgPSBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdE5vZGVD
b250ZW50cyhOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc3Vycm91bmRDb250ZW50
cyhQYXNzUmVmUHRyPE5vZGU+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRTdGFydEJl
Zm9yZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhcnRCZWZvcmUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGNvbnN0IFBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnRvUG9zaXRpb24oKTsgfQog
ICAgIGNvbnN0IFBvc2l0aW9uIGVuZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmQudG9Q
b3NpdGlvbigpOyB9Ci0gICAgdm9pZCBzZXRTdGFydChjb25zdCBQb3NpdGlvbiYsIEV4Y2VwdGlv
bkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgdm9pZCBzZXRFbmQoY29uc3QgUG9z
aXRpb24mLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3RhcnQoY29uc3QgUG9zaXRpb24mLCBFeGNlcHRpb25Db2RlJiA9
IEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5kKGNv
bnN0IFBvc2l0aW9uJiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAot
ICAgIE5vZGUqIGZpcnN0Tm9kZSgpIGNvbnN0OwotICAgIE5vZGUqIHBhc3RMYXN0Tm9kZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIGZpcnN0Tm9kZSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIE5vZGUqIHBhc3RMYXN0Tm9kZSgpIGNvbnN0OwogCiAgICAgU2hhZG93Um9v
dCogc2hhZG93Um9vdCgpIGNvbnN0OwogCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBOb3QgdHJhbnNmb3JtLWZyaWVuZGx5CiAgICAgdm9pZCB0ZXh0UmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVk
UG9zaXRpb24qID0gMCkgY29uc3Q7Ci0gICAgSW50UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgYm91bmRpbmdCb3goKSBjb25zdDsKIAogICAgIC8v
IFRyYW5zZm9ybS1mcmllbmRseQotICAgIHZvaWQgdGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVkUG9zaXRpb24q
ID0gMCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXh0UXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4ZWRQ
b3NpdGlvbiogPSAwKSBjb25zdDsKICAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwotICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxT
ZWxlY3Rpb25SZWN0PiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29sbGVjdFNlbGVjdGlv
blJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYpOwogI2VuZGlmCiAKICAgICB2b2lkIG5vZGVD
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZSYpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBSYW5nZSYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgUmFuZ2UmKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSYW5nZShEb2N1bWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCmluZGV4IDNhNmVkNjk2ZTZlY2ZlZTUzYzQwZDQz
MjM5MWM0ZTM1OGZjYmY1MzYuLjZjNTU0NWIyMmYwNjAzNWJhN2UyNjI5YjY4YWQwMjY0ZjBhZGFk
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDYXJldCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb24uaXNOb3ROdWxsKCk7IH0KICAgICBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9z
aXRpb24oKSB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRDYXJldFBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQgY2xlYXIoKSB7IHNldENhcmV0UG9z
aXRpb24oVmlzaWJsZVBvc2l0aW9uKCkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cigpIHsgc2V0Q2FyZXRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24oKSk7IH0KIAogICAgIHZvaWQg
bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOwogCkBAIC0xMzEsMjEgKzEzMSwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBDbG9zZVR5cGluZyB8IENsZWFyVHlwaW5nU3R5bGUgfCAodXNlclRy
aWdnZXJlZCA/IChSZXZlYWxTZWxlY3Rpb24gfCBGaXJlU2VsZWN0RXZlbnQpIDogMCk7CiAgICAg
fQogCi0gICAgZXhwbGljaXQgRnJhbWVTZWxlY3Rpb24oRnJhbWUqID0gMCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgRnJhbWVTZWxlY3Rpb24oRnJhbWUqID0gbnVsbHB0cik7CiAKLSAg
ICBFbGVtZW50KiByb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiByb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSBjb25zdDsKICAgICAgCiAgICAgdm9pZCBtb3ZlVG8oY29uc3QgUmFuZ2UqKTsK
ICAgICB2b2lkIG1vdmVUbyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBFVXNlclRyaWdnZXJlZCA9
IE5vdFVzZXJUcmlnZ2VyZWQsIEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Ny
b2xsSWZOZWVkZWQpOwotICAgIHZvaWQgbW92ZVRvKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG8oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVk
KTsKICAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlvbiYsIEVBZmZpbml0eSwgRVVzZXJUcmln
Z2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsKICAgICB2b2lkIG1vdmVUbyhjb25zdCBQb3NpdGlv
biYsIGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJU
cmlnZ2VyZWQpOwogICAgIHZvaWQgbW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oY29uc3QgUG9zaXRp
b24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9uLCBib29sIHNo
b3VsZFNldEZvY3VzKTsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9Ci0gICAgdm9pZCBzZXRTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYsIFNldFNlbGVjdGlvbk9wdGlvbnMgPSBkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9s
bElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0gICAg
Ym9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5LCBib29sIGNsb3NlVHlwaW5n
KTsKLSAgICB2b2lkIHNlbGVjdEFsbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25zID0gZGVm
YXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vy
c29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJp
dHkpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShSYW5nZSosIEVB
ZmZpbml0eSwgYm9vbCBjbG9zZVR5cGluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxl
Y3RBbGwoKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKTsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIGJvb2wgbW9kaWZ5KEVBbHRlcmF0aW9uLCBTZWxl
Y3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1vZGlmeShFQWx0ZXJhdGlvbiwg
U2VsZWN0aW9uRGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkID0gTm90
VXNlclRyaWdnZXJlZCk7CiAgICAgZW51bSBWZXJ0aWNhbERpcmVjdGlvbiB7IERpcmVjdGlvblVw
LCBEaXJlY3Rpb25Eb3duIH07CiAgICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIHVuc2lnbmVk
IHZlcnRpY2FsRGlzdGFuY2UsIFZlcnRpY2FsRGlyZWN0aW9uLCBFVXNlclRyaWdnZXJlZCA9IE5v
dFVzZXJUcmlnZ2VyZWQsIEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xs
SWZOZWVkZWQpOwogCkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVj
dCogY2FyZXRSZW5kZXJlcldpdGhvdXRVcGRhdGluZ0xheW91dCgpIGNvbnN0OwogCiAgICAgLy8g
Qm91bmRzIG9mIChwb3NzaWJseSB0cmFuc2Zvcm1lZCkgY2FyZXQgaW4gYWJzb2x1dGUgY29vcmRz
Ci0gICAgSW50UmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
SW50UmVjdCBhYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAgICAgdm9pZCBzZXRDYXJldFJlY3ROZWVk
c1VwZGF0ZSgpIHsgQ2FyZXRCYXNlOjpzZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOyB9CiAKICAg
ICB2b2lkIHdpbGxCZU1vZGlmaWVkKEVBbHRlcmF0aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb24pOwpA
QCAtMTk4LDEzICsxOTgsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNDYXJldEJsaW5raW5nU3Vz
cGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQ7IH0KIAog
ICAgIC8vIEZvY3VzCi0gICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9jdXNlZDsgfQotICAgIGJvb2wgaXNGb2N1c2VkQW5kQWN0aXZlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0ZvY3VzZWRBbmRBY3RpdmUoKSBjb25zdDsKICAg
ICB2b2lkIHBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpOwogCiAgICAgLy8gUGFpbnRpbmcuCi0gICAg
dm9pZCB1cGRhdGVBcHBlYXJhbmNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVB
cHBlYXJhbmNlKCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CkBAIC0yMTMsMjYgKzIxMywy
NiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpCiBwdWJsaWM6Ci0gICAgdm9pZCBleHBh
bmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKLSAgICBQYXNz
UmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKSBjb25z
dDsKLSAgICB2b2lkIGV4cGFuZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlv
bigpOwotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVj
dGlvbigpOwotICAgIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9TdGFydE9mV29yZENvbnRhaW5pbmdD
YXJldFNlbGVjdGlvbigpOwotICAgIFVDaGFyIGNoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2Vs
ZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIFVDaGFyIGNoYXJhY3RlckJlZm9yZUNhcmV0
U2VsZWN0aW9uKCkgY29uc3Q7Ci0gICAgVUNoYXIgY2hhcmFjdGVyQWZ0ZXJDYXJldFNlbGVjdGlv
bigpIGNvbnN0OwotICAgIGludCB3b3JkT2Zmc2V0SW5SYW5nZShjb25zdCBSYW5nZSopIGNvbnN0
OwotICAgIGJvb2wgc3BhY2VGb2xsb3dzV29yZEluUmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsK
LSAgICBib29sIHNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydCgpIGNvbnN0OwotICAgIGJvb2wgc2Vs
ZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KCkgY29uc3Q7Ci0gICAgYm9vbCBzZWxlY3Rpb25BdFdvcmRT
dGFydCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50
U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
QnlFeHRlbmRpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OwotICAgIHZvaWQg
c2VsZWN0UmFuZ2VPbkVsZW1lbnQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCwg
Tm9kZSopOwotICAgIHZvaWQgY2xlYXJDdXJyZW50U2VsZWN0aW9uKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rp
b24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBlbGVtZW50UmFuZ2VD
b250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGV4cGFuZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOworICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNl
bGVjdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9TdGFy
dE9mV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIFVD
aGFyIGNoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFVDaGFyIGNoYXJhY3RlckJlZm9yZUNhcmV0U2VsZWN0aW9u
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVUNoYXIgY2hhcmFjdGVyQWZ0ZXJDYXJldFNl
bGVjdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGludCB3b3JkT2Zmc2V0SW5SYW5n
ZShjb25zdCBSYW5nZSopIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3BhY2VGb2xs
b3dzV29yZEluUmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91
bnQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQnlF
eHRlbmRpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2VsZWN0UmFuZ2VPbkVsZW1lbnQodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCwgTm9kZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50
U2VsZWN0aW9uKCk7CiAgICAgdm9pZCBzZXRDYXJldEJsaW5rcyhib29sIGNhcmV0QmxpbmtzID0g
dHJ1ZSk7Ci0gICAgdm9pZCBzZXRDYXJldENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgc3RhdGlj
IFZpc2libGVTZWxlY3Rpb24gd29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYXJl
dENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZpc2libGVT
ZWxlY3Rpb24gd29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBzZXRVcGRhdGVBcHBlYXJhbmNlRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV91cGRhdGVBcHBlYXJhbmNlRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICB2
b2lkIHN1cHByZXNzU2Nyb2xsaW5nKCkgeyArK21fc2Nyb2xsaW5nU3VwcHJlc3NDb3VudDsgfQog
ICAgIHZvaWQgcmVzdG9yZVNjcm9sbGluZygpCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25CeU1vdXNlSWZEaWZmZXJlbnQoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYsIFRleHRHcmFudWxhcml0eSwgRW5kUG9pbnRzQWRqdXN0bWVudE1vZGUgPSBEb05v
dEFkanN1dEVuZHBvaW50cyk7CiAKICAgICBFZGl0aW5nU3R5bGUqIHR5cGluZ1N0eWxlKCkgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5VHlwaW5nU3R5
bGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IGNvcHlUeXBpbmdTdHlsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VHlwaW5nU3R5
bGUoUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+KTsKICAgICB2b2lkIGNsZWFyVHlwaW5nU3R5bGUo
KTsKIAotICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCA9IHRydWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBzZWxlY3Rp
b25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwogCi0gICAg
dm9pZCBnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzKFZlY3RvcjxGbG9hdFJlY3Q+Jikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0
YW5nbGVzKFZlY3RvcjxGbG9hdFJlY3Q+JikgY29uc3Q7CiAKLSAgICBIVE1MRm9ybUVsZW1lbnQq
IGN1cnJlbnRGb3JtKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEZvcm1FbGVtZW50
KiBjdXJyZW50Rm9ybSgpIGNvbnN0OwogCi0gICAgdm9pZCByZXZlYWxTZWxlY3Rpb24oY29uc3Qg
U2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwg
UmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRlbnQpOwotICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uRnJvbU5vbmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJldmVhbFNlbGVjdGlv
bihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklm
TmVlZGVkLCBSZXZlYWxFeHRlbnRPcHRpb24gPSBEb05vdFJldmVhbEV4dGVudCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogCiAgICAgYm9vbCBzaG91
bGRTaG93QmxvY2tDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNob3dCbG9ja0N1cnNv
cjsgfQogICAgIHZvaWQgc2V0U2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IGFjNzg4ZGFkMjU0NGE5OThjZjRhZWFiOTFlN2Fj
YzA1OTcxNzMyNDQuLjZhMjA3ZGVjOTE3MTJmZTQ2OGZhNjFjNjZkNDRiZjMwNmE2YTg5M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTc2LDU2ICs3Niw1NiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0odXJsLCB0YXJnZXQs
IHBhcmVudCwgdGl0bGUpKTsKICAgICB9CiAgICAgCi0gICAgfkhpc3RvcnlJdGVtKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgfkhpc3RvcnlJdGVtKCk7CiAKLSAgICBQYXNzUmVmUHRyPEhpc3RvcnlJ
dGVtPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4gY29weSgpIGNvbnN0OwogCiAgICAgLy8gUmVzZXRzIHRoZSBIaXN0b3J5SXRlbSB0byBp
dHMgaW5pdGlhbCBzdGF0ZSwgYXMgcmV0dXJuZWQgYnkgY3JlYXRlKCkuCiAgICAgdm9pZCByZXNl
dCgpOwogICAgIAotICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkxTdHJpbmcoKSBjb25zdDsK
LSAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyYg
dGl0bGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VVJMU3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHRpdGxlKCkg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc0luUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWNoZWRQYWdlLmdldCgpOyB9Ci0gICAgYm9vbCBoYXNDYWNoZWRQYWdlRXhwaXJlZCgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVkUGFnZUV4cGlyZWQoKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0QWx0ZXJuYXRlVGl0bGUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRs
ZSk7Ci0gICAgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QWx0ZXJuYXRlVGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSgpIGNvbnN0OwogICAgIAog
ICAgIGNvbnN0IFN0cmluZyYgcGFyZW50KCkgY29uc3Q7Ci0gICAgVVJMIHVybCgpIGNvbnN0Owot
ICAgIFVSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OwotICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIo
KSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0OwotICAgIGJvb2wgaXNU
YXJnZXRJdGVtKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNUYXJnZXRJdGVtKCkgY29uc3Q7CiAgICAgCi0gICAgRm9ybURhdGEqIGZvcm1EYXRhKCk7Ci0g
ICAgU3RyaW5nIGZvcm1Db250ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZv
cm1EYXRhKiBmb3JtRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb3JtQ29udGVu
dFR5cGUoKSBjb25zdDsKICAgICAKICAgICBib29sIGxhc3RWaXNpdFdhc0ZhaWx1cmUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RWaXNpdFdhc0ZhaWx1cmU7IH0KIAotICAgIGNvbnN0IEludFBvaW50
JiBzY3JvbGxQb2ludCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2Nyb2xsUG9pbnQoY29uc3QgSW50
UG9pbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFBvaW50KGNvbnN0IElu
dFBvaW50Jik7CiAgICAgdm9pZCBjbGVhclNjcm9sbFBvaW50KCk7CiAgICAgCi0gICAgZmxvYXQg
cGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxv
YXQpOworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICAK
LSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9jdW1lbnRTdGF0ZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0RG9jdW1lbnRTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb2N1bWVudFN0YXRlKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb2N1bWVudFN0YXRlKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdm9pZCBjbGVhckRvY3VtZW50U3RhdGUoKTsKIAogICAgIHZvaWQgc2V0VVJMKGNv
bnN0IFVSTCYpOwotICAgIHZvaWQgc2V0VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgc2V0T3JpZ2luYWxVUkxTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRSZWZl
cnJlcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFRhcmdldChjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVSTFN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVmZXJyZXIoY29uc3QgU3RyaW5nJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUYXJnZXQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRQYXJlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHNldElzVGFyZ2V0SXRlbShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SXNUYXJnZXRJdGVtKGJvb2wpOwogICAgIAotICAgIHZvaWQgc2V0U3RhdGVPYmplY3QoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG9iamVjdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
OwogICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3Q7IH0KIAogICAgIHZvaWQgc2V0SXRlbVNlcXVlbmNl
TnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIHsgbV9pdGVtU2VxdWVuY2VOdW1iZXIgPSBudW1iZXI7
IH0KQEAgLTEzNSwzOCArMTM1LDM4IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsg
fQogCiAgICAgdm9pZCBzZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwotICAgIHZvaWQgc2V0Rm9ybURhdGEoUGFzc1JlZlB0cjxGb3JtRGF0YT4pOwotICAgIHZv
aWQgc2V0Rm9ybUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Rm9ybURhdGEoUGFzc1JlZlB0cjxGb3JtRGF0YT4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Rm9ybUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBz
ZXRMYXN0VmlzaXRXYXNGYWlsdXJlKGJvb2wgd2FzRmFpbHVyZSkgeyBtX2xhc3RWaXNpdFdhc0Zh
aWx1cmUgPSB3YXNGYWlsdXJlOyB9CiAKLSAgICB2b2lkIGFkZENoaWxkSXRlbShQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEl0ZW0oUGFz
c1JlZlB0cjxIaXN0b3J5SXRlbT4pOwogICAgIHZvaWQgc2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+KTsKLSAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aFRhcmdldChjb25z
dCBTdHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY2hpbGRJ
dGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBIaXN0b3J5SXRlbSogY2hp
bGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcikgY29uc3Q7
Ci0gICAgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKLSAgICBjb25zdCBIaXN0b3J5SXRlbVZl
Y3RvciYgY2hpbGRyZW4oKSBjb25zdDsKLSAgICBib29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBIaXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4oKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNo
aWxkcmVuKCk7CiAgICAgYm9vbCBpc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qKSBjb25z
dDsKICAgICAKICAgICBib29sIHNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3Rv
cnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0OwogICAgIGJvb2wgaGFzU2FtZUZyYW1lcyhIaXN0b3J5
SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKIAotICAgIHZvaWQgYWRkUmVkaXJlY3RVUkwoY29uc3Qg
U3RyaW5nJik7Ci0gICAgVmVjdG9yPFN0cmluZz4qIHJlZGlyZWN0VVJMcygpIGNvbnN0OwotICAg
IHZvaWQgc2V0UmVkaXJlY3RVUkxzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUmVkaXJlY3RVUkwoY29uc3QgU3RyaW5nJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4qIHJlZGlyZWN0VVJMcygpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVkaXJlY3RVUkxzKHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8U3RyaW5nPj4pOwogCiAgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVudChEb2N1bWVudCop
IGNvbnN0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlkIHZpZXdTdGF0ZSgpIGNv
bnN0OwotICAgIHZvaWQgc2V0Vmlld1N0YXRlKGlkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpZCB2
aWV3U3RhdGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdTdGF0ZShp
ZCk7CiAgICAgCiAgICAgLy8gVHJhbnNpZW50IHByb3BlcnRpZXMgbWF5IGJlIG9mIGFueSBPYmpD
IHR5cGUuICBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHN0b3JlIHN0YXRlIHBlciBi
YWNrL2ZvcndhcmQgbGlzdCBlbnRyeS4KICAgICAvLyBUaGUgcHJvcGVydGllcyB3aWxsIG5vdCBi
ZSBwZXJzaXN0ZWQ7IHdoZW4gdGhlIGhpc3RvcnkgaXRlbSBpcyByZW1vdmVkLCB0aGUgcHJvcGVy
dGllcyB3aWxsIGJlIGxvc3QuCi0gICAgaWQgZ2V0VHJhbnNpZW50UHJvcGVydHkoY29uc3QgU3Ry
aW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRUcmFuc2llbnRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
LCBpZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaWQgZ2V0VHJhbnNpZW50UHJvcGVydHkoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFuc2llbnRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmLCBpZCk7CiAjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKQEAgLTIw
NiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEhpc3RvcnlJ
dGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOwotICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKTsKLSAgICBI
aXN0b3J5SXRlbShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSGlz
dG9yeUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGV4cGxpY2l0IEhpc3RvcnlJ
dGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5oCmlu
ZGV4IDYyY2E3ZTZmZTc1NjRmOTRmMWRiNzdkZjYwMDUyMjYyOWIxOWIwMTguLmNlZDRkNjJmNWRj
MWZjMzNiZGM0Y2YyMDMwNDIzZGMzNTdkNTE4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuaApAQCAtNDUsMTggKzQ1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgY2FuQ2FjaGUoUGFnZSopIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Q2Fw
YWNpdHkoaW50KTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlCisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q2FwYWNpdHkoaW50KTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hl
CiAgICAgICAgIGludCBjYXBhY2l0eSgpIHsgcmV0dXJuIG1fY2FwYWNpdHk7IH0KICAgICAgICAg
CiAgICAgICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+LCBQYWdlJik7IC8vIFBy
dW5lcyBpZiBjYXBhY2l0eSgpIGlzIGV4Y2VlZGVkLgotICAgICAgICB2b2lkIHJlbW92ZShIaXN0
b3J5SXRlbSopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShIaXN0b3J5SXRl
bSopOwogICAgICAgICBDYWNoZWRQYWdlKiBnZXQoSGlzdG9yeUl0ZW0qIGl0ZW0pOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gdGFrZShIaXN0b3J5SXRlbSopOwogCiAgICAg
ICAgIGludCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgaW50
IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGZyYW1lQ291
bnQoKSBjb25zdDsKIAotICAgICAgICB2b2lkIG1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJl
Y2FsYygpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtQYWdlc0ZvclZpc3RlZExp
bmtTdHlsZVJlY2FsYygpOwogCiAgICAgICAgIC8vIFdpbGwgbWFyayBhbGwgY2FjaGVkIHBhZ2Vz
IGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBhcyBuZWVkaW5nIHN0eWxlIHJlY2FsYy4K
ICAgICAgICAgdm9pZCBtYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGMoUGFnZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmluZGV4IGQ3MTg4ZDk4MjNmMmE0MDFjY2M3M2EzZGI1
Y2E3NDlhM2NkZmU2MmMuLjBiMTU3MWYyMDA3YmYxOGY4NWNmN2M2YWZlNjZlZWViMDQ2ZGQ0NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzdG9yZUNvbnRyb2xTdGF0ZUZvcihIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlJik7CiAgICAgdm9pZCByZXN0b3JlQ29udHJvbFN0YXRlSW4oSFRNTEZvcm1F
bGVtZW50Jik7CiAKLSAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0
SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZT4sIDY0PiBGb3Jt
RWxlbWVudExpc3RIYXNoU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IGQyYmI0
MDRlYTk3NmJiMjlkNjBjOWYyZDI0MjcwODYyNmE2ODY3Y2UuLjY1YTZjMmUwYjZkNzE0NWI1OGUy
OGU5ODJkNGI0OGE5ZTU5MWUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY2hp
bGRyZW4oKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKIAogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggMTUxODgzMzhhM2I5
YTI0ZWQ3YmE5ZGFhNjM5ZjQ4NTZlMWViNDIzYy4uZmJhYWMxYjFkOWM2ZDExMzM2MDFmMjllMWJj
ZTBmYzQ3ODFjYjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC02
NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKLSAg
ICBib29sIGF1dG9jb3JyZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhdXRv
Y29ycmVjdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b2NvcnJlY3QoYm9vbCk7CiAKLSAgICBX
ZWJBdXRvY2FwaXRhbGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNv
bnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b2NhcGl0YWxpemUoKSBjb25zdDsKICAg
ICB2b2lkIHNldEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCBkZGJmNGRm
OWIwMGY1OWY4OTYyOTNkOTkwYmI3NjI4NmJhODdkZjk1Li5kNTg2ZDhkMGI4YzgwMzBjNTMwOTgz
MjQ0OTY3ZjkyOTUzOWQ2MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgRnJhbWUqIGNvbnRl
bnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9CiAgICAgRE9NV2luZG93
KiBjb250ZW50V2luZG93KCkgY29uc3Q7Ci0gICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7CiAgICAgdm9pZCBjbGVh
ckNvbnRlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCBmNjA4ZDc0ZmRjYzNlNDQ2ODg2Yjc0ODdlYTY5MmY1MWI2ZWJmODY0Li5iMmJiNTQ3YzcyM2U2
MTU1NWUyMGIzMTI2NmUxNDlhNTFhM2Q0NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhUTUxJ
bnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQog
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCiAgICAgdmlydHVhbCBib29s
IGhhc0JhZElucHV0KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdDsKIAogICAgIGJvb2wgaXNSYWRpb0J1
dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdDsKLSAgICBib29sIGlz
U2VhcmNoRmllbGQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGV4dEZpZWxk
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7
CiAgICAgYm9vbCBpc0lucHV0VHlwZUhpZGRlbigpIGNvbnN0OwotICAgIGJvb2wgaXNQYXNzd29y
ZEZpZWxkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Bhc3N3b3JkRmllbGQo
KSBjb25zdDsKICAgICBib29sIGlzQ2hlY2tib3goKSBjb25zdDsKICAgICBib29sIGlzUmFuZ2VD
b250cm9sKCkgY29uc3Q7CiAKQEAgLTEyMywyMSArMTIzLDIxIEBAIHB1YmxpYzoKICAgICAvLyBi
ZSB1c2luZyBhIGRpZmZlcmVudCBvbmUuIE1hbnkgaW5wdXQgZWxlbWVudHMgYmVoYXZlIGxpa2Ug
dGV4dCBmaWVsZHMsIGFuZCBpbiBhZGRpdGlvbgogICAgIC8vIGFueSB1bmtub3duIGlucHV0IHR5
cGUgaXMgdHJlYXRlZCBhcyB0ZXh0LiBDb25zaWRlciwgZm9yIGV4YW1wbGUsIGlzVGV4dEZpZWxk
IG9yCiAgICAgLy8gaXNUZXh0RmllbGQgJiYgIWlzUGFzc3dvcmRGaWVsZC4KLSAgICBib29sIGlz
VGV4dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNUZXh0KCkgY29uc3Q7CiAK
LSAgICBib29sIGlzRW1haWxGaWVsZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNFbWFpbEZpZWxkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbGVVcGxvYWQoKSBjb25zdDsKICAg
ICBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdDsKLSAgICBib29sIGlzTnVtYmVyRmllbGQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTnVtYmVyRmllbGQoKSBjb25zdDsKICAg
ICBib29sIGlzU3VibWl0QnV0dG9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1RlbGVwaG9uZUZpZWxk
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VSTEZpZWxkKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0RhdGVG
aWVsZCgpIGNvbnN0OwotICAgIGJvb2wgaXNEYXRlVGltZUZpZWxkKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc0RhdGVUaW1lTG9jYWxGaWVsZCgpIGNvbnN0OwotICAgIGJvb2wgaXNNb250aEZpZWxkKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1RpbWVGaWVsZCgpIGNvbnN0OwotICAgIGJvb2wgaXNXZWVrRmll
bGQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGVsZXBob25lRmllbGQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVVJMRmllbGQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzRGF0ZUZpZWxkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0RhdGVUaW1lRmllbGQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c01vbnRoRmllbGQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGltZUZpZWxk
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1dlZWtGaWVsZCgpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkg
Y29uc3Q7CkBAIC0xNzEsOCArMTcxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcg
dmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50
KTsKLSAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IgPSBEaXNwYXRjaE5vRXZlbnQpOwotICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0IFN0
cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwg
VGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgLy8gQ2hlY2tz
IGlmIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHdvdWxkIGJlIGEgdmFsaWQgdmFsdWUuCiAgICAgLy8g
V2Ugc2hvdWxkIG5vdCBjYWxsIHRoaXMgZm9yIHR5cGVzIHdpdGggbm8gc3RyaW5nIHZhbHVlIHN1
Y2ggYXMgQ0hFQ0tCT1ggYW5kIFJBRElPLgogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwpAQCAtMTg1LDEzICsxODUsMTMgQEAgcHVibGljOgogICAgIC8vIFRoZSB2
YWx1ZSB3aGljaCBpcyBkcmF3biBieSBhIHJlbmRlcmVyLgogICAgIFN0cmluZyB2aXNpYmxlVmFs
dWUoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKGNvbnN0IFN0cmluZyYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZUFzRGF0
ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGRvdWJsZSB2YWx1ZUFzTnVtYmVyKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQpOworICAgIFdFQkNPUkVf
RVhQT1JUIGRvdWJsZSB2YWx1ZUFzTnVtYmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYsIFRleHRGaWVsZEV2
ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQpOwogCiAgICAgU3RyaW5nIHZhbHVlV2l0aERl
ZmF1bHQoKSBjb25zdDsKIApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICBib29sIG11
bHRpcGxlKCkgY29uc3Q7CiAKICAgICBib29sIGlzQXV0b2ZpbGxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBdXRvZmlsbGVkOyB9Ci0gICAgdm9pZCBzZXRBdXRvZmlsbGVkKGJvb2wgPSB0cnVlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9maWxsZWQoYm9vbCA9IHRydWUpOwogCiAg
ICAgRmlsZUxpc3QqIGZpbGVzKCk7CiAgICAgdm9pZCBzZXRGaWxlcyhQYXNzUmVmUHRyPEZpbGVM
aXN0Pik7CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCiAgICAgLy8gRm9yIHRlc3QgcHVycG9zZXMuCi0gICAgdm9pZCBzZWxlY3RDb2xv
ckluQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7CiAjZW5kaWYKIAogICAgIFN0
cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCAwNDcxMzgxYWQ2ZjRhMjBjM2Y4ZjA1MDY0YzYyZDVlYmQ3NjM4MDMzLi5j
NjMwNTQ2YmRmZjg2MDVhODc1NDNjNmMwM2ZjNWIwYjE3NmRmNmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmV3aW5k
KGRvdWJsZSB0aW1lRGVsdGEpOwotICAgIHZpcnR1YWwgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJldHVyblRvUmVhbHRp
bWUoKSBvdmVycmlkZTsKIAogICAgIC8vIEV2ZW50dWFsbHkgb3ZlcmxvYWRlZCBpbiBIVE1MVmlk
ZW9FbGVtZW50CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9OwpAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5n
JiwgQXRvbWljU3RyaW5nKiB2YWx1ZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
UGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKTsKQEAgLTE2NywyNiArMTY3LDI2IEBA
IHB1YmxpYzoKICAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKIAogLy8gcGxheWJhY2sgc3RhdGUK
LSAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
ZG91YmxlIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIGRl
ZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91Ymxl
IHBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVBsYXli
YWNrUmF0ZSgpOwogICAgIGJvb2wgd2Via2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdDsKICAgICB2
b2lkIHNldFdlYmtpdFByZXNlcnZlc1BpdGNoKGJvb2wpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGVuZGVkKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlbmRlZCgpIGNvbnN0OwogICAgIGJvb2wg
YXV0b3BsYXkoKSBjb25zdDsKICAgICBib29sIGxvb3AoKSBjb25zdDsgICAgCiAgICAgdm9pZCBz
ZXRMb29wKGJvb2wgYik7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBw
YXVzZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRCdWZmZXJEYXRhKGJv
b2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZmFzdFNlZWsoZG91YmxlKTsKICAgICBkb3VibGUgbWlu
RmFzdFJldmVyc2VSYXRlKCkgY29uc3Q7CkBAIC0yMzUsMjAgKzIzNSwyMCBAQCBwdWJsaWM6CiAv
LyBjb250cm9scwogICAgIGJvb2wgY29udHJvbHMoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRy
b2xzKGJvb2wpOwotICAgIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZG91YmxlLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdG9nZ2xlUGxh
eVN0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2NydWJiaW5nKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGJlZ2luU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2lu
U2Nhbm5pbmcoU2NhbkRpcmVjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuZFNj
YW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgZG91YmxlIG5leHRTY2FuUmF0ZSgpOwogCi0gICAgdmly
dHVhbCBib29sIGNhblBsYXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZG91YmxlIHBlcmNl
bnRMb2FkZWQoKSBjb25zdDsKIApAQCAtMzc3LDEwICszNzcsMTAgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8
fCBtX3BsYXllci0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsgfQogICAgIAotICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB0
b2dnbGVGdWxsc2NyZWVuU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRD
YXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9u
c1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTM5NCw5ICszOTQsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIHN0YXRpYyB2b2lkIGdldFNp
dGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlKCk7Ci0gICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVk
aWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRN
ZWRpYUVuZ2luZXMoKTsKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF5aW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4
IDAxN2QxNDY2YzY0MmExZWNlNGJlZWEyN2RlZDI1Mjk4ODJiMzgxNmQuLjY4OWNlNGI4MmZmMmQ0
YjczNjViY2IwMzM5NmE3NDc5M2EzZjNkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSFRNTFNlbGVj
dEVsZW1lbnQqIG93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0OwogICAgIAotICAgIFN0cmluZyBn
cm91cExhYmVsVGV4dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBncm91cExh
YmVsVGV4dCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxPcHRHcm91cEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmgKaW5kZXggMWQwYjc0MzZjZWUxZGE5NDRhMjAxZTI5MDM5MmJlZWZkZjMyMzQx
Ni4uNjQ3ZDAxZTMwNDJiMDhkODQ4ZWZkMTkxNGJmNzkwNTNiYWFjYmNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3Ry
dWN0b3IoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUs
CiAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGludCBpbmRleCgpIGNvbnN0OwpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgc2VsZWN0ZWQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNlbGVjdGVkKCk7CiAgICAgdm9pZCBzZXRTZWxlY3RlZChib29s
KTsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oCmluZGV4IDYwNWQzZDM0YzEzZGVhYjJiZjJjMTY0MGJhZTQxMTc2MDEz
YzQ0ODIuLjVjN2VhZWJhZmUxNTZkN2U1NWVjYzkzZGU5NzBmOTNhMTQwYzUwZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gZ2V0SW5zdGFuY2Uo
KTsKIAotICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgV2lkZ2V0KiBwbHVnaW5XaWRnZXQoKSBjb25zdDsKIAogICAgIGVudW0gRGlzcGxheVN0YXRl
IHsKICAgICAgICAgV2FpdGluZ0ZvclNuYXBzaG90LApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiAgICAgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0Rm9yUGx1Z2luUmVwbGFjZW1lbnQoKTsK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIE5QT2JqZWN0KiBnZXROUE9i
amVjdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIE5QT2JqZWN0KiBnZXROUE9iamVjdCgpOwogI2Vu
ZGlmCiAKICAgICBib29sIGlzQ2FwdHVyaW5nTW91c2VFdmVudHMoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggMzY0NTQ4MzlmM2Y1ODhjZmUwYTg2NzQ5OTk0ZTYzZTNj
MjU1YTk2Ni4uODU2ZmMyNjBjMDkxZGUyZmI4YTQzMzQxODk2NzJlYjViZTUwNWI0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTcwLDEzICs3
MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+LCBib29sIGZvcndhcmRFdmVudCk7CiAgICAgdm9pZCBjaGVja1NuYXBzaG90
U3RhdHVzKCk7CiAgICAgSW1hZ2UqIHNuYXBzaG90SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nu
YXBzaG90SW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKCk7CiAK
ICAgICAvLyBQbHVnLWluIFVSTCBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdXJsKCkgd2l0aCBv
dmVycmlkaW5nIHBhcmFtZXRlcnMuCiAgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQ
bHVnSW4oY29uc3QgVVJMJiBwbHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRD
cmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0Kik7CiAKLSAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBz
aG90dGVkUGx1Z0luKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNQcmltYXJ5
U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7CiAgICAgYm9vbCBwYXJ0T2ZTbmFwc2hvdE92ZXJsYXko
Tm9kZSopOwogCiAgICAgYm9vbCBuZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaAppbmRleCAwODZkODI0YzAzZTIyZjcwYWJlZjQ0OGE2ZTQ5NzMxZWYxZTU5
ZTkzLi5mYTljYmU0Nzk2ZjhjNTcxYzIzZTI2YmUzNzk1OGEwYjE3ODc3OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC00MCwxMCArNDAsMTAgQEAgY2xhc3Mg
SFRNTFNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSwgcHVibGljIFR5cGVBaGUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2Vs
ZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxG
b3JtRWxlbWVudCopOwogCi0gICAgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2VsZWN0
ZWRJbmRleChpbnQpOwogCi0gICAgdm9pZCBvcHRpb25TZWxlY3RlZEJ5VXNlcihpbnQgaW5kZXgs
IGJvb2wgZGlzcGF0Y2hDaGFuZ2VFdmVudCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0g
ZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3B0aW9uU2VsZWN0ZWRCeVVzZXIoaW50
IGluZGV4LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVj
dGlvbiA9IGZhbHNlKTsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCiAgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQnlJbmRleChpbnQpOwogICAgIHZvaWQgcmVtb3Zl
KEhUTUxPcHRpb25FbGVtZW50Kik7CiAKLSAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgUGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IG9w
dGlvbnMoKTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVNl
bGVjdGVkSXRlbXMoKTsKICAgICB2b2lkIHVwZGF0ZUxpc3RJdGVtU2VsZWN0ZWRTdGF0ZXMoKTsK
IAotICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNl
RXZlbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCAxMjVl
YmE1NmZmYjZlNTE4YWU4N2I2NjE5ODJkNDY5OTBjYWNhMjlkLi4yY2ZkZjQ2MDM0OGRhNjIxYmE3
MGM2NDQ0YzY1N2Y0NWIyMTZmNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaGVhZGVy
cygpIGNvbnN0OwogICAgIFN0cmluZyBzY29wZSgpIGNvbnN0OwogCi0gICAgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGxBYm92ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxUYWJs
ZUNlbGxFbGVtZW50KiBjZWxsQWJvdmUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MVGFi
bGVDZWxsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggMTkzZWQzM2E4NDRjMjc4ZWMw
Njk4N2VlYjY5YmUyNDZlZmI4ZTViMi4uMTU5ODkxMGFiNTFjMzBkYTU3ZDRhZGM2MzA3N2E4Yzdl
MTAwNTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAg
LTQwLDggKzQwLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRXcmFwVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fd3JhcCAhPSBOb1dyYXA7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVmYXVsdFZhbHVlKGNvbnN0
IFN0cmluZyYpOwogICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5s
ZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oCmluZGV4IGMyMmY1OWM1MWUzYzFjOTgxMjc3MGNkYjE0MDZhZTdjNDljMGUwY2Mu
Ljk3MGY3YWIxYzNhMTgxNDVmZmFiMjk4NWMwNjExYThhY2Q1M2I5YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CiAK
ICAgICBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Q7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBp
bmRleCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3Q7CiAgICAgaW50IHNlbGVjdGlvblN0YXJ0
KCkgY29uc3Q7CiAgICAgaW50IHNlbGVjdGlvbkVuZCgpIGNvbnN0OwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VsZWN0aW9uRGlyZWN0aW9uKCkgY29uc3Q7CkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0
RWxlbWVudCgpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChib29sIHNo
b3VsZEZpcmVTZWxlY3RFdmVudCk7Ci0gICAgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGlubmVyVGV4dFZhbHVlKCkgY29uc3Q7CiAKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGNvbnN0IFN0
cmluZyYgdGV4dCkgeyBtX3RleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQgPSB0ZXh0
OyB9CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgaGlkZVBsYWNlaG9sZGVyKCk7Ci0gICAg
dm9pZCBzaG93UGxhY2Vob2xkZXJJZk5lY2Vzc2FyeSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaGlkZVBsYWNlaG9sZGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93UGxhY2Vo
b2xkZXJJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggMWI2MjcyM2M2ZjUzYjJiMjAzNzk5YzU3YmQzYjFl
MTc0MTkzOWQ1Mi4uYzRkNGY5ZDAxY2QxY2YxMWI3NzdjMmE4YjBmODVkZjU5YmNhYmYyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTM5LDggKzM5LDggQEAgY2xh
c3MgSFRNTFZpZGVvRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MTWVkaWFFbGVtZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CiAKLSAgICB1bnNpZ25lZCB2aWRl
b1dpZHRoKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdmlkZW9IZWlnaHQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB2aWRlb1dpZHRoKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdW5zaWduZWQgdmlkZW9IZWlnaHQoKSBjb25zdDsKICAgICAKICAgICAvLyBGdWxsc2Ny
ZWVuCiAgICAgdm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oRXhjZXB0aW9uQ29kZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRleCA3ODkwZWU0ZjRhNmM1YWViZDU4N2U4Y2U3
OGMyMmFkMmNkMjFkYWQwLi4zOTYyNWI5NmNkMzc5MjgyYjFiNmQ2NjA3ZDNkMDUyOGE5NzVjZTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEb2N1bWVudChmcmFtZSwgdXJs
KSk7CiAgICAgfQogCi0gICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50KCkgY29u
c3Q7CiAKICAgICB2b2lkIHVwZGF0ZUR1cmluZ1BhcnNpbmcoKTsKICAgICB2b2lkIGZpbmlzaGVk
UGFyc2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCmluZGV4IDc5MzQ3NDc0
MDRkOWZmZjkxZmMwMzlhYTExMDYyOWNhMGQwZDMyMTkuLjc4NDkxZDA3ZDEyMzFlMGY0YWU3ODky
ODI5YmQzYjE2NTA2NDFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQbHVnaW5FbGVtZW50KFBhc3NS
ZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+KTsKIAotICAgIFdpZGdldCogcGx1Z2luV2lkZ2V0KCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgV2lkZ2V0KiBwbHVnaW5XaWRnZXQoKTsKICAgICBIVE1MUGx1
Z0luRWxlbWVudCogcGx1Z2luRWxlbWVudCgpIHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQo
KTsgfQogCiAgICAgdm9pZCBkZXRhY2hGcm9tUGx1Z2luRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9mb3Jtcy9GaWxlSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9mb3Jtcy9GaWxlSWNvbkxvYWRlci5oCmluZGV4IDQwMDE2NjQzNjc0YjQwMzRmNjcx
ODE0ZjNmNzZkODllNWY4NTBmNDEuLjFmYjRjMmRkNmY2MTNmMTllMjE4MjI4NDE1M2IyZGYzZjFh
NGViMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvZm9ybXMvRmlsZUljb25Mb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Zvcm1zL0ZpbGVJY29uTG9hZGVyLmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEZpbGVJY29uTG9hZGVyKEZpbGVJ
Y29uTG9hZGVyQ2xpZW50Jik7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKFBhc3NSZWZQdHI8SWNvbj4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5RmluaXNoZWQoUGFzc1JlZlB0cjxJY29uPik7CiAKIHByaXZhdGU6CiAgICAgRmlsZUlj
b25Mb2FkZXJDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggYzc5MjdkMjczNTZmNTYzZTJmNzhlZDNhYWI1MzQyNTFmZTc4
YjM1ZC4uYTRlNjk5NDVmMmRiM2M2YTE5ZmVlZDVmNTAxZjMxN2YyNWJlNjE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0Rpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFz
RGlzdHJpYnV0aW9uOyB9CiAgICAgdm9pZCBzZXRIYXNEaXN0cmlidXRpb24oKSB7IG1faGFzRGlz
dHJpYnV0aW9uID0gdHJ1ZTsgfQogICAgIHZvaWQgY2xlYXJEaXN0cmlidXRpb24oKSB7IG1faGFz
RGlzdHJpYnV0aW9uID0gZmFsc2U7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBNYXRj
aFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSBjb25zdCB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCBmYWFj
MmFhYTk0NzQ5YjQwYmJkOWFmMDNmMDMwOWQ3NDkwZmE0YTk2Li5mYjRmNTFiYTQwNzk1NTc5NzJj
OGEyMjkyY2YzNGYwZTVkZDJmN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVKYXZhU2NyaXB0RGlhbG9nKGJvb2wsIGNvbnN0IFN0cmluZyopIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdl
KFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2Uq
IGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCmluZGV4IGU5ODQ0ZjBlOGRiMWM0ZjkzNjZhNWJmZGY0ZWQ2Y2IwYzAyZGM2ODIuLjFk
MjBjMzgxNjNjYTQ2M2UzZDZhZDczYzMyNzI5OWU1ZjExYWZiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtODEsMjEgKzgxLDIxIEBA
IHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICBQYWdlJiBpbnNwZWN0ZWRQ
YWdlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNob3coKTsKLSAgICB2b2lkIGNsb3NlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZSgpOwogCi0gICAgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4pOwogICAgIGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsK
ICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJX
b3JsZCYpOwogCi0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgYm9vbCBoYXNGcm9udGVu
ZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KICAgICBi
b29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5k
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCopOwotICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24pOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0xMDMsMjEgKzEwMywyMSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7Ci0gICAgdm9pZCBkcmF3SGlnaGxp
Z2h0KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwotICAgIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hs
aWdodCosIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQqLCBJbnNwZWN0
b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKICAgICB2b2lkIGhpZGVIaWdobGln
aHQoKTsKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
SW5kaWNhdGluZyhib29sKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKSBj
b25zdCB7IHJldHVybiBtX2lzVW5kZXJUZXN0OyB9CiAgICAgdm9pZCBzZXRJc1VuZGVyVGVzdChi
b29sIGlzVW5kZXJUZXN0KSB7IG1faXNVbmRlclRlc3QgPSBpc1VuZGVyVGVzdDsgfQotICAgIHZv
aWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjb25zdCBTdHJpbmcmIHNjcmlwdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0KTsKIAotICAgIGJvb2wgcHJvZmlsZXJFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRQcm9maWxlckVuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm9m
aWxlckVuYWJsZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb2ZpbGVy
RW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgcmVzdW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4
IDJmNjM3YjBmMjYwZTViOGQxY2Y1ZTk3NWFmMGRmNGUxN2U2NmExNmYuLjE3Y2MwNWI1Y2ZiNDE3
YzIxMmYyODViYmZjMTU2NGUzMGM1N2MwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTUsMTggKzU1
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgfTsKIAotICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqLCBzdGQ6OnVu
aXF1ZV9wdHI8U2V0dGluZ3M+KTsKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgUGFnZSosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4
LCBmbG9hdCB5KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2V0RG9ja1Np
ZGUoRG9ja1NpZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNoYW5nZUF0
dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNo
YW5nZUF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgYm9vbCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc0LDM5ICs3NCwzOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgp
IG92ZXJyaWRlOwogCi0gICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKLSAgICB2b2lkIHNldERv
Y2tpbmdVbmF2YWlsYWJsZShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkF0dGFj
aFdpbmRvdygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RG9ja2luZ1VuYXZhaWxhYmxl
KGJvb2wpOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0LCB1bnNpZ25lZCB0b3RhbFdpbmRvd0hlaWdo
dCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCBwcmVmZXJyZWRXaWR0aCwgdW5zaWduZWQgdG90YWxXaW5kb3dXaWR0aCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIGNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0LCB1bnNpZ25lZCB0b3RhbFdpbmRvd0hlaWdo
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIGNvbnN0cmFpbmVkQXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCBwcmVmZXJyZWRXaWR0aCwgdW5zaWduZWQgdG90YWxXaW5k
b3dXaWR0aCk7CiAKICAgICAvLyBEaXJlY3QgRnJvbnRlbmQgQVBJCi0gICAgYm9vbCBpc0RlYnVn
Z2luZ0VuYWJsZWQoKTsKLSAgICB2b2lkIHNldERlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RlYnVnZ2luZ0VuYWJsZWQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CiAKLSAgICBib29sIGlzVGltZWxp
bmVQcm9maWxpbmdFbmFibGVkKCk7Ci0gICAgdm9pZCBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkKGJvb2wpOwogCi0gICAgYm9vbCBpc1Byb2ZpbGluZ0phdmFTY3JpcHQoKTsKLSAgICB2b2lk
IHN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpOwotICAgIHZvaWQgc3RvcFByb2ZpbGluZ0phdmFT
Y3JpcHQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUHJvZmlsaW5nSmF2YVNjcmlwdCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwogCi0gICAg
dm9pZCBzaG93Q29uc29sZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd0NvbnNvbGUo
KTsKIAotICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKEZyYW1lKik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUoRnJhbWUqKTsKIAotICAg
IHZvaWQgc2hvd1Jlc291cmNlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2hvd1Jlc291
cmNlcygpOwogCi0gICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSk7CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgPSAw
OwotICAgIHZvaWQgcmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0KCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQoKTsKIAogcHJpdmF0ZToKICAg
ICBib29sIGV2YWx1YXRlQXNCb29sZWFuKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggMDE2M2Q0N2ZlMTAxZjZmZTFlMGYzNTUzZWRlMTJlNjAwNDJiZTU3My4uMTIzOTEwYTQw
YjdkMTI3N2IwMTNhYzFhMWU3MWU1OTg1ZjdjZjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDczLDcgKzQ3Myw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2Fj
aGVTdGF0dXNJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOwogCi0gICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UoUGFnZSopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBwc2V1ZG9F
bGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUHNldWRvRWxlbWVudCop
OwogCi0gICAgc3RhdGljIGludCBzX2Zyb250ZW5kQ291bnRlcjsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgaW50IHNfZnJvbnRlbmRDb3VudGVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAppbmRleCAxYTJiYmY4NDkzYmY4OWQ4YTcwOGQ4
ZTE1MjIyMmMxZjhlNGJiOGE0Li44MWUzZjY1ODU5NmM0NWY5YzEyMjhjODdjYzZlM2UxODU1MmNl
OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBGcmFtZUxvYWRSZXF1ZXN0KEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmID0gU3Vi
c3RpdHV0ZURhdGEoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkUmVxdWVzdChGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiA9IFN1YnN0
aXR1dGVEYXRhKCkpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3QuaXNFbXB0eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
aW5kZXggZTQ4OTUxYjY1NTllODZhZGM5NGNjYzRkM2ZlMzFkNmY0OTc2MzIwNC4uNTJlZmEzYzlj
OTUwODYxMTk3YjlhZmI0MDBiODg1YmE0NzY4OTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIEZyYW1lTG9hZGVyKEZyYW1l
JiwgRnJhbWVMb2FkZXJDbGllbnQmKTsKICAgICB+RnJhbWVMb2FkZXIoKTsKIAotICAgIHZvaWQg
aW5pdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdCgpOwogI2lmIFBMQVRGT1JNKElP
UykKICAgICB2b2lkIGluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpOwogI2Vu
ZGlmCkBAIC0xMDYsMTQgKzEwNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXR1cEZvclJlcGxh
Y2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9ucyB3aGljaCBzdGFy
dCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7Ci0gICAgdm9pZCBs
b2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBMb2NrSGlzdG9yeSwgTG9j
a0JhY2tGb3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9z
dFJlcXVlc3QgYW5kIGxvYWRVUkwuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkVVJMSW50
b0NoaWxkRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIC8vIENhbGxlZCBieSBz
dWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRVUkwuCiAgICAgICAgIFBh
c3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFNob3VsZFNlbmRSZWZlcnJl
ciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKIAotICAgIHZvaWQgbG9hZChjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmKTsKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQotICAgIHZvaWQgbG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+KTsKICNlbmRp
ZgogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwog
CkBAIC0xMjIsOCArMTIyLDggQEAgcHVibGljOgogICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBMb2NrSGlzdG9y
eSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyKTsKICAgICB2b2lkIHN1
Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4pOwogCi0gICAgdm9pZCByZWxvYWQo
Ym9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlKTsKLSAgICB2b2lkIHJlbG9hZFdpdGhPdmVycmlk
ZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCA9IGZhbHNlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYg
b3ZlcnJpZGVFbmNvZGluZyk7CiAKICAgICB2b2lkIG9wZW4oQ2FjaGVkRnJhbWVCYXNlJik7CiAg
ICAgdm9pZCBsb2FkSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwpAQCAtMTM1LDcg
KzEzNSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9u
cyB3aGljaCBzdG9wIGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgogICAgIHZvaWQgc3RvcEFsbExv
YWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPSBTaG91bGRDbGVhclByb3Zpc2lvbmFs
SXRlbSk7Ci0gICAgdm9pZCBzdG9wRm9yVXNlckNhbmNlbChib29sIGRlZmVyQ2hlY2tMb2FkQ29t
cGxldGUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRm9yVXNlckNhbmNl
bChib29sIGRlZmVyQ2hlY2tMb2FkQ29tcGxldGUgPSBmYWxzZSk7CiAgICAgdm9pZCBzdG9wKCk7
CiAgICAgdm9pZCBzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSk7CiAgICAgYm9vbCBjbG9z
ZVVSTCgpOwpAQCAtMTQ0LDE0ICsxNDQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoRG9j
dW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcyA9IHRydWUsIGJv
b2wgY2xlYXJTY3JpcHRPYmplY3RzID0gdHJ1ZSwgYm9vbCBjbGVhckZyYW1lVmlldyA9IHRydWUp
OwogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKLSAgICBib29sIGZyYW1lSGFzTG9hZGVk
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBmcmFtZUhhc0xvYWRlZCgpIGNvbnN0
OwogCi0gICAgaW50IG51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2UpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGludCBudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMo
Ym9vbCByZWN1cnNlKSBjb25zdDsKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKLSAgICBT
dHJpbmcgb3V0Z29pbmdSZWZlcnJlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBvdXRnb2luZ1JlZmVycmVyKCkgY29uc3Q7CiAgICAgU3RyaW5nIG91dGdvaW5nT3JpZ2luKCkg
Y29uc3Q7CiAKLSAgICBEb2N1bWVudExvYWRlciogYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlciogYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKSBjb25zdDsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9CiAgICAgRG9jdW1lbnRMb2FkZXIqIHBv
bGljeURvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3lEb2N1bWVudExvYWRl
ci5nZXQoKTsgfQogICAgIERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpOyB9CkBA
IC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRl
bnQoKTsKIAotICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIAogICAgIGJvb2wgaXNIb3N0
ZWRCeU9iamVjdEVsZW1lbnQoKSBjb25zdDsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IFVSTCYpIGNv
bnN0OwogCi0gICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIAogICAgIENhY2hlUG9saWN5
IHN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdDsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRlbGxDbGllbnRBYm91dFBhc3RNZW1vcnlDYWNoZUxvYWRzKCk7CiAK
ICAgICB2b2lkIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0gICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgdm9p
ZCBkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVyKCk7CiAKICAgICB2b2lkIGFkZEV4dHJhRmll
bGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0yMjUsNyArMjI1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29u
c3QgVVJMJikgY29uc3Q7CiAKICAgICBGcmFtZSogb3BlbmVyKCk7Ci0gICAgdm9pZCBzZXRPcGVu
ZXIoRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9wZW5lcihGcmFtZSopOwog
CiAgICAgdm9pZCByZXNldE11bHRpcGxlRm9ybVN1Ym1pc3Npb25Qcm90ZWN0aW9uKCk7CiAKQEAg
LTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKICAg
ICB2b2lkIGNoZWNrQ29tcGxldGVkKCk7CiAKLSAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29tcGxldGUoKSBjb25zdDsKIAogICAgIHZvaWQg
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCk7CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCBwdWJsaWM6CiAK
ICAgICBGcmFtZUxvYWRlclN0YXRlTWFjaGluZSYgc3RhdGVNYWNoaW5lKCkgeyByZXR1cm4gbV9z
dGF0ZU1hY2hpbmU7IH0KIAotICAgIEZyYW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gMCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgRnJhbWUqIGZpbmRGcmFtZUZvck5hdmlnYXRpb24oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSAwKTsKIAogICAgIHZvaWQg
YXBwbHlVc2VyQWdlbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTI2NCw3ICsyNjQsNyBAQCBw
dWJsaWM6CiAgICAgLy8gaW50cm9kdWNlIGEgcHJvcGVyIGNhbGxiYWNrIHR5cGUgZm9yIHRoaXMg
ZnVuY3Rpb24sIHdlIHNob3VsZCBtYWtlIGl0IHByaXZhdGUgYWdhaW4uCiAgICAgdm9pZCBjb250
aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCk7CiAKLSAgICB2b2lkIHNldE9yaWdpbmFsVVJM
Rm9yRG93bmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7
CiAKICAgICBib29sIHN1cHByZXNzT3BlbmVySW5OZXdGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lOyB9CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHF1aWNrUmVkaXJlY3RDb21pbmcoKSBjb25zdCB7IHJldHVybiBtX3F1aWNr
UmVkaXJlY3RDb21pbmc7IH0KIAotICAgIGJvb2wgc2hvdWxkQ2xvc2UoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHNob3VsZENsb3NlKCk7CiAgICAgCiAgICAgdm9pZCBzdGFydGVkKCk7CiAK
QEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBQYWdlRGlzbWlzc2FsVHlw
ZSBwYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZDsgfQogCi0gICAgTmV0d29ya2luZ0NvbnRl
eHQqIG5ldHdvcmtpbmdDb250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29y
a2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRQ
cm9ncmVzc2luZ1N0YXR1c0NoYW5nZWQoKTsKIApAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogCi0gICAgdm9pZCB1cmxTZWxl
Y3RlZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgUGFzc1JlZlB0cjxFdmVudD4sIExvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBQYXNzUmVmUHRyPEV2ZW50PiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Qs
IFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogCiAgICAgdm9pZCBsb2FkV2l0aERvY3Vt
ZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOyAvLyBDYWxscyBjb250aW51ZUxv
YWRBZnRlck5hdmlnYXRpb25Qb2xpY3kKICAgICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9hZGVyICAgCkBAIC0zNTksNyArMzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEZyb21EZWxlZ2F0ZShSZXNvdXJjZVJlcXVlc3QmLCB1
bnNpZ25lZCBsb25nJiBpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICB2b2lkIGRl
dGFjaENoaWxkcmVuKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXRhY2hDaGlsZHJlbigp
OwogICAgIHZvaWQgY2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSopOwogCiAgICAgdm9pZCBsb2Fk
SW5TYW1lRG9jdW1lbnQoY29uc3QgVVJMJiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHN0YXRlT2JqZWN0LCBib29sIGlzTmV3TmF2aWdhdGlvbik7CkBAIC00MDcsNyArNDA3LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9xdWlja1JlZGlyZWN0Q29taW5nOwogICAgIGJvb2wg
bV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb247Ci0gICAgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtX2luU3RvcEFsbExvYWRlcnM7CiAKICAgICBTdHJp
bmcgbV9vdXRnb2luZ1JlZmVycmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlclN0YXRlTWFjaGluZS5oCmluZGV4IDhiY2U5MjNlODJmNTI5MWMzOGZlNzkwNTBjMjQ2
ODY5ZDE2OTUzYzAuLjVjNWU0NzA1M2IyMjM0M2M2OGMyZDRhNmE0YTc5OWFhNmZhMjIyYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oCkBA
IC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAgICAgICBGaXJzdExheW91dERvbmUKICAgICB9
OwogCi0gICAgYm9vbCBjb21taXR0aW5nRmlyc3RSZWFsTG9hZCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29tbWl0dGluZ0ZpcnN0UmVhbExvYWQoKSBjb25zdDsKICAgICBib29s
IGNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpIGNvbnN0OwogICAgIGJvb2wgY3JlYXRp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNEaXNwbGF5aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQoKSBjb25zdDsKLSAgICBib29sIGZpcnN0TGF5b3V0RG9uZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmlyc3RMYXlvdXREb25lKCkgY29uc3Q7CiAg
ICAgdm9pZCBhZHZhbmNlVG8oU3RhdGUpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAzZDNlYzY4YTdlNWNiMGQ1NjVkZDVlODA1OTk1
M2YwOGI3MTQzOWI3Li40MzFmMzBlMGFjZjhhOWE2M2NmOTVkYzQ2ZDcwYWQ5MjAxNWIxNzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApAQCAtNTQsMTIgKzU0
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRl
VG9JdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgdm9pZCBjbGVhclNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlKCk7Ci0gICAgdm9pZCByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0
ZSgpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JGcmFnbWVudFNjcm9sbCgp
OwogCiAgICAgdm9pZCBzYXZlRG9jdW1lbnRTdGF0ZSgpOwotICAgIHZvaWQgc2F2ZURvY3VtZW50
QW5kU2Nyb2xsU3RhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVEb2N1bWVudEFu
ZFNjcm9sbFN0YXRlKCk7CiAgICAgdm9pZCByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOwogCiAgICAg
dm9pZCBpbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCk7CkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgdm9p
ZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKICAgICBi
b29sIGN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpIGNvbnN0OwotICAgIHZvaWQgcmVwbGFj
ZUN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBs
YWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKIAogICAgIEhpc3RvcnlJdGVtKiBwcmV2aW91
c0l0ZW0oKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzSXRlbS5nZXQoKTsgfQogICAgIHZvaWQg
Y2xlYXJQcmV2aW91c0l0ZW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgK
aW5kZXggZDI3ODNhZTY3YTkwZGQxMmFjMDBiZDYxMWYzZDA3OTg2MTBmYjUyMS4uYzI2N2VlZDU3
MDRlZTQzNmFjNmExMTc4NGQ1MGJlYThiNTY2Yjk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmgKQEAgLTQwLDExICs0MCwxMSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogCiBjbGFzcyBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiByZXNvdXJjZUxvYWRTY2hlZHVsZXIo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtp
bmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtp
bmdDb250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCi0gICAgdmly
dHVhbCBCbG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKTsKIAogcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgfkxvYWRlclN0cmF0ZWd5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDgzNTQ5MWFlZTdmNzkxOWU4N2MxZGIzZTZlZjMyYjRh
ZjEzYjM5MjkuLjFiNDhkMGMwOWZjYTZiMDNiYjk1MGRjOTEzYTNiOTVhYjg2ZDQ5MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzksMTAgKzM5LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIE5hdmlnYXRpb25BY3Rpb24gewogICAg
IHB1YmxpYzoKLSAgICAgICAgTmF2aWdhdGlvbkFjdGlvbigpOwotICAgICAgICBleHBsaWNpdCBO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICBOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlKTsKLSAgICAg
ICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBl
LCBib29sIGlzRm9ybVN1Ym1pc3Npb24pOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0
aW9uQWN0aW9uKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIE5h
dmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbik7CiAgICAgICAgIE5h
dmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblR5cGUsIFBh
c3NSZWZQdHI8RXZlbnQ+KTsKICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFBhc3NSZWZQ
dHI8RXZlbnQ+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuaAppbmRleCBiZjdjYzE4YTU1YWIyYzI1M2Y0ZTk4MzA0ZWMxNTU5NmMz
OTBmMGE3Li4zMmY1NGI5ZGEyZDMzN2U5OGI0MDEyMWI2MzYxM2NkNWYyY2RmNjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApA
QCAtNTAsMTAgKzUwLDEwIEBAIHByb3RlY3RlZDoKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBjcmVhdGUoRnJhbWUq
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKCk7CiAKLSAgICBib29sIGlzRG9uZSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNEb25lKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKaW5kZXggMGY3YWEwYTk4MjU3
MzhiYTg4ODg1MzBmYjNhOGExZDQ2YzgyZWNjZS4uNDQwM2I0ZDY5Y2E5MDMwYTk2YTljNGFhMzM2
ZWQ4OWIyY2Y0MjQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBjcmVh
dGVVbmlxdWVJZGVudGlmaWVyKCk7CiAKLSAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25z
dDsKIAogICAgIHZvaWQgcHJvZ3Jlc3NTdGFydGVkKEZyYW1lJik7CiAgICAgdm9pZCBwcm9ncmVz
c0NvbXBsZXRlZChGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGY0N2M0Zjk5YTA0MmM3YjQ5OTljN2Y4NGQ2
MGU3Y2NlZmVkNzg4Y2UuLjQ4OGM3YTdlY2E0MGQ4ZGQ3MTI5OTk3ZmQ3ZGFmOTc2ZjI5MDg1ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBjbGFzcyBSYW5nZTsKIAogY2xhc3MgTGVnYWN5
V2ViQXJjaGl2ZSA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyKik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciop
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlLCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4+IHN1YnJlc291cmNlcywgVmVjdG9yPFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4g
c3ViZnJhbWVBcmNoaXZlcyk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gY3JlYXRlKE5vZGUqLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+IGZyYW1lRmlsdGVy
ID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKEZyYW1lKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlRnJvbVNlbGVjdGlvbihGcmFtZSopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShSYW5nZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNz
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4g
c3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBzdWJmcmFtZUFy
Y2hpdmVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoTm9kZSosIHN0ZDo6ZnVuY3Rpb248Ym9vbChGcmFtZSYpPiBmcmFtZUZp
bHRlciA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBjcmVhdGUoUmFuZ2UqKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByYXdEYXRhUmVwcmVzZW50YXRpb24oKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByYXdEYXRhUmVwcmVzZW50
YXRpb24oKTsKIAogcHJpdmF0ZToKICAgICBMZWdhY3lXZWJBcmNoaXZlKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDEyNTAzZTAwOTJkNDE3ZGQ2
ZjgwOWNiN2ZjN2Y4MmMxMzI4YjJjN2YuLmYzNmNjYmU4MmIzMjM0ODhhOWZlOWUzOTMwNDdjYWY3
OTNlOWNlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBA
IC0xMTEsOCArMTExLDggQEAgcHVibGljOgogICAgICAgICBUeXBlU3RhdGlzdGljIGZvbnRzOwog
ICAgIH07CiAKLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJik7
Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYsIFNlc3Npb25J
RCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNv
bnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmLCBTZXNzaW9uSUQpOwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKIAogICAgIGJv
b2wgYWRkKENhY2hlZFJlc291cmNlKik7CkBAIC0xMjgsMTQgKzEyOCwxNCBAQCBwdWJsaWM6CiAg
ICAgLy8gIC0gbWluRGVhZEJ5dGVzOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBk
ZWFkIHJlc291cmNlcyBzaG91bGQgY29uc3VtZSB3aGVuIHRoZSBjYWNoZSBpcyB1bmRlciBwcmVz
c3VyZS4KICAgICAvLyAgLSBtYXhEZWFkQnl0ZXM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRl
cyB0aGF0IGRlYWQgcmVzb3VyY2VzIHNob3VsZCBjb25zdW1lIHdoZW4gdGhlIGNhY2hlIGlzIG5v
dCB1bmRlciBwcmVzc3VyZS4KICAgICAvLyAgLSB0b3RhbEJ5dGVzOiBUaGUgbWF4aW11bSBudW1i
ZXIgb2YgYnl0ZXMgdGhhdCB0aGUgY2FjaGUgc2hvdWxkIGNvbnN1bWUgb3ZlcmFsbC4KLSAgICB2
b2lkIHNldENhcGFjaXRpZXModW5zaWduZWQgbWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFk
Qnl0ZXMsIHVuc2lnbmVkIHRvdGFsQnl0ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q2FwYWNpdGllcyh1bnNpZ25lZCBtaW5EZWFkQnl0ZXMsIHVuc2lnbmVkIG1heERlYWRCeXRlcywg
dW5zaWduZWQgdG90YWxCeXRlcyk7CiAKICAgICAvLyBUdXJuIHRoZSBjYWNoZSBvbiBhbmQgb2Zm
LiAgRGlzYWJsaW5nIHRoZSBjYWNoZSB3aWxsIHJlbW92ZSBhbGwgcmVzb3VyY2VzIGZyb20gdGhl
IGNhY2hlLiAgVGhleSBtYXkKICAgICAvLyBzdGlsbCBsaXZlIG9uIGlmIHRoZXkgYXJlIHJlZmVy
ZW5jZWQgYnkgc29tZSBXZWIgcGFnZSB0aG91Z2guCi0gICAgdm9pZCBzZXREaXNhYmxlZChib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERpc2FibGVkKGJvb2wpOwogICAgIGJvb2wg
ZGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkOyB9CiAKLSAgICB2b2lkIGV2aWN0
UmVzb3VyY2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBldmljdFJlc291cmNlcygpOwog
ICAgIAogICAgIHZvaWQgc2V0UHJ1bmVFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3BydW5lRW5h
YmxlZCA9IGVuYWJsZWQ7IH0KICAgICB2b2lkIHBydW5lKCk7CkBAIC0xNTksNyArMTU5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENhY2hlZFJlc291
cmNlKik7CiAKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICB2b2lkIGZsdXNoQ2Fj
aGVkSW1hZ2VzVG9EaXNrKCk7IC8vIEZsdXNoIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBz
dGlsbCByZWZlcmVuY2VkIGJ5IHdlYiBwYWdlcy4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZs
dXNoQ2FjaGVkSW1hZ2VzVG9EaXNrKCk7IC8vIEZsdXNoIGVuY29kZWQgZGF0YSBmcm9tIHJlc291
cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IHdlYiBwYWdlcy4KICNlbmRpZgogCiAgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlVXJsRnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgU2Vzc2lvbklEKTsKQEAgLTE2NywxMyArMTY3LDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgLy8gRnVu
Y3Rpb24gdG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUgY2FjaGVzIHdpbmRvdyBp
biB0aGUgU2FmYXJpIERlYnVnIG1lbnUuCi0gICAgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNzKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNzKCk7CiAgICAgCiAg
ICAgdm9pZCByZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB0eXBlZGVm
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gU2VjdXJpdHlPcmlnaW5TZXQ7Ci0gICAg
dm9pZCByZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdm9p
ZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmln
aW4qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJp
dHlPcmlnaW5TZXQmIG9yaWdpbnMpOwogCiAgICAgdW5zaWduZWQgbWluRGVhZENhcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9taW5EZWFkQ2FwYWNpdHk7IH0KICAgICB1bnNpZ25lZCBtYXhEZWFk
Q2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX21heERlYWRDYXBhY2l0eTsgfQpAQCAtMTg0LDE0
ICsxODQsMTQgQEAgcHVibGljOgogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
ZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2lu
dGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKICAgICAvLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0
YWluKCkgaW4gTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhl
IGNvZGUgcGxhdGZvcm0taW5kZXBlbmRlbnQuCi0gICAgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pOwot
ICAgIHZvaWQgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBj
YWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUo
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbik7CiAjZW5kaWYKIAogICAgIC8vIHBydW5l
RGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBu
b3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCiAgICAgLy8gcHJ1bmVMaXZlKigpIC0gRmx1c2gg
ZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2Vz
LgotICAgIHZvaWQgcHJ1bmVEZWFkUmVzb3VyY2VzKCk7IC8vIEF1dG9tYXRpY2FsbHkgZGVjaWRl
IGhvdyBtdWNoIHRvIHBydW5lLgotICAgIHZvaWQgcHJ1bmVMaXZlUmVzb3VyY2VzKGJvb2wgc2hv
dWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyA9IGZhbHNlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBydW5lRGVhZFJlc291cmNlcygpOyAvLyBBdXRvbWF0aWNhbGx5
IGRlY2lkZSBob3cgbXVjaCB0byBwcnVuZS4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBydW5l
TGl2ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNv
dXJjZXMgPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwcnVuZURlYWRSZXNvdXJjZXNU
b1BlcmNlbnRhZ2UoZmxvYXQgcHJ1bmVQZXJjZW50YWdlKTsgLy8gUHJ1bmUgdG8gJSBjdXJyZW50
IHNpemUKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBldmljdChDYWNo
ZWRSZXNvdXJjZSopOwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yUmVxdWVzdElt
cGwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2VNYXAmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZU1hcCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVl
c3RGcm9tU2Vzc2lvbkNhY2hlc0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVz
dEZyb21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+LCBTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Db250cm9sbGVyLmgKaW5kZXggNzhhMDBkNGZlYTY2Y2MxZGE3NWE4MWExM2Y3
YTM4OGExYzk1OTMwYi4uY2IwZTA5OTU0YjE5MTNkNzgyNDg4ZTg3ODYzZjRkYzZlNGQ0MGU5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uQ29udHJvbGxlcihGcmFtZSYpOwog
ICAgIH5JY29uQ29udHJvbGxlcigpOwogCi0gICAgVVJMIHVybCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCB1cmwoKTsKICAgICBJY29uVVJMcyB1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01h
c2spOwogICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggNTcxMzQ3NzkwZjA1MTQ0NTliM2I5
Y2FmNDhiYzQzNTIyMzE4MzI2Zi4uOTEwNzBjODBiMjI4NjBmNGEzODRlZmY1Njk3NTMzNDc5YmJi
YWEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTY3
LDQ2ICs2Nyw0NiBAQCBjbGFzcyBJY29uRGF0YWJhc2UgZmluYWwgOiBwdWJsaWMgSWNvbkRhdGFi
YXNlQmFzZSB7CiAgICAgCiAvLyAqKiogTWFpbiBUaHJlYWQgT25seSAqKioKIHB1YmxpYzoKLSAg
ICBJY29uRGF0YWJhc2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJY29uRGF0YWJhc2UoKTsKICAg
ICB+SWNvbkRhdGFiYXNlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEljb25EYXRh
YmFzZUNsaWVudCopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZXRDbGllbnQoSWNvbkRhdGFiYXNlQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgb3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogICAgICAgICAgICAgCi0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFsbEljb25zKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlbW92ZUFsbEljb25zKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlYWRJY29uRm9yUGFnZVVS
TEZyb21EaXNrKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVhbCBJbWFnZSogZGVmYXVsdElj
b24oY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
SW1hZ2UqIGRlZmF1bHRJY29uKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCByZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEljb25EYXRh
Rm9ySWNvblVSTChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEljb25VUkxGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRy
IHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3Jp
Z2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25z
dCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25V
UkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBp
c0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKGJvb2wgZmxhZykgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBmbGFnKSBvdmVycmlk
ZTsKICAgICBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIHZvaWQgZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKLSAgICBzdGF0aWMgdm9pZCBhbGxvd0Rh
dGFiYXNlQ2xlYW51cCgpOwotICAgIHN0YXRpYyB2b2lkIGNoZWNrSW50ZWdyaXR5QmVmb3JlT3Bl
bmluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlbGF5RGF0YWJhc2VDbGVh
bnVwKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgYWxsb3dEYXRhYmFzZUNsZWFu
dXAoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjaGVja0ludGVncml0eUJlZm9y
ZU9wZW5pbmcoKTsKIAogICAgIC8vIFN1cHBvcnQgZm9yIFdlYkNvcmVTdGF0aXN0aWNzIGluIFdl
YktpdAotICAgIHZpcnR1YWwgc2l6ZV90IHBhZ2VVUkxNYXBwaW5nQ291bnQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHNpemVfdCByZXRhaW5lZFBhZ2VVUkxDb3VudCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgc2l6ZV90IGljb25SZWNvcmRDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
c2l6ZV90IGljb25SZWNvcmRDb3VudFdpdGhEYXRhKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCBzaXplX3QgcGFnZVVSTE1hcHBpbmdDb3VudCgpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgc2l6ZV90IHJldGFpbmVkUGFnZVVSTENvdW50KCkgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBzaXplX3QgaWNvblJlY29yZENvdW50
KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBzaXplX3QgaWNvblJlY29y
ZENvdW50V2l0aERhdGEoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgSWNvbkRh
dGFiYXNlQmFzZSYgaWNvbkRhdGFiYXNlKCk7CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCBwcml2YXRl
OgogCiAvLyAqKiogQW55IFRocmVhZCAqKioKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNP
cGVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGF0YWJhc2VQYXRoKCkgY29uc3Q7Ci0g
ICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCBpc09wZW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFN0cmluZyBkYXRhYmFzZVBhdGgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCk7CiAKIHByaXZhdGU6CiAgICAg
UGFzc1JlZlB0cjxJY29uUmVjb3JkPiBnZXRPckNyZWF0ZUljb25SZWNvcmQoY29uc3QgU3RyaW5n
JiBpY29uVVJMKTsKICAgICBQYWdlVVJMUmVjb3JkKiBnZXRPckNyZWF0ZVBhZ2VVUkxSZWNvcmQo
Y29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKICAgICAKLSAgICBib29sIG1faXNFbmFibGVkOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbV9pc0VuYWJsZWQ7CiAgICAgYm9vbCBtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQ7CiAKICAgICBtdXRhYmxlIE11dGV4IG1fc3luY0xvY2s7CkBAIC0xNzgsNyAr
MTc4LDcgQEAgcHJpdmF0ZToKIAogLy8gKioqIFN5bmMgVGhyZWFkIE9ubHkgKioqCiBwdWJsaWM6
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSBj
b25zdDsKIAogcHJpdmF0ZTogICAgCiAgICAgc3RhdGljIHZvaWQgaWNvbkRhdGFiYXNlU3luY1Ro
cmVhZFN0YXJ0KHZvaWQgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmgKaW5kZXggZjI4OTU3NzQ3YWI1YWRjNzlhNGUyYjUxNDBmZTc0NWQ0M2FiZjAw
NC4uNGM5ZWExYjU4YjNjMjMxM2FhMGYxNDI2NzdhOWNlYTgzNTdmZTk4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc1LDcgKzE3NSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFN5bmNocm9ub3VzIGNhbGxzIHVzZWQgaW50ZXJuYWxseSBi
eSBXZWJDb3JlLgogICAgIC8vIFVzYWdlIHNob3VsZCBiZSByZXBsYWNlZCBieSBhc3luY2hyb25v
dXMgY2FsbHMuCi0gICAgdmlydHVhbCBTdHJpbmcgc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9v
bCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0
dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9CkBAIC0y
MDAsNyArMjAwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BUaHJl
YWRBY3Rpdml0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBv
cGVuKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEljb25zKCkgeyB9CiAKQEAgLTIwOCw3ICsyMDgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChJY29uRGF0YWJhc2VDbGll
bnQqKSB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNPcGVuKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZVBhdGgoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZVBhdGgoKSBjb25zdDsKIAogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5kZXggMmIxOGM2YzdlMWMzM2Ex
NDYxM2U1NGUyZjk1MmRkMWI2Y2Y4MGVjNy4uYWUzYjk5YmRkY2I2ZjgyOTRjOTMyOGRjMjY5YjYw
MDQ1YzE3ODlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBAIC01Miw3
ICs1Miw3IEBAIGNsYXNzIEZvY3VzTmF2aWdhdGlvblNjb3BlIHsKIHB1YmxpYzoKICAgICBDb250
YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0OwogICAgIEVsZW1lbnQqIG93bmVyKCkgY29uc3Q7
Ci0gICAgc3RhdGljIEZvY3VzTmF2aWdhdGlvblNjb3BlIGZvY3VzTmF2aWdhdGlvblNjb3BlT2Yo
Tm9kZSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGb2N1c05hdmlnYXRpb25TY29wZSBm
b2N1c05hdmlnYXRpb25TY29wZU9mKE5vZGUqKTsKICAgICBzdGF0aWMgRm9jdXNOYXZpZ2F0aW9u
U2NvcGUgZm9jdXNOYXZpZ2F0aW9uU2NvcGVPd25lZEJ5U2hhZG93SG9zdChOb2RlKik7CiAgICAg
c3RhdGljIEZvY3VzTmF2aWdhdGlvblNjb3BlIGZvY3VzTmF2aWdhdGlvblNjb3BlT3duZWRCeUlG
cmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKIApAQCAtNjYsMjggKzY2LDI4IEBAIGNsYXNz
IEZvY3VzQ29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRm9jdXNDb250cm9sbGVy
KFBhZ2UmLCBWaWV3U3RhdGU6OkZsYWdzKTsKIAotICAgIHZvaWQgc2V0Rm9jdXNlZEZyYW1lKFBh
c3NSZWZQdHI8RnJhbWU+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZvY3VzZWRGcmFt
ZShQYXNzUmVmUHRyPEZyYW1lPik7CiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9jdXNlZEZyYW1lLmdldCgpOyB9Ci0gICAgRnJhbWUmIGZvY3VzZWRPck1haW5G
cmFtZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lJiBmb2N1c2VkT3JNYWluRnJh
bWUoKSBjb25zdDsKIAotICAgIGJvb2wgc2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRJbml0aWFsRm9jdXMo
Rm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1cyhG
b2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIGJvb2wgaW5pdGlhbEZvY3VzID0gZmFsc2Up
OwogCi0gICAgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiwgUGFzc1JlZlB0cjxGcmFt
ZT4sIEZvY3VzRGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqLCBQYXNzUmVmUHRyPEZyYW1lPiwg
Rm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOwogCiAgICAgdm9pZCBzZXRWaWV3
U3RhdGUoVmlld1N0YXRlOjpGbGFncyk7CiAKLSAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZl
OyB9CiAKLSAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRGb2N1c2VkKGJvb2wpOwogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzRm9jdXNlZDsgfQogCiAgICAgYm9vbCBjb250ZW50
SXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlz
aWJsZTsgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBpbiBXZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NLm1tLgotICAgIEVsZW1lbnQqIG5leHRGb2N1c2FibGVFbGVtZW50KEZvY3Vz
TmF2aWdhdGlvblNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOwotICAgIEVsZW1l
bnQqIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZSwgTm9kZSog
c3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBuZXh0
Rm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZSwgTm9kZSogc3RhcnQsIEtleWJv
YXJkRXZlbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBwcmV2aW91c0ZvY3VzYWJs
ZUVsZW1lbnQoRm9jdXNOYXZpZ2F0aW9uU2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50
Kik7CiAKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50KCk7CiAgICAgZG91
YmxlIHRpbWVTaW5jZUZvY3VzV2FzU2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNzY4
NTY3OWFjODdlZDM4NDJkZTdkYTBmMGU0NjJlYTcyMGE2NjlmZS4uNmVkZGEzNDIwNzkzMDM4Zjgz
MmQ3YTgzMjNmZjcwYTEzZmFjYTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTE1LDIwICsxMTUs
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxGcmFtZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJD
bGllbnQqKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+
IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQq
KTsKIAogICAgICAgICB2b2lkIGluaXQoKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIC8v
IENyZWF0ZXMgPGh0bWw+PGJvZHkgc3R5bGU9Ii4uLiI+PC9ib2R5PjwvaHRtbD4gZG9pbmcgbWlu
aW1hbCBhbW91bnQgb2Ygd29yay4KLSAgICAgICAgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1
bWVudChjb25zdCBTdHJpbmcmIHN0eWxlLCBjb25zdCBVUkwmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHN0eWxl
LCBjb25zdCBVUkwmKTsKICNlbmRpZgotICAgICAgICB2b2lkIHNldFZpZXcoUGFzc1JlZlB0cjxG
cmFtZVZpZXc+KTsKLSAgICAgICAgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25z
dCBDb2xvciYsIGJvb2wsCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlldyhQYXNz
UmVmUHRyPEZyYW1lVmlldz4pOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZVZp
ZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IENvbG9yJiwgYm9vbCwKICAgICAgICAgICAgIGNvbnN0
IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSA9IEludFNpemUoKSwgY29uc3QgSW50UmVjdCYgZml4
ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBJbnRSZWN0KCksCiAgICAgICAgICAgICBib29sIHVzZUZp
eGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIGhv
cml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgICAgICBTY3JvbGxiYXJNb2RlID0gU2Nyb2xs
YmFyQXV0bywgYm9vbCB2ZXJ0aWNhbExvY2sgPSBmYWxzZSk7CiAKLSAgICAgICAgdmlydHVhbCB+
RnJhbWUoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RnJhbWUoKTsKIAogICAg
ICAgICB2b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlRGVzdHJ1Y3Rpb25PYnNlcnZlcihGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIqKTsKQEAgLTE1NSw3OSArMTU1LDc5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciYgYW5pbWF0aW9uKCkgY29uc3Q7CiAgICAgICAg
IFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdCgpOwogICAgICAgICAKLSAgICAgICAgUmVuZGVyVmll
dyogY29udGVudFJlbmRlcmVyKCkgY29uc3Q7IC8vIFJvb3Qgb2YgdGhlIHJlbmRlciB0cmVlIGZv
ciB0aGUgZG9jdW1lbnQgY29udGFpbmVkIGluIHRoaXMgZnJhbWUuCi0gICAgICAgIFJlbmRlcldp
ZGdldCogb3duZXJSZW5kZXJlcigpIGNvbnN0OyAvLyBSZW5kZXJlciBmb3IgdGhlIGVsZW1lbnQg
dGhhdCBjb250YWlucyB0aGlzIGZyYW1lLgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJW
aWV3KiBjb250ZW50UmVuZGVyZXIoKSBjb25zdDsgLy8gUm9vdCBvZiB0aGUgcmVuZGVyIHRyZWUg
Zm9yIHRoZSBkb2N1bWVudCBjb250YWluZWQgaW4gdGhpcyBmcmFtZS4KKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgUmVuZGVyV2lkZ2V0KiBvd25lclJlbmRlcmVyKCkgY29uc3Q7IC8vIFJlbmRlcmVy
IGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoaXMgZnJhbWUuCiAKICAgICAvLyA9PT09
PT09PSBBbGwgcHVibGljIGZ1bmN0aW9ucyBiZWxvdyB0aGlzIHBvaW50IGFyZSBjYW5kaWRhdGVz
IHRvIG1vdmUgb3V0IG9mIEZyYW1lIGludG8gYW5vdGhlciBjbGFzcy4gPT09PT09PT0KIAogICAg
ICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKICAg
ICAgICAgCi0gICAgICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgPSAw
KSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25z
dDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRy
ZWVGbGFncyA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdHJhY2tl
ZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBGcmFtZSogZnJh
bWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Kik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0Kik7CiAKICAgICAgICAgU2V0dGlu
Z3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGluZ3M7IH0KIAogICAgICAgICB2
b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1Jh
dGlvLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICAgICAgYm9vbCBzaG91bGRVc2VQcmludGlu
Z0xheW91dCgpIGNvbnN0OwotICAgICAgICBGbG9hdFNpemUgcmVzaXplUGFnZVJlY3RzS2VlcGlu
Z1JhdGlvKGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxTaXplLCBjb25zdCBGbG9hdFNpemUmIGV4
cGVjdGVkU2l6ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSByZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW8oY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgZXhwZWN0ZWRTaXplKTsKIAogICAgICAgICB2b2lkIHNldERvY3VtZW50KFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+KTsKIAotICAgICAgICB2b2lkIHNldFBhZ2Vab29tRmFjdG9yKGZsb2F0
IGZhY3Rvcik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFnZVpvb21GYWN0b3Io
ZmxvYXQpOwogICAgICAgICBmbG9hdCBwYWdlWm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVpvb21GYWN0b3I7IH0KLSAgICAgICAgdm9pZCBzZXRUZXh0Wm9vbUZhY3RvcihmbG9hdCBm
YWN0b3IpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRleHRab29tRmFjdG9yKGZs
b2F0KTsKICAgICAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHRab29tRmFjdG9yOyB9Ci0gICAgICAgIHZvaWQgc2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhm
bG9hdCBwYWdlWm9vbUZhY3RvciwgZmxvYXQgdGV4dFpvb21GYWN0b3IpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21G
YWN0b3IsIGZsb2F0IHRleHRab29tRmFjdG9yKTsKIAogICAgICAgICAvLyBTY2FsZSBmYWN0b3Ig
b2YgdGhpcyBmcmFtZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvbnRhaW5lci4KLSAgICAgICAgZmxv
YXQgZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBmbG9h
dCBmcmFtZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBWaWV3cG9y
dEFyZ3VtZW50cyYpOwogCi0gICAgICAgIE5vZGUqIGRlZXBlc3ROb2RlQXRMb2NhdGlvbihjb25z
dCBGbG9hdFBvaW50JiB2aWV3cG9ydExvY2F0aW9uKTsKLSAgICAgICAgTm9kZSogbm9kZVJlc3Bv
bmRpbmdUb0NsaWNrRXZlbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24sIEZs
b2F0UG9pbnQmIGFkanVzdGVkVmlld3BvcnRMb2NhdGlvbik7Ci0gICAgICAgIE5vZGUqIG5vZGVS
ZXNwb25kaW5nVG9TY3JvbGxXaGVlbEV2ZW50cyhjb25zdCBGbG9hdFBvaW50JiB2aWV3cG9ydExv
Y2F0aW9uKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogZGVlcGVzdE5vZGVBdExvY2F0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24pOworICAgICAgICBXRUJDT1JF
X0VYUE9SVCBOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMoY29uc3QgRmxvYXRQb2lu
dCYgdmlld3BvcnRMb2NhdGlvbiwgRmxvYXRQb2ludCYgYWRqdXN0ZWRWaWV3cG9ydExvY2F0aW9u
KTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgTm9kZSogbm9kZVJlc3BvbmRpbmdUb1Njcm9sbFdo
ZWVsRXZlbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24pOwogCiAgICAgICAg
IGludCBpbmRleENvdW50T2ZXb3JkUHJlY2VkaW5nU2VsZWN0aW9uKE5TU3RyaW5nKiB3b3JkKSBj
b25zdDsKLSAgICAgICAgTlNBcnJheSogd29yZHNJbkN1cnJlbnRQYXJhZ3JhcGgoKSBjb25zdDsK
LSAgICAgICAgQ0dSZWN0IHJlbmRlclJlY3RGb3JQb2ludChDR1BvaW50LCBib29sKiBpc1JlcGxh
Y2VkLCBmbG9hdCogZm9udFNpemUpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBOU0Fy
cmF5KiB3b3Jkc0luQ3VycmVudFBhcmFncmFwaCgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VY
UE9SVCBDR1JlY3QgcmVuZGVyUmVjdEZvclBvaW50KENHUG9pbnQsIGJvb2wqIGlzUmVwbGFjZWQs
IGZsb2F0KiBmb250U2l6ZSkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25DaGFu
Z2VDYWxsYmFja3NEaXNhYmxlZChib29sID0gdHJ1ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQoYm9vbCA9IHRydWUpOwog
ICAgICAgICBib29sIHNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkgY29uc3Q7CiAK
ICAgICAgICAgZW51bSBWaWV3cG9ydE9mZnNldENoYW5nZVR5cGUgeyBJbmNyZW1lbnRhbFNjcm9s
bE9mZnNldCwgQ29tcGxldGVkU2Nyb2xsT2Zmc2V0IH07Ci0gICAgICAgIHZvaWQgdmlld3BvcnRP
ZmZzZXRDaGFuZ2VkKFZpZXdwb3J0T2Zmc2V0Q2hhbmdlVHlwZSk7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdmlld3BvcnRPZmZzZXRDaGFuZ2VkKFZpZXdwb3J0T2Zmc2V0Q2hhbmdlVHlw
ZSk7CiAgICAgICAgIGJvb2wgY29udGFpbnNUaWxlZEJhY2tpbmdMYXllcnMoKSBjb25zdDsKIAot
ICAgICAgICB2b2lkIG92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShjb25zdCBJ
bnRQb2ludCYsIE5vZGUqLCBib29sIGlzVXNlclNjcm9sbCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKGNvbnN0IEludFBv
aW50JiwgTm9kZSosIGJvb2wgaXNVc2VyU2Nyb2xsKTsKIAotICAgICAgICB2b2lkIHJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVz
ZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9SSUVO
VEFUSU9OX0VWRU5UUykKICAgICAgICAgLy8gT3JpZW50YXRpb24gaXMgdGhlIGludGVyZmFjZSBv
cmllbnRhdGlvbiBpbiBkZWdyZWVzLiBTb21lIGV4YW1wbGVzIGFyZToKICAgICAgICAgLy8gIDAg
aXMgc3RyYWlnaHQgdXA7IC05MCBpcyB3aGVuIHRoZSBkZXZpY2UgaXMgcm90YXRlZCA5MCBjbG9j
a3dpc2U7CiAgICAgICAgIC8vICA5MCBpcyB3aGVuIHJvdGF0ZWQgY291bnRlciBjbG9ja3dpc2Uu
Ci0gICAgICAgIHZvaWQgb3JpZW50YXRpb25DaGFuZ2VkKCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgb3JpZW50YXRpb25DaGFuZ2VkKCk7CiAgICAgICAgIGludCBvcmllbnRhdGlvbigp
IGNvbnN0OwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBjbGVhclRpbWVycygpOwogICAgICAgICBz
dGF0aWMgdm9pZCBjbGVhclRpbWVycyhGcmFtZVZpZXcqLCBEb2N1bWVudCopOwogCi0gICAgICAg
IFN0cmluZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVk
QnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgICAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7Ci0gICAgICAgIFBhc3NS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNv
bnN0IEludFBvaW50JiBmcmFtZVBvaW50KTsKIAotICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFi
ZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBIVE1MVGFi
bGVDZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKGNv
bnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBIVE1MVGFibGVDZWxsRWxlbWVudCos
IHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOwogICAgICAgICBTdHJpbmcg
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxz
LCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxB
Ym92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIApAQCAtMjM1LDI3ICsyMzUsMjcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTY3JvbGwgdGhlIHNlbGVjdGlvbiBpbiBh
biBvdmVyZmxvdyBsYXllciBvbiBpT1MuCiAgICAgICAgIHZvaWQgc2Nyb2xsT3ZlcmZsb3dMYXll
cihSZW5kZXJMYXllciogLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVj
dCYgZXhwb3NlUmVjdCk7CiAKLSAgICAgICAgaW50IHByZWZlcnJlZEhlaWdodCgpIGNvbnN0Owot
ICAgICAgICBpbnQgaW5uZXJMaW5lSGVpZ2h0KERPTU5vZGUqKSBjb25zdDsKLSAgICAgICAgdm9p
ZCB1cGRhdGVMYXlvdXQoKSBjb25zdDsKLSAgICAgICAgTlNSZWN0IGNhcmV0UmVjdCgpIGNvbnN0
OwotICAgICAgICBOU1JlY3QgcmVjdEZvclNjcm9sbFRvVmlzaWJsZSgpIGNvbnN0OwotICAgICAg
ICBET01DU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUF0U2VsZWN0aW9uU3RhcnQoKSBjb25zdDsK
LSAgICAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRzQ2hhcmFjdGVyQ291bnQoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRUaW1lcnNQYXVzZWQoYm9vbCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IGludCBwcmVmZXJyZWRIZWlnaHQoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGlubmVyTGluZUhlaWdodChET01Ob2RlKikgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlTGF5b3V0KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIE5TUmVj
dCBjYXJldFJlY3QoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgTlNSZWN0IHJlY3RG
b3JTY3JvbGxUb1Zpc2libGUoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGVBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZvcm1FbGVtZW50c0NoYXJhY3RlckNvdW50KCkgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZXJzUGF1c2VkKGJvb2wpOwog
ICAgICAgICBib29sIHRpbWVyc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXJzUGF1c2Vk
Q291bnQ7IH0KLSAgICAgICAgdm9pZCBkaXNwYXRjaFBhZ2VIaWRlRXZlbnRCZWZvcmVQYXVzZSgp
OwotICAgICAgICB2b2lkIGRpc3BhdGNoUGFnZVNob3dFdmVudEJlZm9yZVJlc3VtZSgpOwotICAg
ICAgICB2b2lkIHNldFJhbmdlZFNlbGVjdGlvbkJhc2VUb0N1cnJlbnRTZWxlY3Rpb24oKTsKLSAg
ICAgICAgdm9pZCBzZXRSYW5nZWRTZWxlY3Rpb25CYXNlVG9DdXJyZW50U2VsZWN0aW9uU3RhcnQo
KTsKLSAgICAgICAgdm9pZCBzZXRSYW5nZWRTZWxlY3Rpb25CYXNlVG9DdXJyZW50U2VsZWN0aW9u
RW5kKCk7Ci0gICAgICAgIHZvaWQgY2xlYXJSYW5nZWRTZWxlY3Rpb25Jbml0aWFsRXh0ZW50KCk7
Ci0gICAgICAgIHZvaWQgc2V0UmFuZ2VkU2VsZWN0aW9uSW5pdGlhbEV4dGVudFRvQ3VycmVudFNl
bGVjdGlvblN0YXJ0KCk7Ci0gICAgICAgIHZvaWQgc2V0UmFuZ2VkU2VsZWN0aW9uSW5pdGlhbEV4
dGVudFRvQ3VycmVudFNlbGVjdGlvbkVuZCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpc3BhdGNoUGFnZUhpZGVFdmVudEJlZm9yZVBhdXNlKCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlzcGF0Y2hQYWdlU2hvd0V2ZW50QmVmb3JlUmVzdW1lKCk7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UmFuZ2VkU2VsZWN0aW9uQmFzZVRvQ3VycmVudFNlbGVjdGlv
bigpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJhbmdlZFNlbGVjdGlvbkJhc2VU
b0N1cnJlbnRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFJhbmdlZFNlbGVjdGlvbkJhc2VUb0N1cnJlbnRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhclJhbmdlZFNlbGVjdGlvbkluaXRpYWxFeHRlbnQoKTsKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSYW5nZWRTZWxlY3Rpb25Jbml0aWFsRXh0ZW50
VG9DdXJyZW50U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRSYW5nZWRTZWxlY3Rpb25Jbml0aWFsRXh0ZW50VG9DdXJyZW50U2VsZWN0aW9uRW5kKCk7CiAg
ICAgICAgIFZpc2libGVTZWxlY3Rpb24gcmFuZ2VkU2VsZWN0aW9uQmFzZSgpIGNvbnN0OwotICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHJhbmdlZFNlbGVjdGlvbkluaXRpYWxFeHRlbnQoKSBjb25z
dDsKLSAgICAgICAgdm9pZCByZWN1cnNpdmVTZXRVcGRhdGVBcHBlYXJhbmNlRW5hYmxlZChib29s
KTsKLSAgICAgICAgTlNBcnJheSogaW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25z
dDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbiByYW5nZWRTZWxlY3Rp
b25Jbml0aWFsRXh0ZW50KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVj
dXJzaXZlU2V0VXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQoYm9vbCk7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIE5TQXJyYXkqIGludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3Q7CiAj
ZW5kaWYKICAgICAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KTsKICAgICAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgKaW5kZXgg
MDk0YjUyMWYzM2Y0MTM4Y2QyNGUyMzhlNzkxY2JiYjE1NGFhZDRhMC4uOTA0ODhkOWU5NjczNDFh
MTM4MTc1MGM2M2YzNDdjOTgyYmYwNjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oCkBAIC0zNCwxNiArMzQsMTYgQEAgY2xhc3MgRnJhbWU7
CiAKIGNsYXNzIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9URVNUSU5HIGV4cGxpY2l0IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihGcmFtZSopOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihGcmFtZSop
OwogCi0gICAgV0VCQ09SRV9URVNUSU5HIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpOwot
ICAgIFdFQkNPUkVfVEVTVElORyB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVf
VEVTVElORyB2aXJ0dWFsIH5GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKLSAgICBXRUJDT1JF
X1RFU1RJTkcgdm9pZCBvYnNlcnZlRnJhbWUoRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG9ic2VydmVGcmFtZShGcmFtZSopOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggOGJiMmRlYzhmODJhZTQzNDJjYTdmZjlmYjIyODQ2ZmQ3
Y2E1MmRjNS4uYzU0ZjQ3ZDliNjRlZDQ1NTdhMDU2Y2VmNjVhMmMwNTc3MzM4OWE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC00NSw5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1bmlxdWVOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVOYW1lOyB9Ci0gICAgICAgIHZvaWQgc2V0TmFtZShjb25zdCBBdG9taWNT
dHJpbmcmKTsKLSAgICAgICAgdm9pZCBjbGVhck5hbWUoKTsKLSAgICAgICAgRnJhbWUqIHBhcmVu
dCgpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJOYW1lKCk7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBwYXJlbnQoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRQYXJlbnQoRnJhbWUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogICAgICAg
ICAKICAgICAgICAgRnJhbWUqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2li
bGluZy5nZXQoKTsgfQpAQCAtNTUsMjQgKzU1LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRnJhbWUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQuZ2V0
KCk7IH0KICAgICAgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENo
aWxkOyB9CiAKLSAgICAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25zdCBGcmFtZSogYW5jZXN0
b3IpIGNvbnN0OwotICAgICAgICBGcmFtZSogdHJhdmVyc2VOZXh0KGNvbnN0IEZyYW1lKiBzdGF5
V2l0aGluID0gMCkgY29uc3Q7Ci0gICAgICAgIEZyYW1lKiB0cmF2ZXJzZU5leHRXaXRoV3JhcChi
b29sKSBjb25zdDsKLSAgICAgICAgRnJhbWUqIHRyYXZlcnNlUHJldmlvdXNXaXRoV3JhcChib29s
KSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Rlc2NlbmRhbnRPZihjb25z
dCBGcmFtZSogYW5jZXN0b3IpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSog
dHJhdmVyc2VOZXh0KGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluID0gMCkgY29uc3Q7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIEZyYW1lKiB0cmF2ZXJzZU5leHRXaXRoV3JhcChib29sKSBjb25zdDsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIHRyYXZlcnNlUHJldmlvdXNXaXRoV3JhcChi
b29sKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0
cjxGcmFtZT4pOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZENoaWxkKFBhc3NS
ZWZQdHI8RnJhbWU+KTsKICAgICAgICAgYm9vbCB0cmFuc2ZlckNoaWxkKFBhc3NSZWZQdHI8RnJh
bWU+KTsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBtX3BhcmVudCA9IDA7IH0K
ICAgICAgICAgdm9pZCByZW1vdmVDaGlsZChGcmFtZSopOwogCiAgICAgICAgIEZyYW1lKiBjaGls
ZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGlsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgICAgICBGcmFtZSogZmluZChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0OwotICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50KCkgY29uc3Q7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNoaWxkQ291bnQo
KSBjb25zdDsKIAogICAgICAgICBBdG9taWNTdHJpbmcgdW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3Q7CiAKLSAgICAgICAgRnJhbWUmIHRvcCgp
IGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSYgdG9wKCkgY29uc3Q7CiAKICAg
ICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICAgICAg
RnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAxNzg5NDcyZTI2NWEyZmE4YTYzMzEyMWRmZjkyMTFkNGUx
ZTA4NzIxLi5mM2M3MGU3N2MxMjZiODc2MWMwMWYyNGE0OTgwOTI0NWZmN2JlY2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAgICAgZnJpZW5k
IGNsYXNzIFJlbmRlclZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIEludGVybmFsczsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZyYW1lVmlldz4gY3JlYXRlKEZyYW1lJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWVWaWV3PiBjcmVhdGUoRnJhbWUmKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGcmFtZVZpZXc+IGNyZWF0ZShGcmFtZSYsIGNvbnN0IEludFNpemUm
IGluaXRpYWxTaXplKTsKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCiAgICAgdmlydHVh
bCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBGcmFtZSYgZnJhbWUoKSBjb25zdCB7IHJldHVybiAq
bV9mcmFtZTsgfQogCi0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldygpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdDsKIAogICAgIGludCBt
YXBGcm9tTGF5b3V0VG9DU1NVbml0cyhMYXlvdXRVbml0KSBjb25zdDsKICAgICBMYXlvdXRVbml0
IG1hcEZyb21DU1NUb0xheW91dFVuaXRzKGludCkgY29uc3Q7CkBAIC05Myw4ICs5Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1hcmdpbldpZHRoKExheW91dFVuaXQpOwogICAgIHZvaWQgc2V0
TWFyZ2luSGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldENhbkhhdmVT
Y3JvbGxiYXJzKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQ2FuSGF2ZVNjcm9sbGJh
cnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJh
cnMoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDYW5IYXZl
U2Nyb2xsYmFycygpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRl
U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKIApAQCAtMTAzLDcgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0g
dHJ1ZSk7Ci0gICAgYm9vbCBkaWRGaXJzdExheW91dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25zdDsKICAgICB2b2lkIGxheW91dFRpbWVyRmly
ZWQoVGltZXI8RnJhbWVWaWV3PiYpOwogICAgIHZvaWQgc2NoZWR1bGVSZWxheW91dCgpOwogICAg
IHZvaWQgc2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5kZXJFbGVtZW50Jik7CkBAIC0xMTUs
MzEgKzExNSwzMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5
b3V0Um9vdCA9IG51bGxwdHI7IH0KICAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2xheW91dENvdW50OyB9CiAKLSAgICBib29sIG5lZWRzTGF5b3V0KCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXROZWVkc0xheW91dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNMYXlv
dXQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5lZWRzTGF5b3V0KCk7CiAg
ICAgdm9pZCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKIAogICAg
IGJvb2wgbmVlZHNGdWxsUmVwYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGdWxsUmVwYWlu
dDsgfQogCi0gICAgYm9vbCByZW5kZXJlZENoYXJhY3RlcnNFeGNlZWQodW5zaWduZWQgdGhyZXNo
b2xkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbmRlcmVkQ2hhcmFjdGVyc0V4Y2VlZCh1
bnNpZ25lZCB0aHJlc2hvbGQpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgdXNlQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3VzZUN1c3RvbUZp
eGVkUG9zaXRpb25MYXlvdXRSZWN0OyB9CiAgICAgSW50UmVjdCBjdXN0b21GaXhlZFBvc2l0aW9u
TGF5b3V0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3Q7IH0KLSAgICB2b2lkIHNldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KGNvbnN0IElu
dFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHVwZGF0ZUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0KCk7CiAKICAgICBJbnRTaXplIGN1c3RvbVNpemVGb3JSZXNpemVFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50OyB9Ci0gICAgdm9pZCBzZXRD
dXN0b21TaXplRm9yUmVzaXplRXZlbnQoSW50U2l6ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDdXN0b21TaXplRm9yUmVzaXplRXZlbnQoSW50U2l6ZSk7CiAKLSAgICB2b2lkIHNldFNj
cm9sbFZlbG9jaXR5KGRvdWJsZSBob3Jpem9udGFsVmVsb2NpdHksIGRvdWJsZSB2ZXJ0aWNhbFZl
bG9jaXR5LCBkb3VibGUgc2NhbGVDaGFuZ2VSYXRlLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbFZlbG9jaXR5KGRvdWJsZSBob3Jpem9udGFsVmVs
b2NpdHksIGRvdWJsZSB2ZXJ0aWNhbFZlbG9jaXR5LCBkb3VibGUgc2NhbGVDaGFuZ2VSYXRlLCBk
b3VibGUgdGltZXN0YW1wKTsKICAgICBGbG9hdFJlY3QgY29tcHV0ZUNvdmVyYWdlUmVjdChkb3Vi
bGUgaG9yaXpvbnRhbE1hcmdpbiwgZG91YmxlIHZlcnRpY2FsTWFyZ2luKSBjb25zdDsKICNlbHNl
CiAgICAgYm9vbCB1c2VDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKLSAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0Fu
aW1hdGlvblN0YXJ0VGltZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2aWNlU2NyaXB0
ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUpOwogI2VuZGlm
CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTdHlsZUNoYW5nZSgpOwpA
QCAtMTUzLDEwICsxNTMsMTAgQEAgcHVibGljOgogICAgIC8vIGNvbnRlbnQgcmVuZGVyZWQgdmlh
IHRoZSBub3JtYWwgcGFpbnRpbmcgcGF0aC4KICAgICB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKTsKIAotICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXJG
b3JQbGF0Zm9ybVdpZGdldChQbGF0Zm9ybVdpZGdldCk7Ci0gICAgdm9pZCBzY2hlZHVsZUxheWVy
Rmx1c2hBbGxvd2luZ1Rocm90dGxpbmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoQWxsb3dpbmdUaHJvdHRsaW5n
KCk7CiAKLSAgICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFj
a2luZygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIGFueSBT
Y3JvbGxhYmxlQXJlYSBjYW4gaGF2ZSBhIG5vZGUgaW4gdGggU2Nyb2xsaW5nVHJlZSwgdGhpcyBz
aG91bGQKICAgICAvLyBiZWNvbWUgYSB2aXJ0dWFsIGZ1bmN0aW9uIG9uIFNjcm9sbGFibGVBcmVh
LgpAQCAtMTY2LDE2ICsxNjYsMTYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29tcG9zaXRlZENv
bnRlbnQoKSBjb25zdDsKICAgICBib29sIGhhc0NvbXBvc2l0ZWRDb250ZW50SW5jbHVkaW5nRGVz
Y2VuZGFudHMoKSBjb25zdDsKICAgICBib29sIGhhc0NvbXBvc2l0aW5nQW5jZXN0b3IoKSBjb25z
dDsKLSAgICB2b2lkIGVudGVyQ29tcG9zaXRpbmdNb2RlKCk7Ci0gICAgYm9vbCBpc0VuY2xvc2Vk
SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRl
ckNvbXBvc2l0aW5nTW9kZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFbmNsb3NlZElu
Q29tcG9zaXRpbmdMYXllcigpIGNvbnN0OwogCiAgICAgLy8gT25seSB1c2VkIHdpdGggYWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcsIGJ1dCBvdXRzaWRlIHRoZSAjaWZkZWYgdG8gbWFrZSBsaW5rYWdl
IGVhc2llci4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZsdXNoIHdhcyBjb21wbGV0ZWQu
Ci0gICAgYm9vbCBmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZy
YW1lcygpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIHdoZW4gYSBwYWludCB3aXRoIHRoZSBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIGZsYWcgc2V0IGdpdmVzCiAgICAgLy8g
YSBmYWl0aGZ1bCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udGVudC4KLSAgICBib29sIGlzU29m
dHdhcmVSZW5kZXJhYmxlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1NvZnR3
YXJlUmVuZGVyYWJsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRNb3ZlT25zY3JlZW4oKTsKICAg
ICB2b2lkIHdpbGxNb3ZlT2Zmc2NyZWVuKCk7CkBAIC0xODksMTQgKzE4OSwxNCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdDsK
LSAgICB2b2lkIHNldFRyYW5zcGFyZW50KGJvb2wgaXNUcmFuc3BhcmVudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRUcmFuc3BhcmVudChib29sIGlzVHJhbnNwYXJlbnQpOwogICAgIAogICAgIC8vIFRy
dWUgaWYgdGhlIEZyYW1lVmlldyBpcyBub3QgdHJhbnNwYXJlbnQsIGFuZCB0aGUgYmFzZSBiYWNr
Z3JvdW5kIGNvbG9yIGlzIG9wYXF1ZS4KICAgICBib29sIGhhc09wYXF1ZUJhY2tncm91bmQoKSBj
b25zdDsKIAotICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2b2lk
IHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCB1cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgQ29sb3ImLCBib29sKTsKIAogICAgIGVudW0g
RXh0ZW5kZWRCYWNrZ3JvdW5kTW9kZUZsYWdzIHsKQEAgLTIxNSwxNiArMjE1LDE2IEBAIHB1Ymxp
YzoKICAgICBJbnRSZWN0IGV4dGVuZGVkQmFja2dyb3VuZFJlY3RGb3JQYWludGluZygpIGNvbnN0
OwogCiAgICAgYm9vbCBzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbigpIGNvbnN0OwotICAgIHZv
aWQgc2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4oYm9vbCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbihib29sKTsKICAgICBib29sIHNo
b3VsZFVwZGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGp1c3RWaWV3U2l6ZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0Vmlld1NpemUoKTsKICAgICAKLSAgICB2b2lkIHNldFZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKEludFNpemUpOwogICAg
IEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0OwogICAgIAog
ICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdChib29sIGNsaXBUb0NvbnRlbnRzID0g
dHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckZyYW1l
T3duZXIoY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgYm9vbCBjbGlwVG9MYXllckNvbnRl
bnRzKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0Rm9y
RnJhbWVPd25lcihjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBib29sIGNsaXBUb0xheWVy
Q29udGVudHMpIGNvbnN0OwogCiAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTIzMywxNCArMjMzLDE0IEBAIHB1YmxpYzoKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldChjb25zdCBJbnRQb2lu
dCYgb2xkUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBuZXdQb3NpdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRW
aWFQbGF0Zm9ybVdpZGdldChjb25zdCBJbnRQb2ludCYgb2xkUG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBuZXdQb3NpdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25z
QWZ0ZXJTY3JvbGxpbmcoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9z
aXRpbmdMYXllcnNBZnRlclNjcm9sbGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBy
ZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
SW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkZWxheWVkU2Nyb2xsRXZlbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4mKTsKIAogICAg
IHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOwpA
QCAtMjUwLDcgKzI1MCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IHZpZXdwb3J0Q29uc3Ry
YWluZWRWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKIAogICAgIFN0cmluZyBtZWRpYVR5cGUo
KSBjb25zdDsKLSAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFk
anVzdE1lZGlhVHlwZUZvclByaW50aW5nKGJvb2wgcHJpbnRpbmcpOwogCiAgICAgdm9pZCBzZXRD
YW5ub3RCbGl0VG9XaW5kb3coKTsKQEAgLTI4MCwzMyArMjgwLDMzIEBAIHB1YmxpYzoKICAgICAv
LyBUaGVzZSBsYXllcnMgYXJlIHBvc2l0aW9uZWQgZGlmZmVyZW50bHkgd2hlbiB0aGVyZSBpcyBh
IHRvcENvbnRlbnRJbnNldCwgYSBoZWFkZXIsIG9yIGEgZm9vdGVyLiBUaGVzZSB2YWx1ZSBuZWVk
IHRvIGJlIGNvbXB1dGVkCiAgICAgLy8gb24gYm90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSBz
Y3JvbGxpbmcgdGhyZWFkLgogICAgIHN0YXRpYyBmbG9hdCB5UG9zaXRpb25Gb3JJbnNldENsaXBM
YXllcihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgdG9wQ29udGVudElu
c2V0KTsKLSAgICBzdGF0aWMgZmxvYXQgeVBvc2l0aW9uRm9yUm9vdENvbnRlbnRMYXllcihjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgdG9wQ29udGVudEluc2V0LCBmbG9h
dCBoZWFkZXJIZWlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCB5UG9zaXRp
b25Gb3JSb290Q29udGVudExheWVyKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBm
bG9hdCB0b3BDb250ZW50SW5zZXQsIGZsb2F0IGhlYWRlckhlaWdodCk7CiAgICAgc3RhdGljIGZs
b2F0IHlQb3NpdGlvbkZvckhlYWRlckxheWVyKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0
aW9uLCBmbG9hdCB0b3BDb250ZW50SW5zZXQpOwogICAgIHN0YXRpYyBmbG9hdCB5UG9zaXRpb25G
b3JGb290ZXJMYXllcihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgZmxvYXQgdG9w
Q29udGVudEluc2V0LCBmbG9hdCB0b3RhbENvbnRlbnRzSGVpZ2h0LCBmbG9hdCBmb290ZXJIZWln
aHQpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIExheW91dFJlY3Qgdmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHNSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgTGF5b3V0UmVjdCB2
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1JlY3QoKSBjb25zdDsKICAgICAvLyBTdGF0aWMgZnVu
Y3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAgIHN0YXRpYyBMYXlv
dXRSZWN0IHJlY3RGb3JWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhjb25zdCBMYXlvdXRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IExheW91dFNpemUmIHRvdGFsQ29udGVudHNTaXpl
LCBmbG9hdCBmcmFtZVNjYWxlRmFjdG9yLCBib29sIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2
ZVRvRnJhbWUsIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIExheW91dFJlY3QgcmVjdEZvclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KGNvbnN0IExheW91dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYg
dG90YWxDb250ZW50c1NpemUsIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IsIGJvb2wgZml4ZWRFbGVt
ZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRz
KTsKICNlbmRpZgogICAgIAogICAgIGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9G
cmFtZSgpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1w
b3JhcmlseUZvckludGVyYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNhYmxl
TGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAgICAgYm9v
bCBzcGVjdWxhdGl2ZVRpbGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZl
VGlsaW5nRW5hYmxlZDsgfQogICAgIHZvaWQgbG9hZFByb2dyZXNzaW5nU3RhdHVzQ2hhbmdlZCgp
OwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHZvaWQgdXBkYXRlQW5ub3Rh
dGVkUmVnaW9ucygpOwogI2VuZGlmCi0gICAgdm9pZCB1cGRhdGVDb250cm9sVGludHMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cygpOwogCiAgICAgdm9pZCBy
ZXN0b3JlU2Nyb2xsYmFyKCk7CiAKICAgICB2b2lkIHBvc3RMYXlvdXRUaW1lckZpcmVkKFRpbWVy
PEZyYW1lVmlldz4mKTsKIAotICAgIGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFdhc1Njcm9sbGVkQnlVc2VyKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgd2FzU2Nyb2xsZWRCeVVzZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFdhc1Njcm9sbGVkQnlVc2VyKGJvb2wpOwogCiAgICAgYm9vbCBzYWZlVG9Qcm9wYWdhdGVTY3Jv
bGxUb1BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJl
bnQ7IH0KICAgICB2b2lkIHNldFNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KGJvb2wgaXNT
YWZlKSB7IG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQgPSBpc1NhZmU7IH0KQEAgLTMx
NCw3ICszMTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRl
KFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAgICAgdm9pZCByZW1vdmVFbWJlZGRlZE9iamVjdFRv
VXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBz
dHJ1Y3QgUGFpbnRpbmdTdGF0ZSB7CiAgICAgICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlv
cjsKQEAgLTMzMSwzOSArMzMxLDM5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdT
dGF0ZSYpOwogICAgIHZvaWQgZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3RhdGUmKTsKIAotICAgIHZvaWQgc2V0UGFp
bnRCZWhhdmlvcihQYWludEJlaGF2aW9yKTsKLSAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
b3IoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhaW50QmVoYXZpb3IoUGFp
bnRCZWhhdmlvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2
aW9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1BhaW50aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNF
dmVyUGFpbnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBhaW50VGltZTsgfQogICAgIHZvaWQg
c2V0TGFzdFBhaW50VGltZShkb3VibGUgbGFzdFBhaW50VGltZSkgeyBtX2xhc3RQYWludFRpbWUg
PSBsYXN0UGFpbnRUaW1lOyB9Ci0gICAgdm9pZCBzZXROb2RlVG9EcmF3KE5vZGUqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVUb0RyYXcoTm9kZSopOwogCiAgICAgZW51bSBTZWxl
Y3Rpb25JblNuYXBzaG90IHsgSW5jbHVkZVNlbGVjdGlvbiwgRXhjbHVkZVNlbGVjdGlvbiB9Owog
ICAgIGVudW0gQ29vcmRpbmF0ZVNwYWNlRm9yU25hcHNob3QgeyBEb2N1bWVudENvb3JkaW5hdGVz
LCBWaWV3Q29vcmRpbmF0ZXMgfTsKLSAgICB2b2lkIHBhaW50Q29udGVudHNGb3JTbmFwc2hvdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNlbGVjdGlvbkluU25h
cHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50Q29udGVudHNGb3JTbmFwc2hvdChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIFNlbGVjdGlvbkluU25hcHNob3Qg
c2hvdWxkUGFpbnRTZWxlY3Rpb24sIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90KTsKIAogICAg
IHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxP
dmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJh
cihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
CiAKLSAgICBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAKICAgICBi
b29sIGlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpIGNvbnN0OwogCiAgICAgc3Rh
dGljIGRvdWJsZSBjdXJyZW50UGFpbnRUaW1lU3RhbXAoKSB7IHJldHVybiBzQ3VycmVudFBhaW50
VGltZVN0YW1wOyB9IC8vIHJldHVybnMgMCBpZiBub3QgcGFpbnRpbmcKICAgICAKLSAgICB2b2lk
IHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAogICAg
IHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eUNoYXJhY3RlckNvdW50KHVuc2lnbmVkKTsK
ICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50KGNvbnN0IEludFNp
emUmKTsKICAgICB2b2lkIHVwZGF0ZUlzVmlzdWFsbHlOb25FbXB0eSgpOwogICAgIGJvb2wgaXNW
aXN1YWxseU5vbkVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc3VhbGx5Tm9uRW1wdHk7IH0K
LSAgICB2b2lkIGVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZSwgY29uc3QgSW50U2l6ZSYg
bWluU2l6ZSwgY29uc3QgSW50U2l6ZSYgbWF4U2l6ZSk7Ci0gICAgdm9pZCBzZXRBdXRvU2l6ZUZp
eGVkTWluaW11bUhlaWdodChpbnQgZml4ZWRNaW5pbXVtSGVpZ2h0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZSwgY29uc3QgSW50U2l6ZSYg
bWluU2l6ZSwgY29uc3QgSW50U2l6ZSYgbWF4U2l6ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBdXRvU2l6ZUZpeGVkTWluaW11bUhlaWdodChpbnQpOwogICAgIEludFNpemUgYXV0b1Np
emluZ0ludHJpbnNpY0NvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvU2l6ZUNvbnRl
bnRTaXplOyB9CiAKLSAgICB2b2lkIGZvcmNlTGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gZmFs
c2UpOwotICAgIHZvaWQgZm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKGNvbnN0IEZsb2F0U2l6ZSYg
cGFnZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11
bVNocmlua0ZhY3RvciwgQWRqdXN0Vmlld1NpemVPck5vdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JjZUxheW91dChib29sIGFsbG93U3VidHJlZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbihjb25zdCBGbG9hdFNpemUmIHBh
Z2VTaXplLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1T
aHJpbmtGYWN0b3IsIEFkanVzdFZpZXdTaXplT3JOb3QpOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
bWV0aG9kIGlzIHJldGFpbmVkIGJlY2F1c2Ugb2YgZW1iZWRkZWQgV2ViVmlld3MgaW4gQXBwS2l0
LiAgV2hlbiBhIFdlYlZpZXcgaXMgZW1iZWRkZWQgaW5zaWRlCiAgICAgLy8gc29tZSBlbmNsb3Np
bmcgdmlldyB3aXRoIGF1dG8tcGFnaW5hdGlvbiwgbm8gY2FsbCBoYXBwZW5zIHRvIHJlc2l6ZSB0
aGUgdmlldy4gIFRoZSBuZXcgcGFnaW5hdGlvbiBtb2RlbApAQCAtMzgxLDE4ICszODEsMTggQEAg
cHVibGljOgogICAgIC8vIGJ1dCB0aGF0IGRvZXNuJ3Qgc29sdmUgdGhlIGdlbmVyYWwgcHJvYmxl
bSBvZiBob3cgb3RoZXIgQXBwS2l0IHZpZXdzIGNvdWxkIG9wdCBpbiB0byB0aGUgYmV0dGVyIG1v
ZGVsLgogICAgIC8vCiAgICAgLy8gTk8gT1RIRVIgUExBVEZPUk0gQkVTSURFUyBNQUMgU0hPVUxE
IFVTRSBUSElTIE1FVEhPRC4KLSAgICB2b2lkIGFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZs
b2F0KiBuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9hdCBib3R0
b21MaW1pdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RQYWdlSGVpZ2h0RGVwcmVj
YXRlZChmbG9hdCogbmV3Qm90dG9tLCBmbG9hdCBvbGRUb3AsIGZsb2F0IG9sZEJvdHRvbSwgZmxv
YXQgYm90dG9tTGltaXQpOwogCiAgICAgYm9vbCBzY3JvbGxUb0ZyYWdtZW50KGNvbnN0IFVSTCYp
OwogICAgIGJvb2wgc2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBtYWlu
dGFpblNjcm9sbFBvc2l0aW9uQXRBbmNob3IoTm9kZSopOwotICAgIHZvaWQgc2Nyb2xsRWxlbWVu
dFRvUmVjdChFbGVtZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAg
Ly8gTWV0aG9kcyB0byBjb252ZXJ0IHBvaW50cyBhbmQgcmVjdHMgYmV0d2VlbiB0aGUgY29vcmRp
bmF0ZSBzcGFjZSBvZiB0aGUgcmVuZGVyZXIsIGFuZCB0aGlzIHZpZXcuCi0gICAgSW50UmVjdCBj
b252ZXJ0RnJvbVJlbmRlcmVyVG9Db250YWluaW5nVmlldyhjb25zdCBSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFJlY3QmKSBjb25z
dDsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVJlbmRlcmVyVG9Db250YWluaW5nVmlldyhjb25z
dCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBJbnRQb2ludCBj
b252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGNvbnZl
cnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25z
dCBJbnRSZWN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50
UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGNvbnZlcnRGcm9tUmVu
ZGVyZXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXdUb1JlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogCiAgICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihSZW5kZXJTY3JvbGxi
YXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNj
cm9sbENvcm5lcjsgfQogCkBAIC00MTMsMTcgKzQxMywxNyBAQCBwdWJsaWM6CiAKICAgICBSZW5k
ZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgc2V0VHJh
Y2tzUmVwYWludHMoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUcmFja3NSZXBh
aW50cyhib29sKTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJu
IG1faXNUcmFja2luZ1JlcGFpbnRzOyB9Ci0gICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50cygp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKICAgICBj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgdHJhY2tlZFJlcGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhY2tlZFJlcGFpbnRSZWN0czsgfQogICAgIFN0cmluZyB0cmFja2VkUmVwYWludFJl
Y3RzQXNUZXh0KCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEq
PiBTY3JvbGxhYmxlQXJlYVNldDsKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHNjcm9sbGFi
bGUgYXJlYSBoYXMganVzdCBiZWVuIG5ld2x5IGFkZGVkLgotICAgIGJvb2wgYWRkU2Nyb2xsYWJs
ZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZFNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBz
Y3JvbGxhYmxlIGFyZWEgaGFzIGp1c3QgYmVlbiByZW1vdmVkLgotICAgIGJvb2wgcmVtb3ZlU2Ny
b2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJl
bW92ZVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CiAgICAgYm9vbCBjb250YWluc1Nj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKikgY29uc3Q7CiAgICAgY29uc3QgU2Nyb2xsYWJs
ZUFyZWFTZXQqIHNjcm9sbGFibGVBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFzLmdldCgpOyB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2UgbmVl
ZCB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3JvbGwgb3Vyc2VsdmVzLgogICAg
IGJvb2wgd2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAotICAgIHZvaWQg
c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7
CiAKICAgICAvLyBQYWdlIGFuZCBGcmFtZVZpZXcgYm90aCBzdG9yZSBhIFBhZ2luYXRpb24gdmFs
dWUuIFBhZ2U6OnBhZ2luYXRpb24oKSBpcyBzZXQgb25seSBieSBBUEksCiAgICAgLy8gYW5kIEZy
YW1lVmlldzo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4gUGFnZTo6cGFnaW5hdGlv
bigpIHdpbGwgYWZmZWN0IGFsbApAQCAtNDU4LDIwICs0NTgsMjAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5j
ZVRlc3RpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykK
LSAgICBHcmFwaGljc0xheWVyKiBzZXRXYW50c0xheWVyRm9yVG9wT3ZlckhhbmdBcmVhKGJvb2wp
IGNvbnN0OwotICAgIEdyYXBoaWNzTGF5ZXIqIHNldFdhbnRzTGF5ZXJGb3JCb3R0b21PdmVySGFu
Z0FyZWEoYm9vbCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2V0
V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJlYShib29sKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0xheWVyKiBzZXRXYW50c0xheWVyRm9yQm90dG9tT3ZlckhhbmdBcmVhKGJv
b2wpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGludCBoZWFkZXJIZWlnaHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQotICAgIHZvaWQgc2V0SGVhZGVy
SGVpZ2h0KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIZWFkZXJIZWlnaHQoaW50
KTsKICAgICB2aXJ0dWFsIGludCBmb290ZXJIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Zvb3RlckhlaWdodDsgfQotICAgIHZvaWQgc2V0Rm9vdGVySGVpZ2h0KGludCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb290ZXJIZWlnaHQoaW50KTsKIAotICAgIHZpcnR1YWwg
ZmxvYXQgdG9wQ29udGVudEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5z
ZXRUeXBlOjpXZWJDb3JlQ29udGVudEluc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIGZsb2F0IHRvcENvbnRlbnRJbnNldChUb3BDb250ZW50SW5zZXRUeXBl
ID0gVG9wQ29udGVudEluc2V0VHlwZTo6V2ViQ29yZUNvbnRlbnRJbnNldCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB0b3BDb250ZW50SW5zZXREaWRDaGFuZ2UoZmxvYXQgbmV3VG9wQ29udGVu
dEluc2V0KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhMYXlvdXRNaWxl
c3RvbmVzKTsKICAgICB2b2lkIGZpcmVQYWludFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsK
QEAgLTQ3OSw5ICs0NzksOSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0TWlsZXN0b25lcyBtaWxlc3Rv
bmVzUGVuZGluZ1BhaW50KCkgY29uc3QgeyByZXR1cm4gbV9taWxlc3RvbmVzUGVuZGluZ1BhaW50
OyB9CiAKICAgICBib29sIHZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQ7IH0KLSAgICB2b2lkIHNldFZpc3Vh
bFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KGJvb2wpOwogCi0gICAgdm9pZCBzZXRTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3Ip
OwogCiAgICAgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIHNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cygpIGNvbnN0OwogCkBAIC00OTUsNyArNDk1LDcgQEAgcHVibGljOgogICAg
IC8vIG9mIHRoZSB2aWV3IGlzIGFjdHVhbGx5IGV4cG9zZWQgb24gc2NyZWVuICh0YWtpbmcgaW50
byBhY2NvdW50CiAgICAgLy8gY2xpcHBpbmcgYnkgb3RoZXIgVUkgZWxlbWVudHMpLCB3aGVyZWFz
IHZpc2libGVDb250ZW50UmVjdCBpcwogICAgIC8vIGludGVybmFsIHRvIFdlYkNvcmUgYW5kIGRv
ZXNuJ3QgcmVzcGVjdCB0aG9zZSB0aGluZ3MuCi0gICAgdm9pZCBzZXRFeHBvc2VkUmVjdChGbG9h
dFJlY3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwb3NlZFJlY3QoRmxvYXRSZWN0
KTsKICAgICBGbG9hdFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2V4cG9zZWRS
ZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNTQ1LDE0ICs1NDUsMTQg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9u
dGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdyk7CiAKLSAgICB2b2lkIHBhaW50Q29u
dHJvbFRpbnRzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRyb2xUaW50cygp
OwogCiAgICAgdm9pZCBmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCgpOwogICAgIHZvaWQg
cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOwogICAgIHZvaWQgYXV0b1NpemVJZkVuYWJsZWQoKTsK
IAogICAgIHZvaWQgdXBkYXRlTGF5ZXJGbHVzaFRocm90dGxpbmcoKTsKLSAgICB2b2lkIGFkanVz
dFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RU
aWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50
UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29u
dGVudHNSZXNpemVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDY1M2EwOTYwMzdiZDJk
ODNmMjUwYmQxOGM4NzgyNGVlMTRkMGI1ODEuLjkxMTA1YTY1NTI0ZGYxOGE3ZmU4MzkzNTc1NzNk
ZGI4MWRmMjdkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBjbGFzcyBQ
YWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+IHsKICAgICBmcmllbmQgY2xhc3MgUGFn
ZVRocm90dGxlcjsKIAogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQWxs
UGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsKLSAgICBzdGF0aWMgdm9pZCBj
bGVhclByZXZpb3VzSXRlbUZyb21BbGxQYWdlcyhIaXN0b3J5SXRlbSopOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5n
ZUluRW52aXJvbm1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhclBy
ZXZpb3VzSXRlbUZyb21BbGxQYWdlcyhIaXN0b3J5SXRlbSopOwogCiAgICAgLy8gSXQgaXMgdXAg
dG8gdGhlIHBsYXRmb3JtIHRvIGVuc3VyZSB0aGF0IG5vbi1udWxsIGNsaWVudHMgYXJlIHByb3Zp
ZGVkIHdoZXJlIHJlcXVpcmVkLgogICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyB0byBQYWdlQ29u
ZmlndXJhdGlvbiBhbmQgbW92ZSBpdCB0byBpdHMgb3duIGNsYXNzLgogICAgIHN0cnVjdCBQYWdl
Q2xpZW50cyB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDbGllbnRzKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBQYWdlQ2xpZW50cygp
OwotICAgICAgICB+UGFnZUNsaWVudHMoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNs
aWVudHMoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgflBhZ2VDbGllbnRzKCk7CiAKICAgICAg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAgICAgICAg
IENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50OwpAQCAtMTQ1LDIxICsxNDUsMjEgQEAgcHVibGlj
OgogICAgICAgICBSZWZQdHI8VmlzaXRlZExpbmtTdG9yZT4gdmlzaXRlZExpbmtTdG9yZTsKICAg
ICB9OwogCi0gICAgZXhwbGljaXQgUGFnZShQYWdlQ2xpZW50cyYpOwotICAgIH5QYWdlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUGFnZShQYWdlQ2xpZW50cyYpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5QYWdlKCk7CiAKLSAgICB1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogCiAgICAgUmVuZGVy
VGhlbWUmIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gKm1fdGhlbWU7IH0KIAotICAgIFZpZXdwb3J0
QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKLSAgICBQbHVnaW5EYXRhJiBwbHVn
aW5EYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUGx1Z2luRGF0YSYgcGx1Z2luRGF0
YSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhKGJvb2wpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FuU3RhcnRNZWRpYShib29sKTsKICAgICBib29sIGNhblN0YXJ0
TWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KIAogICAgIEVkaXRvckNs
aWVudCogZWRpdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQ7IH0KQEAg
LTE3MSwxMCArMTcxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRPcGVuZWRCeURPTSgpOwogCi0gICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5
SXRlbSosIEZyYW1lTG9hZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Ub0l0ZW0o
SGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKIAotICAgIHZvaWQgc2V0R3JvdXBOYW1lKGNv
bnN0IFN0cmluZyYpOwotICAgIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRHcm91cE5hbWUoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBncm91cE5hbWUoKSBjb25zdDsKIAogICAgIFBhZ2VH
cm91cCYgZ3JvdXAoKTsKICAgICBQYWdlR3JvdXAqIGdyb3VwUHRyKCkgeyByZXR1cm4gbV9ncm91
cDsgfSAvLyBjYW4gcmV0dXJuIDAKQEAgLTE4NCw4ICsxODQsOCBAQCBwdWJsaWM6CiAgICAgaW50
IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNoZWNrU3ViZnJhbWVDb3VudENvbnNpc3RlbmN5KCk7
IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25zdDsKLSAgICB2b2lkIHNl
dFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wpOwogICAgIHZvaWQgcmVtb3RlSW5zcGVj
dG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKSBjb25zdDsKICNlbmRpZgogCkBAIC0yMTIsOSArMjEy
LDkgQEAgcHVibGljOgogCiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCk7CiAKLSAgICBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7Ci0gICAg
U3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOwotICAgIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdExpc3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IG5vbkZh
c3RTY3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUqKTsKIAogICAgIFNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jlc3NUcmFja2VyJiBw
cm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CkBAIC0yMzIsMjAgKzIzMiwy
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFZpZXdNb2RlIHN0cmluZ1RvVmlld01vZGUoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBWaWV3TW9kZSB2aWV3TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d01vZGU7IH0KLSAgICB2b2lkIHNldFZpZXdNb2RlKFZpZXdNb2RlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFZpZXdNb2RlKFZpZXdNb2RlKTsKICNlbmRpZiAvLyBFTkFCTEUoVklFV19N
T0RFX0NTU19NRURJQSkKIAogICAgIHZvaWQgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRz
KGJvb2wgYikgeyBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyA9IGI7IH0KICAgICBib29s
IHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzOyB9CiAKLSAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgRmluZE9wdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9m
U3RyaW5nKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9wdGlvbnMpOworICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiwgUmFu
Z2UqLCBGaW5kT3B0aW9ucyk7CiAKLSAgICB1bnNpZ25lZCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0
IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKLSAgICB1bnNp
Z25lZCBtYXJrQWxsTWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGJv
b2wgc2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25l
ZCBtYXJrQWxsTWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGJvb2wg
c2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKIAotICAgIHZvaWQgdW5t
YXJrQWxsVGV4dE1hdGNoZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVubWFya0FsbFRl
eHRNYXRjaGVzKCk7CiAKICAgICAvLyBmaW5kIGFsbCB0aGUgUmFuZ2VzIGZvciB0aGUgbWF0Y2hp
bmcgdGV4dC4KICAgICAvLyBVcG9uIHJldHVybiwgaW5kZXhGb3JTZWxlY3Rpb24gd2lsbCBiZSBv
bmUgb2YgdGhlIGZvbGxvd2luZzoKQEAgLTI1MywzOSArMjUzLDM5IEBAIHB1YmxpYzoKICAgICAv
LyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHJhbmdlIGFmdGVyIHRoZSB1c2VyIHNlbGVjdGlvbgog
ICAgIC8vIE5vTWF0Y2hBZnRlclVzZXJTZWxlY3Rpb24gaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcg
dGV4dCBhZnRlciB0aGUgdXNlciBzZWxlY3Rpb24uCiAgICAgZW51bSB7IE5vTWF0Y2hBZnRlclVz
ZXJTZWxlY3Rpb24gPSAtMSB9OwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNoaW5nUmFuZ2VzKGNv
bnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCBpbnQgbWF4Q291bnQsIFZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiYsIGludCYgaW5kZXhGb3JTZWxlY3Rpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmluZFN0cmluZ01hdGNoaW5nUmFuZ2VzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCBpbnQg
bWF4Q291bnQsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYsIGludCYgaW5kZXhGb3JTZWxlY3Rpb24p
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgYWRkU2NoZWR1bGVQYWlyKFBhc3NSZWZQ
dHI8U2NoZWR1bGVQYWlyPik7Ci0gICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0
cjxTY2hlZHVsZVBhaXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNjaGVkdWxlUGFp
cihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2NoZWR1bGVQYWlyPik7CiAgICAgU2NoZWR1bGVQ
YWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgeyByZXR1cm4gbV9zY2hlZHVsZWRS
dW5Mb29wUGFpcnMuZ2V0KCk7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZVBhaXJI
YXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlyczsKICNlbmRpZgogCi0gICAgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKGJvb2wpOwogICAgIGJvb2wgZGVmZXJzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGVm
ZXJzTG9hZGluZzsgfQogCi0gICAgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAotICAgIGJv
b2wgaW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0SW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZShib29sID0gdHJ1ZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25Nb2RlKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbkxvd1F1YWxpdHlJbWFnZUludGVy
cG9sYXRpb25Nb2RlKGJvb2wgPSB0cnVlKTsKIAogICAgIGZsb2F0IG1lZGlhVm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVZvbHVtZTsgfQotICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxv
YXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogCi0g
ICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBv
cmlnaW4sIGJvb2wgaW5TdGFibGVTdGF0ZSA9IHRydWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2lu
LCBib29sIGluU3RhYmxlU3RhdGUgPSB0cnVlKTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUZhY3RvcjsgfQogCi0gICAgdm9pZCBzZXRab29t
ZWRPdXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Wm9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICBmbG9hdCB6b29tZWRPdXRQYWdl
U2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3pvb21lZE91dFBhZ2VTY2FsZUZhY3Rvcjsg
fQogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVNjYWxlRmFjdG9yOyB9Ci0gICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAKICAg
ICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJbnNl
dDsgfQotICAgIHZvaWQgc2V0VG9wQ29udGVudEluc2V0KGZsb2F0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CiAgICAgCiAjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCiAgICAgZmxvYXQgdGV4dEF1dG9zaXppbmdXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dEF1dG9zaXppbmdXaWR0aDsgfQpAQCAtMjkzLDEzICsyOTMsMTMgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBzaG91bGRTdXBwcmVzc1Njcm9sbGJhckFu
aW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsg
fQotICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3Vw
cHJlc3NBbmltYXRpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9ucyk7CiAgICAgdm9p
ZCBsb2NrQWxsT3ZlcmxheVNjcm9sbGJhcnNUb0hpZGRlbihib29sIGxvY2tPdmVybGF5U2Nyb2xs
YmFycyk7CiAgICAgCi0gICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xs
RWxhc3RpY2l0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbEVs
YXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSk7CiAgICAgU2Nyb2xsRWxhc3RpY2l0eSB2ZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTY3JvbGxFbGFz
dGljaXR5PihtX3ZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSk7IH0KIAotICAgIHZvaWQgc2V0SG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkoU2Nyb2xsRWxhc3RpY2l0eSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eShTY3JvbGxFbGFzdGljaXR5
KTsKICAgICBTY3JvbGxFbGFzdGljaXR5IGhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsRWxhc3RpY2l0eT4obV9ob3Jpem9udGFsU2Ny
b2xsRWxhc3RpY2l0eSk7IH0KICAgICAKICAgICAvLyBQYWdlIGFuZCBGcmFtZVZpZXcgYm90aCBz
dG9yZSBhIFBhZ2luYXRpb24gdmFsdWUuIFBhZ2U6OnBhZ2luYXRpb24oKSBpcyBzZXQgb25seSBi
eSBBUEksCkBAIC0zMDcsMTggKzMwNywxOCBAQCBwdWJsaWM6CiAgICAgLy8gRnJhbWVWaWV3cyBp
biB0aGUgcGFnZSBjYWNoZSwgYnV0IEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIG9ubHkgYWZmZWN0
cyB0aGUgY3VycmVudAogICAgIC8vIEZyYW1lVmlldy4KICAgICBjb25zdCBQYWdpbmF0aW9uJiBw
YWdpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0aW9uOyB9Ci0gICAgdm9pZCBzZXRQ
YWdpbmF0aW9uKGNvbnN0IFBhZ2luYXRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogCi0gICAgdW5zaWduZWQgcGFnZUNvdW50
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3Q7
CiAKICAgICAvLyBOb3RpZmljYXRpb25zIHdoZW4gdGhlIFBhZ2Ugc3RhcnRzIGFuZCBzdG9wcyBi
ZWluZyBwcmVzZW50ZWQgdmlhIGEgbmF0aXZlIHdpbmRvdy4KLSAgICB2b2lkIHNldFZpZXdTdGF0
ZShWaWV3U3RhdGU6OkZsYWdzKTsKLSAgICB2b2lkIHNldElzVmlzaWJsZShib29sKTsKLSAgICB2
b2lkIHNldElzUHJlcmVuZGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3U3Rh
dGUoVmlld1N0YXRlOjpGbGFncyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1Zpc2li
bGUoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1ByZXJlbmRlcigpOwogICAg
IGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OklzVmlzaWJsZTsgfQogCiAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhpcyBQYWdlIHdhcyBt
b3ZlZCBpbnRvIG9yIG91dCBvZiBhIG5hdGl2ZSB3aW5kb3cuCi0gICAgdm9pZCBzZXRJc0luV2lu
ZG93KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKTsK
ICAgICBib29sIGlzSW5XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFZpZXdT
dGF0ZTo6SXNJbldpbmRvdzsgfQogCiAgICAgdm9pZCBzZXRJc0Nsb3NpbmcoKSB7IG1faXNDbG9z
aW5nID0gdHJ1ZTsgfQpAQCAtMzI3LDggKzMyNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZp
ZXdTdGF0ZUNoYW5nZU9ic2VydmVyKFZpZXdTdGF0ZUNoYW5nZU9ic2VydmVyJik7CiAgICAgdm9p
ZCByZW1vdmVWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlcihWaWV3U3RhdGVDaGFuZ2VPYnNlcnZlciYp
OwogCi0gICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7Ci0gICAgdm9pZCByZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRT
Y3JpcHRlZEFuaW1hdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZVNjcmlw
dGVkQW5pbWF0aW9ucygpOwogICAgIGJvb2wgc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQ7IH0KIAogICAgIHZv
aWQgdXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKTsKQEAgLTM0Miw4ICszNDIsOCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKIAotICAg
IHZvaWQgaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRl
U3R5bGVzRm9yTGluayhMaW5rSGFzaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlk
YXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRh
dGVTdHlsZXNGb3JMaW5rKExpbmtIYXNoKTsKIAogICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Np
b25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUgPSB0cnVlKTsKICAgICB2b2lkIHNldFNlc3Np
b25TdG9yYWdlKFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4pOwpAQCAtMzUxLDcgKzM1MSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBj
b25zdDsKICAgICBkb3VibGUgY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0Owog
Ci0gICAgdm9pZCBzZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZChib29sKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wp
OwogICAgIGJvb2wgYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOyB9CiAKICAgICAvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gYSBjZXJ0YWluIG51bWJlciBvZiBmcmFtZXMgaW4gYSBwYWdlLgpA
QCAtMzYzLDIyICszNjMsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCBp
c0VkaXRhYmxlKSB7IG1faXNFZGl0YWJsZSA9IGlzRWRpdGFibGU7IH0KICAgICBib29sIGlzRWRp
dGFibGUoKSB7IHJldHVybiBtX2lzRWRpdGFibGU7IH0KIAotICAgIFBhZ2VWaXNpYmlsaXR5U3Rh
dGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRpbmdJbWFn
ZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlT
dGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1h
Z2VzKCk7CiAKLSAgICB2b2lkIGFkZExheW91dE1pbGVzdG9uZXMoTGF5b3V0TWlsZXN0b25lcyk7
Ci0gICAgdm9pZCByZW1vdmVMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUxheW91dE1pbGVzdG9uZXMoTGF5b3V0
TWlsZXN0b25lcyk7CiAgICAgTGF5b3V0TWlsZXN0b25lcyByZXF1ZXN0ZWRMYXlvdXRNaWxlc3Rv
bmVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzOyB9CiAKICNp
ZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgdm9pZCBhZGRIZWFkZXJXaXRoSGVpZ2h0KGlu
dCk7Ci0gICAgdm9pZCBhZGRGb290ZXJXaXRoSGVpZ2h0KGludCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRIZWFkZXJXaXRoSGVpZ2h0KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRGb290ZXJXaXRoSGVpZ2h0KGludCk7CiAjZW5kaWYKIAogICAgIGludCBoZWFkZXJIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlckhlaWdodDsgfQogICAgIGludCBmb290ZXJIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2Zvb3RlckhlaWdodDsgfQogCi0gICAgQ29sb3IgcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Ig
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAKICAgICBib29sIGlzQ291bnRp
bmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0Q291bnRp
bmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKQEAgLTM4Niw4ICszODYsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqLCBjb25z
dCBMYXlvdXRSZWN0JiBvYmplY3RQYWludFJlY3QpOwogICAgIHZvaWQgYWRkUmVsZXZhbnRVbnBh
aW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRS
ZWN0KTsKIAotICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
Ci0gICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNldElzUGFpbnRpbmcoYm9vbCBwYWlu
dGluZykgeyBtX2lzUGFpbnRpbmcgPSBwYWludGluZzsgfQogICAgIGJvb2wgaXNQYWludGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNQYWludGluZzsgfQpAQCAtMzk2LDcgKzM5Niw3IEBAIHB1Ymxp
YzoKICAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50OyB9CiAKICAgICBib29sIGhhc1Nl
ZW5QbHVnaW4oY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSkgY29uc3Q7Ci0gICAgYm9vbCBoYXNT
ZWVuQW55UGx1Z2luKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTZWVuQW55
UGx1Z2luKCkgY29uc3Q7CiAgICAgdm9pZCBzYXdQbHVnaW4oY29uc3QgU3RyaW5nJiBzZXJ2aWNl
VHlwZSk7CiAgICAgdm9pZCByZXNldFNlZW5QbHVnaW5zKCk7CiAKQEAgLTQwNiw3ICs0MDYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFNlZW5NZWRpYUVuZ2luZXMoKTsKIAogICAgIFBhZ2VU
aHJvdHRsZXIqIHBhZ2VUaHJvdHRsZXIoKSB7IHJldHVybiBtX3BhZ2VUaHJvdHRsZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGNyZWF0ZVBhZ2VUaHJvdHRsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNyZWF0ZVBhZ2VUaHJvdHRsZXIoKTsKIAogICAgIFBhZ2VDb25zb2xlJiBjb25zb2xlKCkg
eyByZXR1cm4gKm1fY29uc29sZTsgfQogCkBAIC00MjcsMTMgKzQyNywxMyBAQCBwdWJsaWM6CiAK
ICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7CiAKLSAgICBTZXNzaW9u
SUQgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNzaW9uSUQoU2Vzc2lvbklEKTsK
LSAgICB2b2lkIGVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlc3Npb25JRChTZXNzaW9uSUQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGluaXRHcm91cCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEdyb3VwKCk7
CiAKICAgICB2b2lkIHNldElzSW5XaW5kb3dJbnRlcm5hbChib29sKTsKICAgICB2b2lkIHNldElz
VmlzaWJsZUludGVybmFsKGJvb2wpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxv
Y2tDb250cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsKICNlbmRpZgotICAgIFJlZlB0
cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3I7CiAKICAgICBjb25zdCBSZWZQdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuaAppbmRleCBiZTZmNDVmZWFkYzk5NWU1MTdlMDQ3NzcyNzk3MWI3Mzky
OTUwYTU4Li4xYzJkZjQxMWEwMTc1MDczNGI2MDFmYTYzMTQ4NzgzOTBkYmMwMGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBQYWdlQ29uc29sZShQYWdlJik7CiAgICAgdmlydHVhbCB+UGFnZUNvbnNvbGUoKTsKIAot
ICAgIHN0YXRpYyBib29sIHNob3VsZFByaW50RXhjZXB0aW9ucygpOwotICAgIHN0YXRpYyB2b2lk
IHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBzaG91bGRQcmludEV4Y2VwdGlvbnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBtdXRlKCk7CiAgICAgc3RhdGljIHZvaWQgdW5tdXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAppbmRleCA4NDNjYmU2MDNjMmRjYmQ3ZmNhM2EzZjY3MmEwZmQzNjMzNTQ1ZDYwLi43OThmZmZk
MTdlMmMwNDkzMmZhMjVlZTNlY2Q1MjBjMzgzMWI2NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmgKQEAgLTU3LDE1ICs1NywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGV4cGxp
Y2l0IFBhZ2VHcm91cChQYWdlJik7CiAgICAgICAgIH5QYWdlR3JvdXAoKTsKIAotICAgICAgICBz
dGF0aWMgUGFnZUdyb3VwKiBwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFnZUdyb3VwKiBwYWdlR3JvdXAoY29uc3QgU3Ry
aW5nJiBncm91cE5hbWUpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdl
KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsb3NlTG9jYWxTdG9yYWdl
KCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgY2xlYXJMb2NhbFN0b3JhZ2VGb3JBbGxPcmlnaW5z
KCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNsZWFyTG9jYWxTdG9yYWdlRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURh
dGFiYXNlcygpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbG9zZUlkbGVM
b2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKICAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUgaGVscGVy
IHRoYXQgdHJpZ2dlcnMgYSBTdG9yYWdlQXJlYSBzeW5jLgotICAgICAgICBzdGF0aWMgdm9pZCBz
eW5jTG9jYWxTdG9yYWdlKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHN5
bmNMb2NhbFN0b3JhZ2UoKTsKIAogICAgICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VzOyB9CiAKQEAgLTc0LDE2ICs3NCwxNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9y
ZSgpOwogCi0gICAgICAgIGJvb2wgaXNMaW5rVmlzaXRlZChMaW5rSGFzaCk7CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNMaW5rVmlzaXRlZChMaW5rSGFzaCk7CiAKICAgICAgICAgdm9p
ZCBhZGRWaXNpdGVkTGluayhjb25zdCBVUkwmKTsKICAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGlu
ayhjb25zdCBVQ2hhciosIHNpemVfdCk7Ci0gICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNo
KExpbmtIYXNoKTsKLSAgICAgICAgdm9pZCByZW1vdmVWaXNpdGVkTGluayhjb25zdCBVUkwmKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2goTGlua0hhc2gp
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rKGNvbnN0IFVS
TCYpOwogICAgICAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rcygpOwogCi0gICAgICAgIHN0YXRp
YyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwotICAgICAgICBzdGF0aWMg
dm9pZCByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoYm9vbCk7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwogCiAgICAgICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CkBAIC05MywyMyArOTMsMjMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHRyYW5z
aWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIAotICAgICAgICB2
b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSwgVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7Ci0gICAgICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRU
b1dvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCA9IFVz
ZXJTdHlsZVVzZXJMZXZlbCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSA9IEluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxk
KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFVSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJT
Y3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVVJMJik7Ci0gICAgICAgIHZv
aWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCYpOwot
ICAgICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3Qs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMs
IFVzZXJTdHlsZUxldmVsID0gVXNlclN0eWxlVXNlckxldmVsLCBVc2VyU3R5bGVJbmplY3Rpb25U
aW1lID0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29u
c3QgVVJMJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEZy
b21Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVUkwmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQmKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29y
bGQoRE9NV3JhcHBlcldvcmxkJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
QWxsVXNlckNvbnRlbnQoKTsKIAogICAgICAgICBHcm91cFNldHRpbmdzJiBncm91cFNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gKm1fZ3JvdXBTZXR0aW5nczsgfQogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgICAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAg
ICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcygpOwogI2VuZGlm
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaXNpdGVkTGluayhMaW5rSGFzaCk7CiAK
ICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKaW5kZXggMjdiZmIwZjRiMTExMWFmMDgzNjE3
OGIwMGUzYzg5ZWVkYjY0MjNjNy4uMzg1YWZhMGIxMGQ3MjM1N2FkODA5N2NiOWI1MTdmZWY1NDIy
MzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUh5c3RlcmVzaXMoKTsKIAogICAgIGZyaWVuZCBjbGFz
cyBIeXN0ZXJlc2lzQWN0aXZpdHk8UGFnZVRocm90dGxlcj47Ci0gICAgdm9pZCBzdGFydGVkKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydGVkKCk7CiAgICAgdm9pZCBzdG9wcGVkKCk7
CiAKICAgICBQYWdlJiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAppbmRleCAy
ZWZkMDVkM2ZkY2ZmNjUyMjgwNjQ2YWNhZGRiNjJkZWQwMmEyZTQ5Li43YzUxY2E0YjJjMzJlNDky
ZDg3NDg2NmY3YTE5M2U3ZjNkMmY0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgK
QEAgLTM1LDggKzM1LDggQEAgY2xhc3MgSW50UmVjdDsKIAogY2xhc3MgUHJpbnRDb250ZXh0IHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBQcmludENvbnRleHQoRnJhbWUqKTsKLSAgICB+UHJpbnRD
b250ZXh0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUHJpbnRDb250ZXh0KEZyYW1l
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgflByaW50Q29udGV4dCgpOwogCiAgICAgRnJhbWUqIGZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCkBAIC00NCw0MCArNDQsNDAgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBUaGlzIG1lYW5zIHRoYXQgQ1NTIHBhZ2UgYnJlYWtzIHdvbid0
IGJlIG9uIHBhZ2UgYm91bmRhcnkgaWYgdGhlIHNpemUgaXMgZGlmZmVyZW50IHRoYW4gd2hhdCB3
YXMgcGFzc2VkIHRvIGJlZ2luKCkuIFRoYXQncyBwcm9iYWJseSBub3QgYWx3YXlzIGRlc2lyYWJs
ZS4KICAgICAvLyBGSVhNRTogSGVhZGVyIGFuZCBmb290ZXIgaGVpZ2h0IHNob3VsZCBiZSBhcHBs
aWVkIGJlZm9yZSBsYXlvdXQsIG5vdCBhZnRlci4KICAgICAvLyBGSVhNRTogVGhlIHByaW50UmVj
dCBhcmd1bWVudCBpcyBvbmx5IHVzZWQgdG8gZGV0ZXJtaW5lIHBhZ2UgYXNwZWN0IHJhdGlvLCBp
dCB3b3VsZCBiZSBiZXR0ZXIgdG8gcGFzcyBhIEZsb2F0U2l6ZSB3aXRoIHBhZ2UgZGltZW5zaW9u
cyBpbnN0ZWFkLgotICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJlY3QmIHBy
aW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIGZsb2F0IHVz
ZXJTY2FsZUZhY3RvciwgZmxvYXQmIG91dFBhZ2VIZWlnaHQsIGJvb2wgYWxsb3dIb3Jpem9udGFs
VGlsaW5nID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tcHV0ZVBhZ2VSZWN0
cyhjb25zdCBGbG9hdFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBm
b290ZXJIZWlnaHQsIGZsb2F0IHVzZXJTY2FsZUZhY3RvciwgZmxvYXQmIG91dFBhZ2VIZWlnaHQs
IGJvb2wgYWxsb3dIb3Jpem9udGFsVGlsaW5nID0gZmFsc2UpOwogCiAgICAgLy8gRGVwcmVjYXRl
ZC4gUGFnZSBzaXplIGNvbXB1dGF0aW9uIGlzIGFscmVhZHkgaW4gdGhpcyBjbGFzcywgY2xpZW50
cyBzaG91bGRuJ3QgYmUgY29weWluZyBpdC4KLSAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHNXaXRo
UGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFsbG93SG9y
aXpvbnRhbFRpbGluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21wdXRlUGFnZVJlY3Rz
V2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOwogCiAgICAgLy8gVGhlc2UgYXJlIG9ubHkgdmFsaWQgYWZ0ZXIg
cGFnZSByZWN0cyBhcmUgY29tcHV0ZWQuCiAgICAgc2l6ZV90IHBhZ2VDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZVJlY3RzLnNpemUoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIHBhZ2VSZWN0
KHNpemVfdCBwYWdlTnVtYmVyKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSZWN0c1twYWdlTnVtYmVy
XTsgfQogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlUmVjdHM7IH0KIAotICAgIGZsb2F0IGNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rv
cihjb25zdCBGbG9hdFNpemUmIGF2YWlsYWJsZVBhcGVyU2l6ZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgZmxvYXQgY29tcHV0ZUF1dG9tYXRpY1NjYWxlRmFjdG9yKGNvbnN0IEZsb2F0U2l6ZSYgYXZh
aWxhYmxlUGFwZXJTaXplKTsKIAogICAgIC8vIEVudGVyIHByaW50IG1vZGUsIHVwZGF0aW5nIGxh
eW91dCBmb3IgbmV3IHBhZ2Ugc2l6ZS4KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxs
ZWQgbXVsdGlwbGUgdGltZXMgdG8gYXBwbHkgbmV3IHByaW50IG9wdGlvbnMgd2l0aG91dCBnb2lu
ZyBiYWNrIHRvIHNjcmVlbiBtb2RlLgotICAgIHZvaWQgYmVnaW4oZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW4oZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCA9IDApOwogCiAgICAgLy8gRklYTUU6IGVsaW1pbmF0ZSB3aWR0aCBhcmd1
bWVudC4KLSAgICB2b2lkIHNwb29sUGFnZShHcmFwaGljc0NvbnRleHQmIGN0eCwgaW50IHBhZ2VO
dW1iZXIsIGZsb2F0IHdpZHRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNwb29sUGFnZShH
cmFwaGljc0NvbnRleHQmIGN0eCwgaW50IHBhZ2VOdW1iZXIsIGZsb2F0IHdpZHRoKTsKIAotICAg
IHZvaWQgc3Bvb2xSZWN0KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzcG9vbFJlY3QoR3JhcGhpY3NDb250ZXh0JiBjdHgsIGNv
bnN0IEludFJlY3QmKTsKIAogICAgIC8vIFJldHVybiB0byBzY3JlZW4gbW9kZS4KLSAgICB2b2lk
IGVuZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kKCk7CiAKICAgICAvLyBVc2VkIGJ5
IGxheW91dCB0ZXN0cy4KLSAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1l
bnQqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOyAvLyBSZXR1cm5zIC0xIGlm
IHBhZ2UgaXNuJ3QgZm91bmQuCi0gICAgc3RhdGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJhbWUq
IGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKLSAgICBz
dGF0aWMgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIp
OwotICAgIHN0YXRpYyBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUqIGZy
YW1lLCBpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2luVG9w
LCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KTsKLSAg
ICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJhbWUqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VT
aXplSW5QaXhlbHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQgcGFnZU51bWJlckZv
ckVsZW1lbnQoRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7IC8v
IFJldHVybnMgLTEgaWYgcGFnZSBpc24ndCBmb3VuZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHBhZ2VQcm9wZXJ0eShGcmFtZSosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwg
aW50IHBhZ2VOdW1iZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUGFnZUJv
eFZpc2libGUoRnJhbWUqLCBpbnQgcGFnZU51bWJlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhGcmFtZSosIGludCBwYWdlTnVt
YmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdo
dCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhGcmFtZSosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNp
emVJblBpeGVscyk7CiAgICAgLy8gRHJhdyBhbGwgcGFnZXMgaW50byBhIGdyYXBoaWNzIGNvbnRl
eHQgd2l0aCBsaW5lcyB3aGljaCBtZWFuIHBhZ2UgYm91bmRhcmllcy4KICAgICAvLyBUaGUgaGVp
Z2h0IG9mIHRoZSBncmFwaGljcyBjb250ZXh0IHNob3VsZCBiZQogICAgIC8vIChwYWdlU2l6ZUlu
UGl4ZWxzLmhlaWdodCgpICsgMSkgKiBudW1iZXItb2YtcGFnZXMgLSAxCi0gICAgc3RhdGljIHZv
aWQgc3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoRnJhbWUqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAppbmRleCBlYTc5OWFjMDQ3MDcyY2E0ODg4ODNj
ZmNlODhiMTQ3MGEyZjg1MGNkLi5lNDYxMTk5ZDVmODBiZmQxMzk3NjM1ZGI5ZGY2NTQ4MmMxMmNh
M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0NvbnN0cmFpbnRzLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fbGF5
ZXJQb3NpdGlvbkF0TGFzdExheW91dChvdGhlci5tX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQp
CiAgICAgeyB9CiAgICAgCi0gICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uRm9yVmlld3BvcnRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBGbG9hdFBvaW50IGxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0OwogCiAgICAgY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9y
dFJlY3RBdExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0UmVjdEF0TGFzdExh
eW91dDsgfQogICAgIHZvaWQgc2V0Vmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgeyBtX3ZpZXdwb3J0UmVjdEF0TGFzdExheW91dCA9IHJlY3Q7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKaW5k
ZXggNjhmZjdiMDVlMjFiN2Y1ZmI0ODM5M2YyYTNmYTY3ZTEwMGNlOTEzMi4uOGNiY2NmN2E0YzZh
OGEwMjQ0Njk1ZDAxMTgxNzJiNTZjMzMyODJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKQEAgLTE3MSw4ICsxNzEsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZXByZXNlbnRzUGxhdGZvcm1MYXllcklEKCkgY29uc3QgeyByZXR1
cm4gbV9yZXByZXNlbnRhdGlvbiA9PSBQbGF0Zm9ybUxheWVySURSZXByZXNlbnRhdGlvbjsgfQog
ICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHJldGFpblBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciopOwotICAgIHZvaWQgcmVsZWFzZVBsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciopOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmV0YWluUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxh
eWVyKik7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXIqIG1fZ3JhcGhpY3NM
YXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IGRkOTE4NzEwYWJi
ZDdhZjZhMzlhZDRkZjg3ZWVkZDYxODNlY2IxNzYuLmNkNjhkNjI0NzE3NjQzNzdlMDg2NDUwOTRi
M2UyNWIwOWQ4YzljOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVD
aG9vc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaApAQCAt
NzgsMTYgKzc4LDE2IEBAIHB1YmxpYzoKIGNsYXNzIEZpbGVDaG9vc2VyIDogcHVibGljIFJlZkNv
dW50ZWQ8RmlsZUNob29zZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxl
Q2hvb3Nlcj4gY3JlYXRlKEZpbGVDaG9vc2VyQ2xpZW50KiwgY29uc3QgRmlsZUNob29zZXJTZXR0
aW5ncyYpOwotICAgIH5GaWxlQ2hvb3NlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIH5GaWxlQ2hv
b3NlcigpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2b2lkIGNob29zZUZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaG9vc2VGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhN
RTogVGhpcyBmdW5jdGlvbiBpcyBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGVDaG9vc2VyOjpjaG9v
c2VGaWxlcygpLiBXZSBzaG91bGQgbWVyZ2UgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHdpdGggRmls
ZUNob29zZXI6OmNob29zZUZpbGVzKCkgYW5kIGhlbmNlIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9T
KS1ndWFyZC4KLSAgICB2b2lkIGNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhdGhzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNob29zZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhz
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qKTsKICNlbmRpZiAgICAKIAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkganVzdCBwYXNzIGZpbGUgcGF0aHMgdGhhdCBj
b3VsZCBiZSB2aXJ0dWFsIHBhdGhzIHdpdGggcHJvcGVyIGRpc3BsYXkgbmFtZXMgcmF0aGVyIHRo
YW4gcGFzc2luZyBzdHJ1Y3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkUHJvdmlk
ZXIuaAppbmRleCAyNWFlYmY2ZTU3M2E4OWVkOWMwOWJiMTgzMWFjNTEyZWMxOTQ3MDI0Li4yNGE5
YzdlNDI0NDliOTA4MGZmMmQxMDNlZTc5YzA1YzBkNDRlMjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HYW1lcGFkUHJvdmlkZXIuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBHYW1lcGFk
UHJvdmlkZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdhbWVwYWRQcm92aWRlcigpIHsgfQog
Ci0gICAgc3RhdGljIEdhbWVwYWRQcm92aWRlciYgc2hhcmVkKCk7Ci0gICAgc3RhdGljIHZvaWQg
c2V0U2hhcmVkUHJvdmlkZXIoR2FtZXBhZFByb3ZpZGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEdhbWVwYWRQcm92aWRlciYgc2hhcmVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoR2FtZXBhZFByb3ZpZGVyJik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVyQ2xpZW50Kik7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoR2FtZXBhZFByb3ZpZGVy
Q2xpZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDNjYzAzNjc5MzQyODg0ODE5
OTliNjdlYzFlMGE1ZjA4YmVlZGFhYjcuLmI0YzY4ZjhjNGQ3M2E5NjEwY2UxNDI3MGRhZDJmMGQ4
MjAzZjJhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBMZW5ndGgoZmxvYXQgdmFsdWUsIExlbmd0aFR5cGUsIGJvb2wgaGFzUXVpcmsg
PSBmYWxzZSk7CiAgICAgTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgTGVuZ3RoVHlwZSwgYm9vbCBoYXNR
dWlyayA9IGZhbHNlKTsKIAotICAgIGV4cGxpY2l0IExlbmd0aChQYXNzUmVmPENhbGN1bGF0aW9u
VmFsdWU+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBMZW5ndGgoUGFzc1JlZjxDYWxj
dWxhdGlvblZhbHVlPik7CiAKICAgICBMZW5ndGgoY29uc3QgTGVuZ3RoJik7CiAgICAgTGVuZ3Ro
KExlbmd0aCYmKTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDYWxj
dWxhdGVkRXF1YWwoY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAgTGVuZ3RoIGJsZW5kTWl4ZWRU
eXBlcyhjb25zdCBMZW5ndGgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgY29uc3Q7CiAKLSAgICB2
b2lkIHJlZigpIGNvbnN0OwotICAgIHZvaWQgZGVyZWYoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlZigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKSBj
b25zdDsKICAgICAKICAgICB1bmlvbiB7CiAgICAgICAgIGludCBtX2ludFZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDk4ZTI4Zjk5MjgyNzZk
ZTA1NGJjNDcwNTg4YWU2YTUwOGRiMGUxOWQuLjhlMDllODgzMTg4OWViNzE0MTdmYjEyMTBkOTkz
N2RjN2ViNTUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1JTUVU
eXBlUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNp
b24pOwogCiAgICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lvbnNGb3JNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0UHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSk7CiAgICAgc3RhdGljIFN0cmluZyBnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4g
Z2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwog
CkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
bWltZSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgaW5saW5lIGFzIGFuCiAgICAg
Ly8gaW1hZ2UgKGUuZy4sIDxpbWc+IHRhZ3MpLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBtaW1lIHR5cGUgaXMgc3VpdGFibGUg
Zm9yIGJlaW5nIGxvYWRlZCBhcyBhbiBpbWFnZQogICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUu
Ci0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgYSBtaW1lIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVu
Y29kZWQuCiAgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CkBAIC02MSwzOSArNjEsMzkgQEAgcHVibGljOgog
CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIG1pbWUgdHlwZSBpcyBzdWl0YWJs
ZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEKICAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiAgSW5j
bHVkZXMgc3VwcG9ydGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KLSAgICBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbWltZSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgdXNpbmcgPHZpZGVvPiBhbmQgPGF1ZGlv
PgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsgCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRN
ZWRpYU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoZSBtaW1lIHR5cGUgaXMgbm90IHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMg
YSB0ZXh0CiAgICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gT25seSB2YWxpZCBmb3IgbWltZSB0
eXBlcyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCiAgICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRv
IHNlZSBpZiBhIG1pbWUgdHlwZSBpcyBhIHZhbGlkIEphdmEgYXBwbGV0IG1pbWUgdHlwZQotICAg
IHN0YXRpYyBib29sIGlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSmF2YUFwcGxldE1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbWltZSB0
eXBlIGlzIGEgcGx1Z2luIGltcGxlbWVudGVkIGJ5IHRoZQogICAgIC8vIGJyb3dzZXIgKGUuZy4g
YSBRdCBQbHVnaW4pLgogICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIG1p
bWUgdHlwZSBpcyBvbmUgb2YgdGhlIGNvbW1vbiBQREYvUFMgdHlwZXMuCi0gICAgc3RhdGljIGJv
b2wgaXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyBib29sIGlzUERGTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBtaW1lIHR5
cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIHNob3duIGluc2lkZSBhIHBhZ2UuCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBvZiBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoKSwgaXNTdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlKCksIGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZSgpIHJldHVybnMg
dHJ1ZQogICAgIC8vIG9yIGlmIGdpdmVuIG1pbWUgdHlwZSBiZWdpbnMgd2l0aCAidGV4dC8iIGFu
ZCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKCkgcmV0dXJucyBmYWxzZS4KLSAgICBzdGF0aWMg
Ym9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdl
dFN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+JiBnZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCk7Ci0gICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpOwogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0UERGTUlN
RVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0
UERGTUlNRVR5cGVzKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0UERGQW5kUG9z
dFNjcmlwdE1JTUVUeXBlcygpOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFVuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4mIGdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwogCiAgICAgc3RhdGljIFN0
cmluZyBnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCAwMGE5YTU4
OThiOTk3Yjk0MTcxMWU1MjRjNTlmOGU5NTQ2MWQ0NmViLi4xODlmNDg4MzVlYzQ0YmRlN2U5MWVj
ZWNmNDlhMTMwYmQyNGQ1Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgewogcHVibGljOgogICAgIGZyaWVuZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1l
bW9yeVByZXNzdXJlSGFuZGxlcigpOwogCi0gICAgdm9pZCBpbnN0YWxsKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnN0YWxsKCk7CiAKICAgICB2b2lkIHNldExvd01lbW9yeUhhbmRsZXIo
TG93TWVtb3J5SGFuZGxlciBoYW5kbGVyKQogICAgIHsKQEAgLTY0LDEwICs2NCwxMCBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBzaGFyZSBtb3Jl
IG9mIHRoaXMgd2l0aCBPcGVuU291cmNlPwotICAgIHZvaWQgaW5zdGFsbE1lbW9yeVJlbGVhc2VC
bG9jayh2b2lkIChecmVsZWFzZU1lbW9yeUJsb2NrKSgpLCBib29sIGNsZWFyUHJlc3N1cmVPbk1l
bW9yeVJlbGVhc2UgPSB0cnVlKTsKLSAgICB2b2lkIHNldFJlY2VpdmVkTWVtb3J5UHJlc3N1cmUo
TWVtb3J5UHJlc3N1cmVSZWFzb24pOwotICAgIHZvaWQgY2xlYXJNZW1vcnlQcmVzc3VyZSgpOwot
ICAgIGJvb2wgc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9jayh2b2lkIChecmVsZWFzZU1lbW9y
eUJsb2NrKSgpLCBib29sIGNsZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UgPSB0cnVlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlY2VpdmVkTWVtb3J5UHJlc3N1cmUoTWVtb3J5UHJl
c3N1cmVSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJNZW1vcnlQcmVzc3Vy
ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVz
c2FnZSgpOwogICAgIHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmVJZk5lZWRlZCgpOwogI2Vu
ZGlmCiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBzX2xv
Z2dpbmdFbmFibGVkOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5KGJv
b2wgY3JpdGljYWwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbGVhc2VNZW1v
cnkoYm9vbCBjcml0aWNhbCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZU5v
bmNyaXRpY2FsTWVtb3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
NWU2MTYxN2NjOWRkMDliODQ3ZjhmNjBjMmEwY2YwYzRhMGQzNzAxNC4uZmRlZmY1YjEzM2VkNTVj
MjAzY2M1MjE1MmZlYzgxZDgxMTE0YTIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjgsOCArNjgsOCBAQCBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckRhdGFUcmFuc2ZlciB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdQogCiBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQgewogI2lmICEoUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKLSAgICB+
UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwog
ICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OwpAQCAtODksOCArODksOCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFVSTCB7CiB9Owog
CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKLSAgICBQYXN0ZWJvYXJkSW1hZ2UoKTsKLSAgICB+
UGFzdGVib2FyZEltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEltYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFn
ZT4gaW1hZ2U7CiAjaWYgIShQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV0lOKSkKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFz
cyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKICAgICB+UGFzdGVib2FyZCgpOwogCi0gICAgc3RhdGlj
IFBhc3NPd25QdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3NPd25QdHI8UGFzdGVib2FyZD4gY3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFzdGVib2FyZD4gY3JlYXRlUHJpdmF0
ZSgpOyAvLyBUZW1wb3JhcnkgcGFzdGVib2FyZC4gQ2FuIHB1dCBkYXRhIG9uIHRoaXMgYW5kIHRo
ZW4gd3JpdGUgdG8gYW5vdGhlciBwYXN0ZWJvYXJkIHdpdGggd3JpdGVQYXN0ZWJvYXJkLgogCiAg
ICAgYm9vbCBoYXNEYXRhKCk7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCk7CiAgICAgZW51bSBTbWFydFJlcGxh
Y2VPcHRpb24geyBDYW5TbWFydFJlcGxhY2UsIENhbm5vdFNtYXJ0UmVwbGFjZSB9OwotICAgIHZv
aWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8g
RklYTUU6IFR3byBzZXBhcmF0ZSBmdW5jdGlvbnMgd291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBm
dW5jdGlvbiB3aXRoIGFuIGFyZ3VtZW50LgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsgLy8gRklYTUU6IFR3
byBzZXBhcmF0ZSBmdW5jdGlvbnMgd291bGQgYmUgY2xlYXJlciB0aGFuIG9uZSBmdW5jdGlvbiB3
aXRoIGFuIGFyZ3VtZW50LgogICAgIHZvaWQgd3JpdGVQYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9h
cmQmIHNvdXJjZVBhc3RlYm9hcmQpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCmluZGV4IGUwMDBk
NDc5NjdiZTE5YzQ5ZTQ3M2I0MzhjMWYxNWJlNWNkYjA1NjAuLmExMDExNTBiMDM0MzNkOGY3ZDY4
NDM3OTRhMzgwZjEyOGM2YzJjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1FeHBvcnRNYWNyb3MuaApAQCAtNjksMTggKzY5LDQgQEAKIAogI2VuZGlmIC8vIFVTRShF
WFBPUlRfTUFDUk9TKQogCi0jaWYgVVNFKEVYUE9SVF9NQUNST1NfRk9SX1RFU1RJTkcpCi0KLSNp
ZiBkZWZpbmVkKFdFQkNPUkVfSVNfTElOS0VEX0lOX1NBTUVfQklOQVJZKQotI2RlZmluZSBXRUJD
T1JFX1RFU1RJTkcgV1RGX0VYUE9SVF9ERUNMQVJBVElPTgotI2Vsc2UKLSNkZWZpbmUgV0VCQ09S
RV9URVNUSU5HIFdURl9JTVBPUlRfREVDTEFSQVRJT04KLSNlbmRpZgotCi0jZWxzZSAvLyBVU0Uo
RVhQT1JUX01BQ1JPU19GT1JfVEVTVElORykKLQotI2RlZmluZSBXRUJDT1JFX1RFU1RJTkcKLQot
I2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9TX0ZPUl9URVNUSU5HKQotCiAjZW5kaWYgLy8gUGxh
dGZvcm1FeHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaAppbmRleCA1M2M4ZDYzMTI0ZDFiYTE5ZDI5OTVkOGZkYzVkOTE5OGQ3
NGFiNWY5Li40YjMyYTBiZGEwNWZlNDEwYmE0NzVkMzFiOWUwMTdkY2QyNjA4ZGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaApAQCAtOTAs
NyArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUsIGJvb2wgYmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2VkIG9uIHBsYXRmb3JtcyB0aGF0
IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlEb3duIGV2ZW50cy4KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSwgYm9v
bCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2UpOyAvLyBPbmx5IHVzZWQgb24gcGxh
dGZvcm1zIHRoYXQgbmVlZCBpdCwgaS5lLiB0aG9zZSB0aGF0IGdlbmVyYXRlIEtleURvd24gZXZl
bnRzLgogCiAgICAgICAgIC8vIFRleHQgYXMgYXMgZ2VuZXJhdGVkIGJ5IHByb2Nlc3NpbmcgYSB2
aXJ0dWFsIGtleSBjb2RlIHdpdGggYSBrZXlib2FyZCBsYXlvdXQKICAgICAgICAgLy8gKGluIG1v
c3QgY2FzZXMsIGp1c3QgYSBjaGFyYWN0ZXIgY29kZSwgYnV0IHRoZSBsYXlvdXQgY2FuIGVtaXQg
c2V2ZXJhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApp
bmRleCBhYWRjNmVhYTFiOGQ1NDRkODliN2NmYzg2OTcwNTViM2MzYzFiYzU4Li40ODU2ZDEzNGU2
ZmQxZjU5NThhOGE2NjZiNTFiYmRjYTUwNjAyMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNTAsMzYgKzUwLDM2IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudDsKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CiAg
ICAgLy8gRklYTUU6IHByb2JhYmx5IHdlIGRvbid0IG5lZWQgYSBjb25zdHJ1Y3RvciB0aGF0IHRh
a2VzIGEgcGFzdGVib2FyZCBuYW1lIGZvciBpT1MuCi0gICAgZXhwbGljaXQgUGxhdGZvcm1QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAjZW5kaWYKLSAgICBzdGF0aWMgU3Ry
aW5nIHVuaXF1ZU5hbWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHVuaXF1
ZU5hbWUoKTsKICAgICAKLSAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7Ci0gICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxT
dHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwotICAgIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwotICAgIGxv
bmcgY2hhbmdlQ291bnQoKSBjb25zdDsKLSAgICBDb2xvciBjb2xvcigpOwotICAgIFVSTCB1cmwo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBj
b2xvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB1cmwoKTsKIAogICAgIC8vIFRha2Ugb3du
ZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkLCBhbmQgcmV0dXJuIG5ldyBjaGFuZ2UgY291bnQuCi0g
ICAgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsK
LSAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMp
OworICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKIAogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBm
cm9tIHVzLgotICAgIGxvbmcgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAg
ICBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKLSAgICBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7Ci0gICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOwotICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNv
bnRlbnQmKTsKLSAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwotICAgIHZv
aWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKLSAgICBTdHJpbmcgcmVhZFN0cmluZyhpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwotICAgIFVSTCByZWFkVVJMKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Ci0gICAgaW50IGNvdW50KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGxvbmcgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBs
b25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJk
V2ViQ29udGVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVi
b2FyZEltYWdlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgVVJMIHJlYWRVUkwoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKTsKIAogcHJpdmF0ZToKICNpZiBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggOTM4YzFmNmY4NTAzNzNiMWFkOWZkMzg0MjZiN2U1MGY2
N2M3NmM3Ni4uMzQzYjllN2JhY2YxNWU0OTkzMjA4ZjU1ODE0ZmNlMzdmNzQ1MWQ5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkks
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2Vydmlj
ZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNl
VVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNl
cnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VV
UkkoKSBjb25zdCB7IHJldHVybiBtX3ZvaWNlVVJJOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKaW5kZXggMGI0OWZkNDg2MzYy
MzI4OTBhZTlmNjY5MWZiNGNlM2FlOGIzOGFjOS4uY2U4ZjdlNDczOWMzZWFlNTgyMDlkNjA3MTk4
YjU2ZmI2MjRkMTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuaApAQCAtNjYsMTEgKzY2LDExIEBAIHByb3RlY3RlZDoKIAog
Y2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKICAgICAvLyBGSVhNRTogV2Ug
aGF2ZSBtdWx0aXBsZSB2aXJ0dWFsIGZ1bmN0aW9ucyBqdXN0IHNvIHdlIGNhbiBzdXBwb3J0IGEg
bW9jayBmb3IgdGVzdGluZy4KICAgICAvLyBTZWVtcyB3YXN0ZWZ1bC4gV291bGQgYmUgbmljZSB0
byBmaW5kIGEgYmV0dGVyIHdheS4KLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcigpOwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4+JiB2b2ljZUxpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWso
UGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4
IDFiMWFjYjA4MDEyOTA3MDhjODRiZGY2NTdmMzdlYTVjYTY3ZWNhZmYuLjVkYTQ4OGQyZDJiYjNm
YjcyOWM4YThmNjU0MTBiNTYxZmQzZmIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTQyLDE4ICs0MiwxOCBAQCBj
bGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXI7CiAKIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXIg
OiBwcml2YXRlIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCwgcHJpdmF0ZSBTeXN0ZW1TbGVl
cExpc3RlbmVyOjpDbGllbnQsIHByaXZhdGUgQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBNZWRpYVNlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE1lZGlhU2Vzc2lvbk1hbmFnZXImIHNoYXJl
ZE1hbmFnZXIoKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25NYW5hZ2VyKCkgeyB9CiAKICAg
ICBib29sIGhhcyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSkgY29uc3Q7CiAgICAgaW50IGNvdW50
KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKSBjb25zdDsKICAgICBib29sIGFjdGl2ZUF1ZGlvU2Vz
c2lvblJlcXVpcmVkKCkgY29uc3Q7CiAKLSAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKE1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSk7Ci0gICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWVk
aWFTZXNzaW9uOjpFbmRJbnRlcnJ1cHRpb25GbGFncyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBiZWdpbkludGVycnVwdGlvbihNZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1lZGlhU2Vzc2lvbjo6RW5kSW50
ZXJydXB0aW9uRmxhZ3MpOwogCi0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoKSBjb25zdDsKLSAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyQmFja2dyb3VuZCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRl
ckJhY2tncm91bmQoKSBjb25zdDsKICAgICB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlQ2hh
bmdlZCgpOwogCiAgICAgZW51bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7CkBAIC02Niw5ICs2
Niw5IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3Ry
aWN0aW9uczsKICAgICAKLSAgICB2b2lkIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zKTsKLSAgICB2b2lkIHJlbW92ZVJlc3RyaWN0aW9u
KE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlLCBTZXNzaW9uUmVzdHJpY3Rpb25zKTsKLSAgICBTZXNz
aW9uUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyhNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246Ok1lZGlh
VHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSwgU2Vzc2lvblJlc3RyaWN0aW9u
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMo
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0
aW9ucygpOwogCiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRp
YVNlc3Npb24mKTsKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNl
c3Npb25TdGF0ZSgpOwogCiAgICAgLy8gUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdWRpb0hhcmR3
YXJlTGlzdGVuZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29t
ZUFjdGl2ZSgpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRQb2ludC5oCmluZGV4IDU3ZTNhYzU5ZjFlMjEwYjJiNjlkNmYwMWI1OTIzMTc0ZmFj
ZWY2NGEuLmNlNjJkYjFkN2UzN2ZjZmIzMzc2YzZkZDE3YzYxOGE4MjE1MGEzYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTU0LDcgKzU0
LDcgQEAgY2xhc3MgRmxvYXRQb2ludCB7CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIDogbV94
KDApLCBtX3koMCkgeyB9CiAgICAgRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KSA6IG1feCh4
KSwgbV95KHkpIHsgfQotICAgIEZsb2F0UG9pbnQoY29uc3QgSW50UG9pbnQmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50KGNvbnN0IEludFBvaW50Jik7CiAgICAgZXhwbGljaXQgRmxv
YXRQb2ludChjb25zdCBGbG9hdFNpemUmIHNpemUpIDogbV94KHNpemUud2lkdGgoKSksIG1feShz
aXplLmhlaWdodCgpKSB7IH0KIAogICAgIHN0YXRpYyBGbG9hdFBvaW50IHplcm8oKSB7IHJldHVy
biBGbG9hdFBvaW50KCk7IH0KQEAgLTEzMiwxMyArMTMyLDEzIEBAIHB1YmxpYzoKICAgICB9CiAK
ICNpZiBVU0UoQ0cpCi0gICAgRmxvYXRQb2ludChjb25zdCBDR1BvaW50Jik7Ci0gICAgb3BlcmF0
b3IgQ0dQb2ludCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQoY29uc3Qg
Q0dQb2ludCYpOworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENHUG9pbnQoKSBjb25zdDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVT
X1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKLSAgICBGbG9hdFBvaW50KGNvbnN0IE5TUG9pbnQm
KTsKLSAgICBvcGVyYXRvciBOU1BvaW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRQb2ludChjb25zdCBOU1BvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNQ
b2ludCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBGbG9hdFBvaW50IG1hdHJpeFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaAppbmRleCAzNzE1NzYzNGQwYjk1NmZlNzlkMzBmZDQ1
N2JjNDg5ZjNlM2MwYjRlLi4xYjAzMDAzZTU3MWQyMTY4MWEyZGY0OTM0YjFjNGQzYjIxNzBjMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaApAQCAt
NzgsMTUgKzc4LDE1IEBAIHB1YmxpYzoKICAgICAvLyB0aGF0IGlzLCBpZiB0d28gZWRnZXMgYXJl
IHBhcmFsbGVsIHRvIHRoZSB4LWF4aXMgYW5kIHRoZSBvdGhlciB0d28KICAgICAvLyBhcmUgcGFy
YWxsZWwgdG8gdGhlIHktYXhpcy4gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUKICAg
ICAvLyBjb3JyZXNwb25kaW5nIEZsb2F0UmVjdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggYm91bmRp
bmdCb3goKS4KLSAgICBib29sIGlzUmVjdGlsaW5lYXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzUmVjdGlsaW5lYXIoKSBjb25zdDsKIAogICAgIC8vIFRlc3RzIHdoZXRoZXIg
dGhlIGdpdmVuIHBvaW50IGlzIGluc2lkZSwgb3Igb24gYW4gZWRnZSBvciBjb3JuZXIgb2YgdGhp
cyBxdWFkLgotICAgIGJvb2wgY29udGFpbnNQb2ludChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1BvaW50KGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKIAogICAgIC8vIFRlc3RzIHdoZXRoZXIgdGhlIGZvdXIgY29ybmVycyBvZiBvdGhl
ciBhcmUgaW5zaWRlLCBvciBjb2luY2lkZW50IHdpdGggdGhlIHNpZGVzIG9mIHRoaXMgcXVhZC4K
ICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbmx5IHdvcmtzIGZvciBjb252ZXggcXVhZHMsIGJ1dCB0
aGF0IGluY2x1ZGVzIGFsbCBxdWFkcyB0aGF0IG9yaWdpbmF0ZQogICAgIC8vIGZyb20gdHJhbnNm
b3JtZWQgcmVjdHMuCi0gICAgYm9vbCBjb250YWluc1F1YWQoY29uc3QgRmxvYXRRdWFkJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1F1YWQoY29uc3QgRmxvYXRRdWFk
JikgY29uc3Q7CiAKICAgICAvLyBUZXN0cyB3aGV0aGVyIGFueSBwYXJ0IG9mIHRoZSByZWN0YW5n
bGUgaW50ZXJzZWN0cyB3aXRoIHRoaXMgcXVhZC4KICAgICAvLyBUaGlzIG9ubHkgd29ya3MgZm9y
IGNvbnZleCBxdWFkcy4KQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChtX3AxLnkoKSArIG1fcDIueSgpICsgbV9wMy55KCkgKyBtX3A0LnkoKSkg
LyA0LjApOwogICAgIH0KIAotICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0OwogICAgIEludFJl
Y3QgZW5jbG9zaW5nQm91bmRpbmdCb3goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGVu
Y2xvc2luZ0ludFJlY3QoYm91bmRpbmdCb3goKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDhlMzM5N2QzNDBhYTk4OGFkN2U4MDM2MDNkMzc5
OGFkYWMwMjc5ODkuLmNjODFiZGVlZDBhYjU5ODNlNzE2ZDNkNDRiNDM2NzQwMTIxMTI4YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKSwgbV9zaXpl
KHNpemUpIHsgfQogICAgIEZsb2F0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQogICAgICAgICA6IG1fbG9jYXRpb24oRmxvYXRQb2ludCh4LCB5KSksIG1f
c2l6ZShGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpIHsgfQotICAgIEZsb2F0UmVjdChjb25zdCBJ
bnRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0KGNvbnN0IEludFJlY3QmKTsK
IAogICAgIHN0YXRpYyBGbG9hdFJlY3QgbmFycm93UHJlY2lzaW9uKGRvdWJsZSB4LCBkb3VibGUg
eSwgZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KTsKIApAQCAtMTI3LDEyICsxMjcsMTIgQEAg
cHVibGljOgogICAgIEZsb2F0UG9pbnQgbWluWE1heFlDb3JuZXIoKSBjb25zdCB7IHJldHVybiBG
bG9hdFBvaW50KG1fbG9jYXRpb24ueCgpLCBtX2xvY2F0aW9uLnkoKSArIG1fc2l6ZS5oZWlnaHQo
KSk7IH0gLy8gdHlwaWNhbGx5IGJvdHRvbUxlZnQKICAgICBGbG9hdFBvaW50IG1heFhNYXhZQ29y
bmVyKCkgY29uc3QgeyByZXR1cm4gRmxvYXRQb2ludChtX2xvY2F0aW9uLngoKSArIG1fc2l6ZS53
aWR0aCgpLCBtX2xvY2F0aW9uLnkoKSArIG1fc2l6ZS5oZWlnaHQoKSk7IH0gLy8gdHlwaWNhbGx5
IGJvdHRvbVJpZ2h0CiAKLSAgICBib29sIGludGVyc2VjdHMoY29uc3QgRmxvYXRSZWN0JikgY29u
c3Q7Ci0gICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBib29s
IGNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBDb250YWluc01vZGUgPSBJbnNpZGVPck9uU3Ry
b2tlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGludGVyc2VjdHMoY29uc3QgRmxv
YXRSZWN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNvbnN0
IEZsb2F0UG9pbnQmLCBDb250YWluc01vZGUgPSBJbnNpZGVPck9uU3Ryb2tlKSBjb25zdDsKIAot
ICAgIHZvaWQgaW50ZXJzZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgdW5pdGUoY29u
c3QgRmxvYXRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnRlcnNlY3QoY29uc3Qg
RmxvYXRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bml0ZShjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICB2b2lkIHVuaXRlRXZlbklmRW1wdHkoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAg
dm9pZCB1bml0ZUlmTm9uWmVybyhjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGV4dGVuZChj
b25zdCBGbG9hdFBvaW50Jik7CkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2b2lkIGluZmxhdGUoZmxvYXQgZCkgeyBpbmZsYXRlWChkKTsgaW5mbGF0ZVkoZCk7IH0KICAg
ICB2b2lkIHNjYWxlKGZsb2F0IHMpIHsgc2NhbGUocywgcyk7IH0KLSAgICB2b2lkIHNjYWxlKGZs
b2F0IHN4LCBmbG9hdCBzeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2FsZShmbG9hdCBz
eCwgZmxvYXQgc3kpOwogCiAgICAgRmxvYXRSZWN0IHRyYW5zcG9zZWRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gRmxvYXRSZWN0KG1fbG9jYXRpb24udHJhbnNwb3NlZFBvaW50KCksIG1fc2l6ZS50cmFu
c3Bvc2VkU2l6ZSgpKTsgfQogCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaXRUb1BvaW50cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEs
IGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBjb25zdCBGbG9hdFBvaW50JiBwMyk7CiAKICNpZiBVU0Uo
Q0cpCi0gICAgRmxvYXRSZWN0KGNvbnN0IENHUmVjdCYpOwotICAgIG9wZXJhdG9yIENHUmVjdCgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdChjb25zdCBDR1JlY3QmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDR1JlY3QoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9N
RVRSWV9UWVBFUykKLSAgICBGbG9hdFJlY3QoY29uc3QgTlNSZWN0Jik7Ci0gICAgb3BlcmF0b3Ig
TlNSZWN0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0KGNvbnN0IE5TUmVj
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0OwogI2VuZGlm
CiAKICNpZiBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCmluZGV4IDczY2MwZmVhOGQ0ZDU5MjRjYTFlNDRkZjkyZThjZTI2YjA2ZGUxZGUu
LmEwNDYwMmRmYjNkOGRjZjQ0YjFmMTc5NjcwYTBhMmZlZTIyMzkxZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIEZsb2F0U2l6ZSB7CiBwdWJsaWM6CiAgICAgRmxvYXRTaXplKCkgOiBtX3dpZHRoKDApLCBt
X2hlaWdodCgwKSB7IH0KICAgICBGbG9hdFNpemUoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkg
OiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KLSAgICBGbG9hdFNpemUoY29u
c3QgSW50U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAKICAgICBzdGF0aWMgRmxvYXRTaXplIG5hcnJvd1ByZWNpc2lvbihkb3VibGUgd2lkdGgs
IGRvdWJsZSBoZWlnaHQpOwogCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhlaWdodChmbG9hdCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KIAogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9
Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzWmVy
bygpIGNvbnN0OwogICAgIGJvb2wgaXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpIGNvbnN0OwogCiAg
ICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIC8gbV9oZWlnaHQ7
IH0KQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgICAgICAgICBtX2hlaWdodCA8IG90aGVy
Lm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CiAgICAgfQogCi0gICAgZmxv
YXQgZGlhZ29uYWxMZW5ndGgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBkaWFn
b25hbExlbmd0aCgpIGNvbnN0OwogICAgIGZsb2F0IGRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV93aWR0aCAqIG1fd2lkdGggKyBtX2hlaWdodCAq
IG1faGVpZ2h0OwpAQCAtMTA5LDEyICsxMDksMTIgQEAgcHVibGljOgogICAgIH0KIAogI2lmIFVT
RShDRykKLSAgICBleHBsaWNpdCBGbG9hdFNpemUoY29uc3QgQ0dTaXplJik7IC8vIGRvbid0IGRv
IHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5Ci0gICAgb3BlcmF0b3IgQ0dTaXplKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IENHU2l6
ZSYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQorICAgIFdF
QkNPUkVfRVhQT1JUIG9wZXJhdG9yIENHU2l6ZSgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZ
X1RZUEVTKQotICAgIGV4cGxpY2l0IEZsb2F0U2l6ZShjb25zdCBOU1NpemUgJik7IC8vIGRvbid0
IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IE5TU2l6ZSAmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBs
aWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBvcGVyYXRvciBOU1NpemUoKSBjb25zdDsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMDJiNjRj
ZDZkMjRmZDE4NzM0ZWQxMzlhOGI0ZGEzNzk5MmQ0MTkyZS4uZTM1ZDMxZDdlNTI0NDVlMmI5NGI0
NzA1ZDEwYTBiYzJiZTk5M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtMTA4LDEwICsxMDgsMTAgQEAgR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpHbHlwaFVu
ZGVybGluZVR5cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYsIGMKIAogY2xh
c3MgRm9udCB7CiBwdWJsaWM6Ci0gICAgRm9udCgpOwotICAgIEZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiwgZmxvYXQgbGV0dGVyU3BhY2luZywgZmxvYXQgd29yZFNwYWNpbmcpOworICAgIFdF
QkNPUkVfRVhQT1JUIEZvbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYsIGZsb2F0IGxldHRlclNwYWNpbmcsIGZsb2F0IHdvcmRTcGFjaW5nKTsKICAg
ICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIG9ubHkgdXNlZCBpZiB0aGUgcGxhdGZvcm0gd2FudHMg
dG8gc3RhcnQgd2l0aCBhIG5hdGl2ZSBmb250LgotICAgIEZvbnQoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYsIGJvb2wgaXNQcmludGluZywgRm9udFNtb290aGluZ01vZGUgPSBBdXRvU21vb3RoaW5n
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBib29s
IGlzUHJpbnRpbmcsIEZvbnRTbW9vdGhpbmdNb2RlID0gQXV0b1Ntb290aGluZyk7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgdGhpcyBjb25zdHJ1Y3RvciBwbGF0Zm9ybS1pbmRlcGVu
ZGVudC4KICNpZiBQTEFURk9STShJT1MpCkBAIC0xMjAsOSArMTIwLDkgQEAgcHVibGljOgogICAg
IH5Gb250KCk7CiAKICAgICBGb250KGNvbnN0IEZvbnQmKTsKLSAgICBGb250JiBvcGVyYXRvcj0o
Y29uc3QgRm9udCYpOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnQmIG9wZXJhdG9yPShjb25zdCBG
b250Jik7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udCYgb3RoZXIpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250JiBvdGhlcikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnQmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbjsgfQpAQCAtMTMz
LDEzICsxMzMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8Rm9udFNl
bGVjdG9yPikgY29uc3Q7CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwotICAg
IGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBmbG9hdCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEsIEN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAgICAgdm9pZCBk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3Qg
R2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYp
IGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hl
c0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykgY29uc3Q7CiAKLSAg
ICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0
YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBT
aW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVk
LCBTdHJpbmcmIGdseXBoTmFtZSkgY29uc3Q7CiAKICAgICBQYXNzT3duUHRyPFRleHRMYXlvdXQ+
IGNyZWF0ZUxheW91dChSZW5kZXJUZXh0KiwgZmxvYXQgeFBvcywgYm9vbCBjb2xsYXBzZVdoaXRl
U3BhY2UpIGNvbnN0OwpAQCAtMjA0LDggKzIwNCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5z
aWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChjb25zdCBMQ2hhciosIHNpemVfdCBsZW5n
dGgsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNpb24pOwogICAgIHN0YXRpYyB1
bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxl
bmd0aCwgVGV4dERpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbik7CiAKLSAgICBzdGF0
aWMgdm9pZCBzZXRTaG91bGRVc2VTbW9vdGhpbmcoYm9vbCk7Ci0gICAgc3RhdGljIGJvb2wgc2hv
dWxkVXNlU21vb3RoaW5nKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hv
dWxkVXNlU21vb3RoaW5nKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNo
b3VsZFVzZVNtb290aGluZygpOwogCiAgICAgZW51bSBDb2RlUGF0aCB7IEF1dG8sIFNpbXBsZSwg
Q29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKICAgICBDb2RlUGF0aCBjb2RlUGF0
aChjb25zdCBUZXh0UnVuJikgY29uc3Q7CkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIC8vIFVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBkaWZmZXJlbnQgZm9udCBy
ZW5kZXJpbmcgY29kZSBwYXRocy4KLSAgICBzdGF0aWMgdm9pZCBzZXRDb2RlUGF0aChDb2RlUGF0
aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Q29kZVBhdGgoQ29kZVBhdGgp
OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjb2RlUGF0aCgpOwogICAgIHN0YXRpYyBDb2RlUGF0aCBz
X2NvZGVQYXRoOwogCi0gICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVy
ZXMoVHlwZXNldHRpbmdGZWF0dXJlcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMoVHlwZXNldHRpbmdGZWF0dXJlcyk7CiAgICAg
c3RhdGljIFR5cGVzZXR0aW5nRmVhdHVyZXMgZGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMoKTsK
IAogICAgIHN0YXRpYyBjb25zdCB1aW50OF90IHNfcm91bmRpbmdIYWNrQ2hhcmFjdGVyVGFibGVb
MjU2XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5k
ZXggOGQ4MjVmMmI2MTZkZjA4MDdlYWUyY2VmM2Q0ODRjOWJhNTljM2NmZC4uMGIyNzNlNGJiOTE0
NjgzZDA1MjI3MzQ4NGUzMzE0OTRjNTUzNjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTEzNCwxOCArMTM0LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3Rvcjx1bnNp
Z25lZD4mKTsKIAogICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGdldENhY2hlZEZvbnRE
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGJvb2wgY2hl
Y2tpbmdBbHRlcm5hdGVOYW1lID0gZmFsc2UsIFNob3VsZFJldGFpbiA9IFJldGFpbik7Ci0gICAg
UGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25z
dCBGb250RGVzY3JpcHRpb24mLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOworICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgU2hvdWxkUmV0YWluID0gUmV0YWluKTsKICAgICBT
aW1wbGVGb250RGF0YSogZ2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYpOwogCiAgICAgdm9pZCBhZGRDbGllbnQoRm9udFNlbGVjdG9yKik7
CiAgICAgdm9pZCByZW1vdmVDbGllbnQoRm9udFNlbGVjdG9yKik7CiAKICAgICB1bnNpZ25lZCBz
aG9ydCBnZW5lcmF0aW9uKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICBzaXplX3QgZm9udERhdGFDb3VudCgpOwot
ICAgIHNpemVfdCBpbmFjdGl2ZUZvbnREYXRhQ291bnQoKTsKLSAgICB2b2lkIHB1cmdlSW5hY3Rp
dmVGb250RGF0YShpbnQgY291bnQgPSBJTlRfTUFYKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3QgZm9udERhdGFDb3VudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBpbmFjdGl2ZUZv
bnREYXRhQ291bnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1cmdlSW5hY3RpdmVGb250
RGF0YShpbnQgY291bnQgPSBJTlRfTUFYKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBQYXNz
UmVmUHRyPFNpbXBsZUZvbnREYXRhPiBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgU2hvdWxkUmV0YWluLCBjb25zdCBMT0dGT05UJiwgQXRv
bWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHB1cmdlSW5hY3RpdmVGb250RGF0YUlmTmVlZGVkKCk7CiAgICAgfQog
Ci0gICAgdm9pZCBwdXJnZUluYWN0aXZlRm9udERhdGFJZk5lZWRlZCgpOworICAgIHZvaWQgV0VC
Q09SRV9FWFBPUlQgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhSWZOZWVkZWQoKTsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgogICAgIEZvbnRQ
bGF0Zm9ybURhdGEqIGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVO
YW1lID0gZmFsc2UpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0
cjxTaW1wbGVGb250RGF0YT4gc2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJik7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGdldENh
Y2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqLCBTaG91bGRSZXRhaW4gPSBSZXRh
aW4pOworICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IGdldENh
Y2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqLCBTaG91bGRSZXRhaW4gPSBSZXRh
aW4pOwogCiAgICAgLy8gRG9uJ3QgcHVyZ2UgaWYgdGhpcyBjb3VudCBpcyA+IDA7CiAgICAgaW50
IG1fcHVyZ2VQcmV2ZW50Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2x5cGhzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2x5cGhzLmgKaW5kZXggNGM3MGQ3ZGYyN2E5ZmU1NmZkMTQ0ZmFkNzkxNzhlNTdlMTRh
MzI1Ni4uMTFkM2E5YzA1NjUyMjRkODNjNDhmMzZmNWFhYTNlMTg0YWYzNTlmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaApAQCAtOTEsMTMgKzkx
LDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxl
Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CiAgICAgY29uc3QgRm9udERh
dGEqIHByaW1hcnlGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBj
b25zdCB7IHJldHVybiByZWFsaXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgMCk7IH0KLSAgICBj
b25zdCBGb250RGF0YSogcmVhbGl6ZUZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
dW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnREYXRh
KiByZWFsaXplRm9udERhdGFBdChjb25zdCBGb250RGVzY3JpcHRpb24mLCB1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgRm9udEdseXBocyhQYXNzUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4pOwogICAgIEZvbnRHbHlwaHMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCi0gICAg
dm9pZCByZWxlYXNlRm9udERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VG
b250RGF0YSgpOwogICAgIAogICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxGb250RGF0YT4sIDE+
IG1fcmVhbGl6ZWRGb250RGF0YTsKICAgICBtdXRhYmxlIEdseXBoUGFnZXMgbV9wYWdlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aAppbmRleCBkYjY1Y2Y4ODllNjU0MTEzMjg3OWI1ZWJiODBhMDlhODFlYTNhMjFkLi44MjAzM2Ew
OTgzOTQ4MGYyODE3N2Q2ZDExNTllODA5NTBiYzk0ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC05NiwxMCArOTYs
MTAgQEAgcHVibGljOgogCiAjaWYgT1MoREFSV0lOKQogI2lmIFVTRShBUFBLSVQpCi0gICAgRm9u
dFBsYXRmb3JtRGF0YShOU0ZvbnQqLCBmbG9hdCBzaXplLCBib29sIGlzUHJpbnRlckZvbnQgPSBm
YWxzZSwgYm9vbCBzeW50aGV0aWNCb2xkID0gZmFsc2UsIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9
IGZhbHNlLAorICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRQbGF0Zm9ybURhdGEoTlNGb250KiwgZmxv
YXQgc2l6ZSwgYm9vbCBpc1ByaW50ZXJGb250ID0gZmFsc2UsIGJvb2wgc3ludGhldGljQm9sZCA9
IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAg
ICAgIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBSZWd1
bGFyV2lkdGgpOwogI2Vsc2UKLSAgICBGb250UGxhdGZvcm1EYXRhKENURm9udFJlZiwgZmxvYXQg
c2l6ZSwgYm9vbCBpc1ByaW50ZXJGb250ID0gZmFsc2UsIGJvb2wgc3ludGhldGljQm9sZCA9IGZh
bHNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUgPSBmYWxzZSwKKyAgICBXRUJDT1JFX0VYUE9SVCBG
b250UGxhdGZvcm1EYXRhKENURm9udFJlZiwgZmxvYXQgc2l6ZSwgYm9vbCBpc1ByaW50ZXJGb250
ID0gZmFsc2UsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlx
dWUgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgIEZvbnRPcmllbnRhdGlvbiA9IEhvcml6
b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgpOwogI2VuZGlmCiAKQEAgLTEy
MCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YShDVEZvbnRSZWYsIGZs
b2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCA9IGZhbHNlLCBib29sIHN5bnRoZXRpY09ibGlx
dWUgPSBmYWxzZSwgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwgRm9udFdpZHRoVmFyaWFu
dCA9IFJlZ3VsYXJXaWR0aCk7CiAjZW5kaWYKIAotICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9udC0+Z2V0
KCkgOiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaFBhZ2VUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuaAppbmRleCAyNmI2NmY3NzliYjVhZTk1MzQwZWZjMTAzOTc2NDNmNDJk
MzgwZjJiLi4wYWY1MjU5MjU0YjM5ZWY3MTYzNTUwODI1ZGM4YjY4MjYwZTNkYmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2Rl
LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBzeXN0ZW0gZmFsbGJhY2sg
Zm9udCBoYXMgc3BlY2lhbCBydWxlcyAoc2VlIGFib3ZlKS4KICAgICBib29sIGlzU3lzdGVtRmFs
bGJhY2soKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRmFsbGJhY2s7IH0KIAotICAgIHN0YXRp
YyBzaXplX3QgdHJlZUdseXBoUGFnZUNvdW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHNpemVfdCB0cmVlR2x5cGhQYWdlQ291bnQoKTsKICAgICBzaXplX3QgcGFnZUNvdW50KCkgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnQuaAppbmRleCA5YTA5MWFlYjY5ZTRkOTVkYjAyY2E3ZTI1MDlhOTkwZDU3MzgyMTgwLi5mYjI1
NWIwMmExNDU0NjBiNDE2OWRiODY3YTFkYmE2ZDk0OWI3Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTY1LDEwICs2NSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R3JhZGllbnQocDAsIHIwLCBwMSwgcjEsIGFzcGVjdFJhdGlvKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgfkdyYWRpZW50KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFkaWVudCgpOwogCiAg
ICAgICAgIHN0cnVjdCBDb2xvclN0b3A7Ci0gICAgICAgIHZvaWQgYWRkQ29sb3JTdG9wKGNvbnN0
IENvbG9yU3RvcCYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbG9yU3RvcChj
b25zdCBDb2xvclN0b3AmKTsKICAgICAgICAgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQsIGNvbnN0
IENvbG9yJik7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwpAQCAtMTY1LDcgKzE2
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNv
bnN0IEZsb2F0UG9pbnQmIHAxKTsKICAgICAgICAgR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYg
cDAsIGZsb2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQgcjEsIGZsb2F0IGFzcGVj
dFJhdGlvKTsKIAogICAgICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpIHsgbV9ncmFkaWVudCA9IDA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggZjNkNDdiNzc4YTg0YmZjZmNhMTJiMjg4ZjgzMzViZjI5NTFlMzg4Ny4uYWY1
YTA1Yjk4YWEwYzY4NzJiMDEyYmI5NTgwYTE5YjQ2NzkzNWE3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTIyOCwxMyAr
MjI4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dCopOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQo
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKTsKICNlbHNlCi0gICAgICAgIEdyYXBoaWNzQ29udGV4
dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCosIGJvb2wgc2hvdWxkVXNlQ29udGV4dENvbG9ycyA9
IHRydWUpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqLCBib29sIHNob3VsZFVzZUNvbnRleHRDb2xvcnMgPSB0cnVlKTsKICNl
bmRpZgotICAgICAgICB+R3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IH5HcmFwaGljc0NvbnRleHQoKTsKIAotICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCog
cGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICBmbG9h
dCBzdHJva2VUaGlja25lc3MoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdHJva2VUaGlja25l
c3MoZmxvYXQpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSk7CiAgICAgICAgIENvbG9yIHN0cm9r
ZUNvbG9yKCkgY29uc3Q7CiAgICAgICAgIENvbG9yU3BhY2Ugc3Ryb2tlQ29sb3JTcGFjZSgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKIAogICAgICAgICB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUGFzc1Jl
ZlB0cjxQYXR0ZXJuPik7CiAgICAgICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdDsK
QEAgLTI1NCwyMSArMjU0LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRGaWxsUnVsZShXaW5kUnVsZSk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0Owog
ICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAKICAg
ICAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihQYXNzUmVmUHRyPFBhdHRlcm4+KTsKICAgICAgICAg
UGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldEZpbGxHcmFk
aWVudChQYXNzUmVmUHRyPEdyYWRpZW50Pik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFBhc3NSZWZQdHI8R3JhZGllbnQ+KTsKICAgICAgICAgR3JhZGllbnQq
IGZpbGxHcmFkaWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoYm9vbCk7CiAgICAgICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBj
b25zdDsKIAotICAgICAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sKTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCk7CiAgICAgICAgIGJv
b2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRTbW9v
dGhGb250cyhib29sKTsKICAgICAgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0Owog
CiAgICAgICAgIC8vIE5vcm1hbGx5IENHIGVuYWJsZXMgc3VicGl4ZWwtcXVhbnRpemF0aW9uIGJl
Y2F1c2UgaXQgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGFsaWduaW5nIGdseXBocy4KQEAg
LTI4MywyMCArMjgzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBs
eUZpbGxQYXR0ZXJuKCk7CiAgICAgICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0g
ICAgICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIElt
YWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICAgICAg
Ly8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0
aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhi
b29sKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0SXNDQUxheWVyQ29udGV4dChib29sKTsK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0NBTGF5ZXJDb250ZXh0KGJvb2wpOwog
ICAgICAgICBib29sIGlzQ0FMYXllckNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpOwogI2VuZGlmCiAgICAgICAgIGJvb2wgaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNhdmUoKTsKLSAgICAg
ICAgdm9pZCByZXN0b3JlKCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZSgpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKTsKIAogICAgICAgICAvLyBUaGVz
ZSBkcmF3IG1ldGhvZHMgd2lsbCBkbyBib3RoIHN0cm9raW5nIGFuZCBmaWxsaW5nLgogICAgICAg
ICAvLyBGSVhNRTogLi4uZXhjZXB0IGRyYXdSZWN0KCksIHdoaWNoIGZpbGxzIHByb3Blcmx5IGJ1
dCBhbHdheXMgc3Ryb2tlcwpAQCAtMzE2LDI0ICszMTYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAgICAgICAgIHZvaWQgZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50
cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgc2hvdWxkQW50aWFsaWFzID0gZmFsc2UpOwogCi0g
ICAgICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpbGxQYXRoKGNvbnN0IFBhdGgmKTsKICAgICAgICAgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKTsKIAogICAgICAgICB2b2lkIGZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYp
OwogICAgICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICAg
ICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
R3JhZGllbnQmKTsKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwpOwogICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwpOwogICAgICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKIAotICAgICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9h
dFJlY3QmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICAgICAgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGxpbmVXaWR0aCk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgICAgIHZvaWQgZHJhd0lt
YWdlKEltYWdlKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2Uq
LCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKICAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAKQEAgLTM0NiwxMSArMzQ2LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKICAgICAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CiAKLSAgICAgICAgdm9pZCBzZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgY2xpcChjb25zdCBJbnRSZWN0Jik7
Ci0gICAgICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGlwKGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2b2lkIGNsaXBSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAKICAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IEZsb2F0UmVjdCYpOwpAQCAtMzY2LDcgKzM2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgYm9vbCBlbW9qaURyYXdpbmdFbmFibGVkKCk7Ci0g
ICAgICAgIHZvaWQgc2V0RW1vamlEcmF3aW5nRW5hYmxlZChib29sKTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRFbW9qaURyYXdpbmdFbmFibGVkKGJvb2wpOwogI2VuZGlmCiAgICAg
ICAgIAogI2lmICFQTEFURk9STShJT1MpCkBAIC0zNzksNyArMzc5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNv
bnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnQ6OkN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnQ6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAj
ZWxzZQotICAgICAgICBmbG9hdCBkcmF3QmlkaVRleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udDo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0g
Rm9udDo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBCaWRpU3RhdHVzKiA9IDAsIGludCBsZW5n
dGggPSAtMSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdCaWRpVGV4dChjb25z
dCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250OjpDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24gPSBGb250OjpEb05vdFBhaW50SWZGb250Tm90UmVhZHksIEJpZGlT
dGF0dXMqID0gMCwgaW50IGxlbmd0aCA9IC0xKTsKICNlbmRpZgogICAgICAgICBlbnVtIFJvdW5k
aW5nTW9kZSB7CiAgICAgICAgICAgICBSb3VuZEFsbFNpZGVzLApAQCAtMzg4LDcgKzM4OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRmxvYXRSZWN0IHJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0JiwgUm91bmRpbmdNb2RlID0gUm91bmRBbGxTaWRlcyk7CiAKICAg
ICAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50
JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpOwotICAgICAgICB2b2lkIGRyYXdMaW5lRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wg
ZG91YmxlTGluZXMgPSBmYWxzZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0xp
bmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywg
Ym9vbCBkb3VibGVMaW5lcyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcyA9IGZhbHNlKTsKICAgICAgICAgZW51bSBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZSB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDAyLDI0ICs0MDIsMjQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVEb2N1bWVudE1hcmtl
clJlc291cmNlcygpOwogICAgICAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSk7CiAK
LSAgICAgICAgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcGFpbnRpbmdEaXNhYmxlZCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBh
aW50aW5nRGlzYWJsZWQoYm9vbCk7CiAKLSAgICAgICAgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50
cygpIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVwZGF0aW5nQ29udHJvbFRp
bnRzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VXBkYXRpbmdDb250cm9sVGludHMoYm9vbCk7
CiAKLSAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwot
ICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICBib29s
IGlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzU2hhZG93
KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IGJsdXIsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIC8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMg
dXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgogICAgICAgICAvLyBJdCBo
YXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KICAgICAgICAgdm9pZCBzZXRM
ZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKIAogICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBmbG9hdCYs
IENvbG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwotICAgICAgICB2b2lkIGNsZWFyU2hhZG93KCk7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJTaGFkb3coKTsKIAogICAgICAgICBi
b29sIGhhc0JsdXJyZWRTaGFkb3coKSBjb25zdDsKICNpZiBVU0UoQ0FJUk8pCkBAIC00MzksMTQg
KzQzOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRBbHBoYShm
bG9hdCk7CiAKLSAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24oKSBjb25zdDsKICAgICAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZU9wZXJhdGlv
bigpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCk7CiAg
ICAgICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdDsKIAotICAgICAgICB2b2lkIGNs
aXAoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gUlVMRV9FVkVOT0REKTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGlwKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFJVTEVfRVZFTk9ERCk7
CiAKICAgICAgICAgLy8gVGhpcyBjbGlwIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBieSA8Y2FudmFz
PiBjb2RlLiBJdCBhbGxvd3MKICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIHRvIGhhbmRsZSBj
bGlwcGluZyBvbiB0aGUgY2FudmFzIGRpZmZlcmVudGx5IHNpbmNlCkBAIC00NTQsMTAgKzQ1NCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2FudmFzQ2xpcChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBSVUxFX0VWRU5PREQpOwogICAgICAgICB2b2lkIGNsaXBPdXQoY29u
c3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CiAgICAgICAg
IHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICAgICAgdm9pZCB0cmFuc2xh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOyB9Ci0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsK
IAogICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYp
OwogCkBAIC00ODAsNyArNDgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8v
IFRoaXMgZnVuY3Rpb24gYXBwbGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29u
dGV4dCwgbWFraW5nIHRoZSBjb250ZXh0IGNhcGFibGUgb2YKICAgICAgICAgLy8gYWN0aW5nIGFz
IGEgYmFzZS1sZXZlbCBjb250ZXh0IGZvciBhIEhpRFBJIGVudmlyb25tZW50LgotICAgICAgICB2
b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgICAgICB2b2lkIHBsYXRm
b3JtQXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CiAKICNpZiBPUyhXSU5ET1dTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IDQ3ODkxYjg2ZmU3ODJiNjI4YzkxNWEyMWZkMzNjY2ZhZjVmNjZiMzkuLmQwMDVhNmNmZTYwYzM2
Nzc5MDI4YzVkMmExOGVkOGRiZTdiYzk0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTIyNiw5ICsyMjYsOSBAQCBwcm90ZWN0
ZWQ6CiBjbGFzcyBHcmFwaGljc0xheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFw
aGljc0xheWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBjcmVhdGUoR3JhcGhpY3NMYXllckZhY3Rv
cnkqLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBjcmVhdGUoR3JhcGhpY3NMYXllckZhY3Rvcnkq
LCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CiAgICAgCi0gICAgdmlydHVhbCB+R3JhcGhpY3NMYXll
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXIoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgeyB9CiAKQEAgLTI0OSwxNyArMjQ5LDE3IEBAIHB1
YmxpYzoKICAgICAKICAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGNoaWxkIGxpc3QgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3Qg
VmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9v
bCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAKICAgICAvLyBB
ZGQgY2hpbGQgbGF5ZXJzLiBJZiB0aGUgY2hpbGQgaXMgYWxyZWFkeSBwYXJlbnRlZCwgaXQgd2ls
bCBiZSByZW1vdmVkIGZyb20gaXRzIG9sZCBwYXJlbnQuCi0gICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKEdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdy
YXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEFib3Zl
KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZyk7Ci0gICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVy
KiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50IGluZGV4
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiwgR3JhcGhpY3NMYXllciogc2libGluZyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNp
YmxpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGQoR3Jh
cGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKTsKIAotICAgIHZv
aWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVu
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogCiAgICAgLy8g
VGhlIHBhcmVudCgpIG9mIGEgbWFza0xheWVyIGlzIHNldCB0byB0aGUgbGF5ZXIgYmVpbmcgbWFz
a2VkLgogICAgIEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFz
a0xheWVyOyB9CkBAIC0yNjksNyArMjY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNNYXNrTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzTWFza0xheWVyOyB9CiAgICAgCiAgICAgLy8gVGhlIGdp
dmVuIGxheWVyIHdpbGwgcmVwbGljYXRlIHRoaXMgbGF5ZXIgYW5kIGl0cyBjaGlsZHJlbjsgdGhl
IHJlcGxpY2EgcmVuZGVycyBiZWhpbmQgdGhpcyBsYXllci4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7CiAgICAgLy8g
V2hldGhlciB0aGlzIGxheWVyIGlzIGJlaW5nIHJlcGxpY2F0ZWQgYnkgYW5vdGhlciBsYXllci4K
ICAgICBib29sIGlzUmVwbGljYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYUxheWVyOyB9
CiAgICAgLy8gVGhlIGxheWVyIHRoYXQgcmVwbGljYXRlcyB0aGlzIGxheWVyIChpZiBhbnkpLgpA
QCAtMzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZSBzaXplIG9mIHRoZSBsYXll
ci4KICAgICBjb25zdCBGbG9hdFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIC8v
IFRoZSBib3VuZE9yaWdpbiBhZmZlY3RzIHRoZSBvZmZzZXQgYXQgd2hpY2ggY29udGVudCBpcyBy
ZW5kZXJlZCwgYW5kIHN1YmxheWVycyBhcmUgcG9zaXRpb25lZC4KICAgICBjb25zdCBGbG9hdFBv
aW50JiBib3VuZHNPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2JvdW5kc09yaWdpbjsgfQpAQCAt
MzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjb3ZlcnMgdGhl
IGVudGlyZSBsYXllci4gVXNlIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKCkgaWYgdGhlIGNvbG9y
IHNob3VsZAogICAgIC8vIG9ubHkgY292ZXIgdGhlIGNvbnRlbnRzUmVjdC4KICAgICBjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYpOwogCiAgICAgLy8gb3BhcXVlIG1lYW5zIHRoYXQgd2Uga25vdyB0aGUgbGF5ZXIgY29u
dGVudHMgaGF2ZSBubyBhbHBoYQogICAgIGJvb2wgY29udGVudHNPcGFxdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzT3BhcXVlOyB9CkBAIC0zOTksOCArMzk5LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIC8qYW5pbWF0aW9uTmFt
ZSovLCBkb3VibGUgLyp0aW1lT2Zmc2V0Ki8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bmltYXRpb24oY29uc3QgU3RyaW5nJiAvKmFuaW1hdGlvbk5hbWUqLykgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHN1
c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwogICAgIAogICAgIC8vIExheWVyIGNvbnRlbnRzCiAg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIHsgfQpAQCAtNDU0LDEw
ICs0NTQsMTAgQEAgcHVibGljOgogCiAgICAgLy8gei1wb3NpdGlvbiBpcyB0aGUgei1lcXVpdmFs
ZW50IG9mIHBvc2l0aW9uKCkuIEl0J3Mgb25seSB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMu
CiAgICAgdmlydHVhbCBmbG9hdCB6UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3pQb3NpdGlv
bjsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRaUG9zaXRpb24oZmxvYXQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRaUG9zaXRpb24oZmxvYXQpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpc3RyaWJ1dGVPcGFjaXR5KGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IGFjY3VtdWxh
dGVkT3BhY2l0eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaXN0
cmlidXRlT3BhY2l0eShmbG9hdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBmbG9hdCBh
Y2N1bXVsYXRlZE9wYWNpdHkoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IGhhc0ZsYXR0ZW5lZFBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIXByZXNl
cnZlczNEKCkgJiYgbV9jaGlsZHJlblRyYW5zZm9ybS5oYXNQZXJzcGVjdGl2ZSgpOyB9CkBAIC00
NzEsNyArNDcxLDcgQEAgcHVibGljOgogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQuZGV2aWNlU2NhbGVGYWN0b3IoKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIHsgfQotICAgIHZvaWQgbm90
ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2Vk
SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKIAogICAgIC8vIFNvbWUgY29tcG9zaXRpbmcgc3lzdGVt
cyBtYXkgZG8gaW50ZXJuYWwgYmF0Y2hpbmcgdG8gc3luY2hyb25pemUgY29tcG9zaXRpbmcgdXBk
YXRlcwogICAgIC8vIHdpdGggdXBkYXRlcyBkcmF3biBpbnRvIHRoZSB3aW5kb3cuIFRoZXNlIG1l
dGhvZHMgZmx1c2ggaW50ZXJuYWwgYmF0Y2hlZCBzdGF0ZSBvbiB0aGlzIGxheWVyCkBAIC00ODgs
NyArNDg4LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVl
QXNUZXh0QmVoYXZpb3IgPSBMYXllclRyZWVBc1RleHRCZWhhdmlvck5vcm1hbCkgY29uc3Q7CiAK
ICAgICAvLyBSZXR1cm4gYW4gZXN0aW1hdGUgb2YgdGhlIGJhY2tpbmcgc3RvcmUgbWVtb3J5IGNv
c3QgKGluIGJ5dGVzKS4gTWF5IGJlIGluY29ycmVjdCBmb3IgdGlsZWQgbGF5ZXJzLgotICAgIHZp
cnR1YWwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSBj
b25zdDsKIAogICAgIGJvb2wgdXNpbmdUaWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3Vz
aW5nVGlsZWRCYWNraW5nOyB9CiAgICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2lu
ZygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTUyNCw3ICs1MjQsNyBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIGZyb20gZGVyaXZlZCBjbGFzcyBkZXN0
cnVjdG9ycy4gU2hvdWxkIGNhbGwgd2lsbEJlRGVzdHJveWVkKCkgb24gc3VwZXIuCi0gICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAv
LyBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHBsYXRmb3JtIEdyYXBoaWNzTGF5ZXIgY2xhc3NlcyB0
byBjbGVhciB0aGUgZmlsdGVycwpAQCAtNTUxLDEyICs1NTEsMTIgQEAgcHJvdGVjdGVkOgogICAg
IEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2F0ZWRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGlj
YXRlZExheWVyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGlj
c0xheWVyKiBsYXllcikgeyBtX3JlcGxpY2F0ZWRMYXllciA9IGxheWVyOyB9CiAKLSAgICBleHBs
aWNpdCBHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKIAogICAg
IHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIExheWVyVHJlZUFz
VGV4dEJlaGF2aW9yKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcEFkZGl0aW9uYWxQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgLyppbmRlbnQqLywgTGF5ZXJUcmVlQXNUZXh0QmVoYXZp
b3IpIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGdldERlYnVnQm9yZGVySW5mbyhDb2xv
ciYsIGZsb2F0JiB3aWR0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGdldERlYnVnQm9yZGVySW5mbyhDb2xvciYsIGZsb2F0JiB3aWR0aCkgY29uc3Q7CiAKICAgICBH
cmFwaGljc0xheWVyQ2xpZW50JiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IDgyNzk4YzMwNjk1MDg3M2FiNGVk
YTc1ZTVhMDcyNTE3MjBmZDcxY2MuLmI2MDY0YjFhZWM5OGFiMDIwMzZmYjQ3M2VlYzgxYzViZGI2
ZWEzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgY2xhc3MgSW50UmVjdDsKICAgICAKIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxJY29uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3JlYXRl
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKIAotICAgIH5JY29uKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkljb24oKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpOwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JN
KElPUykKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5k
IHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
Y29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFn
ZVB0cik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDIyMTRhNmNmMDM5ZDExMjhmYTIwYjcxYTk0MTk0ZGU2MDNiZjAyMzUu
LjQyNjE3ZWQ1ZDUyNzQ4MjA3ZDZkOGNlNzcyNWQyZDY0YTlhZmIwYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW1hZ2UoKTsKICAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZT4g
Y3JlYXRlKEltYWdlT2JzZXJ2ZXIqID0gMCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2U+
IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpOwotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsgCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2U+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgaW1hZ2UgY29udGFp
bnMgb25seSByZXNvdXJjZXMgZnJvbSBpdHMgb3duIHNlY3VyaXR5IG9yaWdpbi4KICAgICB2aXJ0
dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpOwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpLmlzRW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNp
emUoY29uc3QgRmxvYXRTaXplJikgeyB9CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsg
fQogI2VuZGlmCiAKLSAgICBib29sIHNldERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldERh
dGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggNWM5OTQ5OTE5NWI3ZWRhYjA5NGIyY2E5ZDZjZjA2NjU3ZjUwM2U3ZC4uMTk1NTcxMjUzMTdl
ZTJkMDFjMmI4MWQxZDFmYWNlMjdlMzgwNGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC04NywxNSArODcsMTUgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGJvb2wgaGFzQWxwaGEpOwogCi0gICAgfkltYWdl
QnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkltYWdlQnVmZmVyKCk7CiAKICAgICAvLyBU
aGUgYWN0dWFsIHJlc29sdXRpb24gb2YgdGhlIGJhY2tpbmcgc3RvcmUKICAgICBjb25zdCBJbnRT
aXplJiBpbnRlcm5hbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCBJ
bnRTaXplJiBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFNpemU7IH0KIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFn
ZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBTY2FsZUJl
aGF2aW9yID0gU2NhbGVkKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFNjYWxl
QmVoYXZpb3IgPSBTY2FsZWQpIGNvbnN0OwogICAgIC8vIEdpdmUgaGludHMgb24gdGhlIGZhc3Rl
ciBjb3B5SW1hZ2UgTW9kZSwgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlIGlmIGl0IHN1cHBv
cnRzIHRoZSBEb250Q29weUJhY2tpbmdTdG9yZSBiZWhhdmlvcgogICAgIC8vIG9yIHJldHVybiBD
b3B5QmFja2luZ1N0b3JlIGlmIGl0IGRvZXNuJ3QuICAKICAgICBzdGF0aWMgQmFja2luZ1N0b3Jl
Q29weSBmYXN0Q29weUltYWdlTW9kZSgpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgcGxhY2UgaXRzIHN1Y2Nlc3MgaW50byB0aGUg
Z2l2ZW4gb3V0LXZhcmlhYmxlCiAgICAgLy8gc28gdGhhdCBjcmVhdGUoKSBrbm93cyB3aGVuIGl0
IHNob3VsZCByZXR1cm4gZmFpbHVyZS4KLSAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGJvb2wm
IHN1Y2Nlc3MpOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgYm9v
bCYgc3VjY2Vzcyk7CiB9OwogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXggM2U5NGNmMWFhYjg4OGJkOWE2ZmIyNGMyMWJkY2E3
N2FhZjdlYzZkNi4uMWViOWYwODIzMGVmMjQ0MTdhMGY4YTg1YzI4OGY4Nzc4MTI2MWFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCkBAIC0xMDQsMTQg
KzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgVVNFKENHKQotICAgIGV4cGxpY2l0IElu
dFBvaW50KGNvbnN0IENHUG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNl
IGl0J3MgbG9zc3kKLSAgICBvcGVyYXRvciBDR1BvaW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgSW50UG9pbnQoY29uc3QgQ0dQb2ludCYpOyAvLyBkb24ndCBkbyB0aGlz
IGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQorICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9y
IENHUG9pbnQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKICNpZiBPUyhE
QVJXSU4pICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZ
UEVTKQotICAgIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IE5TUG9pbnQmKTsgLy8gZG9uJ3QgZG8g
dGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICBvcGVyYXRvciBOU1BvaW50KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSW50UG9pbnQoY29uc3QgTlNQb2lu
dCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQorICAgIFdF
QkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TUG9pbnQoKSBjb25zdDsKICNlbmRpZgogI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3QuaAppbmRleCAxZjQyMjYwOGRkZDlhYWQ2NWYzZjc4MjMzZTY2ZWRjN2U0OTlkZDU3Li41ODQ5
ZTNhYWE4YTUxMDJmMzRhMzgyN2YxZTI1ODljMmVmMGMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAg
ICBJbnRSZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgICAgICA6
IG1fbG9jYXRpb24oSW50UG9pbnQoeCwgeSkpLCBtX3NpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KSkgeyB9CiAKLSAgICBleHBsaWNpdCBJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOyAvLyBkb24n
dCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQotICAgIGV4cGxpY2l0IEludFJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2Ug
aXQncyBsb3NzeQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEludFJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSW50UmVjdChjb25zdCBMYXlvdXRSZWN0Jik7IC8v
IGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgICAgIAogICAg
IEludFBvaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtMTM3LDggKzEzNyw4IEBA
IHB1YmxpYzoKICAgICBJbnRQb2ludCBtaW5YTWF4WUNvcm5lcigpIGNvbnN0IHsgcmV0dXJuIElu
dFBvaW50KG1fbG9jYXRpb24ueCgpLCBtX2xvY2F0aW9uLnkoKSArIG1fc2l6ZS5oZWlnaHQoKSk7
IH0gLy8gdHlwaWNhbGx5IGJvdHRvbUxlZnQKICAgICBJbnRQb2ludCBtYXhYTWF4WUNvcm5lcigp
IGNvbnN0IHsgcmV0dXJuIEludFBvaW50KG1fbG9jYXRpb24ueCgpICsgbV9zaXplLndpZHRoKCks
IG1fbG9jYXRpb24ueSgpICsgbV9zaXplLmhlaWdodCgpKTsgfSAvLyB0eXBpY2FsbHkgYm90dG9t
UmlnaHQKICAgICAKLSAgICBib29sIGludGVyc2VjdHMoY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaW50ZXJzZWN0cyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKICAgICAvLyBUaGlz
IGNoZWNrcyB0byBzZWUgaWYgdGhlIHJlY3QgY29udGFpbnMgeCx5IGluIHRoZSB0cmFkaXRpb25h
bCBzZW5zZS4KICAgICAvLyBFcXVpdmFsZW50IHRvIGNoZWNraW5nIGlmIHRoZSByZWN0IGNvbnRh
aW5zIGEgMXgxIHJlY3QgYmVsb3cgYW5kIHRvIHRoZSByaWdodCBvZiAocHgscHkpLgpAQCAtMTQ2
LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICAgICAgeyByZXR1cm4gcHggPj0geCgpICYmIHB4IDwg
bWF4WCgpICYmIHB5ID49IHkoKSAmJiBweSA8IG1heFkoKTsgfQogICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBjb250YWlucyhwb2ludC54KCks
IHBvaW50LnkoKSk7IH0KIAotICAgIHZvaWQgaW50ZXJzZWN0KGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2b2lkIHVuaXRlKGNvbnN0IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
dGVyc2VjdChjb25zdCBJbnRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bml0ZShj
b25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCB1bml0ZUlmTm9uWmVybyhjb25zdCBJbnRSZWN0Jik7
CiAKICAgICB2b2lkIGluZmxhdGVYKGludCBkeCkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSk7CiAg
ICAgfQogICAgIHZvaWQgaW5mbGF0ZShpbnQgZCkgeyBpbmZsYXRlWChkKTsgaW5mbGF0ZVkoZCk7
IH0KLSAgICB2b2lkIHNjYWxlKGZsb2F0IHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nh
bGUoZmxvYXQgcyk7CiAKICAgICBJbnRTaXplIGRpZmZlcmVuY2VUb1BvaW50KGNvbnN0IEludFBv
aW50JikgY29uc3Q7CiAgICAgaW50IGRpc3RhbmNlU3F1YXJlZFRvUG9pbnQoY29uc3QgSW50UG9p
bnQmIHApIGNvbnN0IHsgcmV0dXJuIGRpZmZlcmVuY2VUb1BvaW50KHApLmRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpOyB9CkBAIC0xODcsMTEgKzE4NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IFVTRShDRykKLSAgICBvcGVyYXRvciBDR1JlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBvcGVyYXRvciBDR1JlY3QoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKLSAg
ICBvcGVyYXRvciBOU1JlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBO
U1JlY3QoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgK
aW5kZXggYTgyMzI4YzIyZDRmMTQzZTk5ODM3NGE1NjhlZWI4YzFlMjY4ZjkwMi4uZmU5YTFhYzRh
M2NjYTRhNTM3NGI2M2YzZGU1ZmE5YjUzZmEzYWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBJbnRTaXplIHsK
IHB1YmxpYzoKICAgICBJbnRTaXplKCkgOiBtX3dpZHRoKDApLCBtX2hlaWdodCgwKSB7IH0KICAg
ICBJbnRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWln
aHQoaGVpZ2h0KSB7IH0KLSAgICBleHBsaWNpdCBJbnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOyAv
LyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQorICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEludFNpemUoY29uc3QgRmxvYXRTaXplJik7IC8vIGRvbid0IGRvIHRo
aXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgCiAgICAgaW50IHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2hlaWdodDsgfQpAQCAtMTM3LDEzICsxMzcsMTMgQEAgcHVibGljOgogICAgIH0KIAogI2lmIFVT
RShDRykKLSAgICBleHBsaWNpdCBJbnRTaXplKGNvbnN0IENHU2l6ZSYpOyAvLyBkb24ndCBkbyB0
aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQotICAgIG9wZXJhdG9yIENHU2l6ZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEludFNpemUoY29uc3QgQ0dTaXplJik7
IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CisgICAgV0VCQ09S
RV9FWFBPUlQgb3BlcmF0b3IgQ0dTaXplKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQ
RVMpCi0gICAgZXhwbGljaXQgSW50U2l6ZShjb25zdCBOU1NpemUgJik7IC8vIGRvbid0IGRvIHRo
aXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5Ci0gICAgb3BlcmF0b3IgTlNTaXplKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSW50U2l6ZShjb25zdCBOU1NpemUgJik7
IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CisgICAgV0VCQ09S
RV9FWFBPUlQgb3BlcmF0b3IgTlNTaXplKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApp
bmRleCBkMTIzNjFhOGM4OTk2NTcwM2QzMzAyNzNlY2VmODg0OTRlOGUwMGZjLi5iNTNmZTJiOWY3
NjBhZjRjMjEyMWZhODQ2MzQ3NWU3MWI4YTE5YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCiAgICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbiksIG1fc2l6ZShzaXplKSB7IH0K
ICAgICBMYXlvdXRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIDogbV9sb2NhdGlvbihyZWN0Lmxv
Y2F0aW9uKCkpLCBtX3NpemUocmVjdC5zaXplKCkpIHsgfQotCi0gICAgZXhwbGljaXQgTGF5b3V0
UmVjdChjb25zdCBGbG9hdFJlY3QmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNl
IGl0J3MgbG9zc3kKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBMYXlvdXRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQn
cyBsb3NzeQogICAgICAgICAKICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb247IH0KICAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UG9pbnQgbWF4
WE1heFlDb3JuZXIoKSBjb25zdCB7IHJldHVybiBMYXlvdXRQb2ludChtX2xvY2F0aW9uLngoKSAr
IG1fc2l6ZS53aWR0aCgpLCBtX2xvY2F0aW9uLnkoKSArIG1fc2l6ZS5oZWlnaHQoKSk7IH0gLy8g
dHlwaWNhbGx5IGJvdHRvbVJpZ2h0CiAgICAgCiAgICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IExh
eW91dFJlY3QmKSBjb25zdDsKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IExheW91dFJlY3QmKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNvbnN0IExheW91dFJlY3Qm
KSBjb25zdDsKIAogICAgIC8vIFRoaXMgY2hlY2tzIHRvIHNlZSBpZiB0aGUgcmVjdCBjb250YWlu
cyB4LHkgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLgogICAgIC8vIEVxdWl2YWxlbnQgdG8gY2hl
Y2tpbmcgaWYgdGhlIHJlY3QgY29udGFpbnMgYSAxeDEgcmVjdCBiZWxvdyBhbmQgdG8gdGhlIHJp
Z2h0IG9mIChweCxweSkuCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgY29u
dGFpbnMoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBjb250YWlucyhw
b2ludC54KCksIHBvaW50LnkoKSk7IH0KIAogICAgIHZvaWQgaW50ZXJzZWN0KGNvbnN0IExheW91
dFJlY3QmKTsKLSAgICB2b2lkIHVuaXRlKGNvbnN0IExheW91dFJlY3QmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVuaXRlKGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2b2lkIHVuaXRlSWZO
b25aZXJvKGNvbnN0IExheW91dFJlY3QmKTsKIAogICAgIHZvaWQgaW5mbGF0ZVgoTGF5b3V0VW5p
dCBkeCkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2l6ZS5zZXRIZWln
aHQobV9zaXplLmhlaWdodCgpICsgZHkgKyBkeSk7CiAgICAgfQogICAgIHZvaWQgaW5mbGF0ZShM
YXlvdXRVbml0IGQpIHsgaW5mbGF0ZVgoZCk7IGluZmxhdGVZKGQpOyB9Ci0gICAgdm9pZCBzY2Fs
ZShmbG9hdCBzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjYWxlKGZsb2F0IHMpOwogICAg
IHZvaWQgc2NhbGUoZmxvYXQgeFNjYWxlLCBmbG9hdCB5U2NhbGUpOwogCiAgICAgTGF5b3V0UmVj
dCB0cmFuc3Bvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QobV9sb2NhdGlvbi50
cmFuc3Bvc2VkUG9pbnQoKSwgbV9zaXplLnRyYW5zcG9zZWRTaXplKCkpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAxYmI4NWQ3ZGE4
ODUzOWYzOGIxNDE0NzYyOTExMGZiZWQxZjI1ZjlmLi5iNmQ3ZDZiMmFmMTZkNTNkMzcyOGIxZWRk
N2QwZDE5NjE3MGIyM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKQEAgLTY0MCw3ICs2NDAsNyBAQCB0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVy
RmFjdG9yeVN1cHBvcnQgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGNhbGxSZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGNhbGxSZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4IGJhNmQ1NDk0
ZmUwYjhhZGRmNDQ2OTljZTk0YjI2NDBiMGE3NmYxODQuLjQ4YzMyOWE2ZmM4ZTJlYjdlMDc2OTk2
MDQwMDNhZWZjYjU5Yzk2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
LmgKQEAgLTg0LDExICs4NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGF0
aCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAg
ICAgUGF0aCgpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoKCk7CiAjaWYgVVNFKENHKQog
ICAgICAgICBQYXRoKFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPik7CiAjZW5kaWYKLSAgICAg
ICAgflBhdGgoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgflBhdGgoKTsKIAogICAgICAgICBQ
YXRoKGNvbnN0IFBhdGgmKTsKICAgICAgICAgUGF0aCYgb3BlcmF0b3I9KGNvbnN0IFBhdGgmKTsK
QEAgLTEyOSw3ICsxMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQcmVm
ZXJCZXppZXJSb3VuZGVkUmVjdAogICAgICAgICB9OwogCi0gICAgICAgIHZvaWQgYWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLCBS
b3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOworICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5h
dGl2ZVJvdW5kZWRSZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiwgUm91bmRlZFJlY3RTdHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRS
ZWN0KTsKICAgICAgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVkUmVjdCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDZiYTM3ZjFl
NjlhODM2NDJkNDM2NzAxMzY1ODc0NzYwYTQwZGY0MTMuLjlmODBjMGQ5NmVlZGQ0OTE0N2U4MzNi
ZjgwM2M1ZjdkNTk2NTE0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5oCkBAIC0zNSwzMCArMzUsMzAgQEAgY2xhc3MgUmVnaW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFJlZ2lvbigpOwotICAgIFJlZ2lvbihjb25z
dCBJbnRSZWN0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVnaW9uKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVnaW9uKGNvbnN0IEludFJlY3QmKTsKIAogICAgIEludFJlY3QgYm91bmRzKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcGUuaXNSZWN0KCk7IH0KIAotICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cygpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbnRSZWN0PiByZWN0cygpIGNvbnN0OwogCi0g
ICAgdm9pZCB1bml0ZShjb25zdCBSZWdpb24mKTsKLSAgICB2b2lkIGludGVyc2VjdChjb25zdCBS
ZWdpb24mKTsKLSAgICB2b2lkIHN1YnRyYWN0KGNvbnN0IFJlZ2lvbiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnRlcnNlY3QoY29uc3QgUmVnaW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdWJ0
cmFjdChjb25zdCBSZWdpb24mKTsKIAogICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEludFNpemUm
KTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgcmVnaW9uIGlzIGEgc3Vic2V0
IG9mIHRoaXMgcmVnaW9uLgotICAgIGJvb2wgY29udGFpbnMoY29uc3QgUmVnaW9uJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBSZWdpb24mKSBjb25zdDsK
IAogICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgcXVlcnkgcmVnaW9uIGludGVyc2VjdHMgYW55IHBhcnQgb2YgdGhp
cyByZWdpb24uCiAgICAgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFJlZ2lvbiYpIGNvbnN0OwogCi0g
ICAgdW5zaWduZWQgdG90YWxBcmVhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgdG90YWxBcmVhKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBncmlkU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcGUuZ3JpZFNpemUoKTsgfQogCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0U2hhcGVTZWdtZW50cyhjb25zdCBWZWN0b3I8aW50PiYgc2VnbWVudHMp
IHsgbV9zaGFwZS5zZXRTZWdtZW50cyhzZWdtZW50cyk7IH0KICAgICB2b2lkIHNldFNoYXBlU3Bh
bnMoY29uc3QgVmVjdG9yPFNwYW4+JiBzcGFucykgeyBtX3NoYXBlLnNldFNwYW5zKHNwYW5zKTsg
fQotICAgIHZvaWQgdXBkYXRlQm91bmRzRnJvbVNoYXBlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVCb3VuZHNGcm9tU2hhcGUoKTsKIAogcHJpdmF0ZToKIApAQCAtMTE5LDcgKzEx
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBTaGFwZSBpbnRlcnNlY3RTaGFwZXMoY29u
c3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBlMik7CiAgICAgICAgIHN0YXRpYyBT
aGFwZSBzdWJ0cmFjdFNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hh
cGUyKTsKIAotICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CisgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEludFNpemUmKTsKICAgICAgICAg
dm9pZCBzd2FwKFNoYXBlJik7CiAKICAgICAgICAgc3RydWN0IENvbXBhcmVDb250YWluc09wZXJh
dGlvbjsKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb21wYXJlT3BlcmF0aW9uPgogICAgICAgICBzdGF0aWMgYm9vbCBjb21wYXJlU2hhcGVz
KGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNoYXBlJiBzaGFwZTIpOwogICAgICAgICAKLSAg
ICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNWYWxpZCgpIGNvbnN0OwogCiAgICAgICAgIC8vIEZvciBlbmNvZGluZy9kZWNvZGluZyBvbmx5
LgogICAgICAgICBjb25zdCBWZWN0b3I8aW50LCAzMj4mIHNlZ21lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBjODM5MjdiZjVjOTJjODE0YjcyMjFmMDg4
NzViYzM1ZjBmNGI3NmUyLi5iZDIyMDExMGRlOTY5N2Y1ZjMxMDI2NzhjMzI1YzI5ZmZkMDgwZWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaApAQCAtNTUsOTYgKzU1LDk2IEBAIHB1YmxpYzoKICAgICAvLyB0byBrZWVw
IHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCiAgICAgc3RhdGljIGNvbnN0IGludCBrVGlsZWRM
YXllclRpbGVTaXplID0gNTEyOwogCi0gICAgZXhwbGljaXQgR3JhcGhpY3NMYXllckNBKEdyYXBo
aWNzTGF5ZXJDbGllbnQmKTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0EoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDQSgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldE5hbWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXJJRCBwcmltYXJ5TGF5ZXJJRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIHByaW1hcnlMYXllcklEKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQ0FMYXllcigpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlMYXllcigpOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwg
aW50IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFw
aGljc0xheWVyKiwgR3JhcGhpY3NMYXllciogc2libGluZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNpYmxp
bmcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXll
ciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50IGluZGV4KSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiwgR3JhcGhpY3NMYXllciogc2libGluZykgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNz
TGF5ZXIqIHNpYmxpbmcpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9v
bCByZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5l
d0NoaWxkKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJl
bnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NM
YXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNE
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJvdW5kc09yaWdpbihjb25zdCBGbG9hdFBv
aW50Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEJvdW5kc09yaWdp
bihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9v
bCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29udGVudChib29sKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRl
bnQoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzVmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c09wYXF1ZShib29sKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c09wYXF1
ZShib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KGJvb2wpIG92ZXJyaWRlOwogCiAgICAgLy8gcmV0dXJuIHRydWUgaWYg
d2Ugc3RhcnRlZCBhbiBhbmltYXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9h
dCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldE9wYWNpdHko
ZmxvYXQpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwg
Ym9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBP
U0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9k
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIFNob3VsZENsaXBUb0xheWVyID0gQ2xpcFRvTGF5ZXIpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIFNob3VsZENsaXBUb0xheWVyID0gQ2xpcFRvTGF5ZXIpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxh
eSgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzQ2xp
cHBpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzQ2xpcHBpbmdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c3VtZUFuaW1hdGlvbnMoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3Qg
RmxvYXRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9m
ZnNldCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBGbG9h
dFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52
YXMoUGxhdGZvcm1MYXllciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBOb0NvbnRlbnRzTGF5ZXI7IH0KICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVy
KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9y
ZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXN0b21BcHBlYXJhbmNlKEN1c3RvbUFwcGVhcmFuY2UpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21CZWhhdmlvcihDdXN0b21CZWhhdmlvcikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1c3RvbUFwcGVhcmFu
Y2UoQ3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHNldEN1c3RvbUJlaGF2aW9yKEN1c3RvbUJlaGF2aW9yKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JD
aGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVu
dE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7
IH0KIApAQCAtMTU4LDUxICsxNTgsNTEgQEAgcHVibGljOgogICAgIH07CiAgICAgdm9pZCByZWN1
cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiwgY29uc3QgVHJhbnNmb3JtU3Rh
dGUmLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSAxLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
blJlbGF0aXZlVG9CYXNlID0gRmxvYXRQb2ludCgpLCBib29sIGFmZmVjdGVkQnlQYWdlU2NhbGUg
PSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHZpc2libGVS
ZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KSBjb25z
dCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgdmlzaWJsZVJlY3RD
aGFuZ2VSZXF1aXJlc0ZsdXNoKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxl
ZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpIG92ZXJyaWRlOwogICAgIAot
ICAgIGJvb2wgYW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEFuaW1hdGlvbiopIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYW5p
bWF0aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFu
aW1hdGlvbiopIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoaWNz
TGF5ZXJDQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQgb3ZlcnJpZGVzCiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uS2V5LCBDRlRp
bWVJbnRlcnZhbCBiZWdpblRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNBTGF5ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFy
dGVkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uS2V5LCBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0
aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXkpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRl
bnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09yaWVudGF0
aW9uKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQ
bGF0Zm9ybUNBTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXAp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgY2xpcCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FM
YXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc1Nob3dpbmdE
ZWJ1Z0JvcmRlcigpOyB9Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBh
aW50Q291bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKFBs
YXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHBsYXRmb3Jt
Q0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZSB7
IHJldHVybiBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29u
dGVudHNPcGFxdWUoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgb3ZlcnJpZGUgeyByZXR1cm4gbGF5ZXJEaWREaXNwbGF5KGxheWVyKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1DQUxheWVy
Q29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkQWdncmVz
c2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNv
aG9ydHMoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMo
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtQ0FM
YXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZv
ck5ld1RpbGVzKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91bGRBZ2dyZXNzaXZlbHlSZXRh
aW5UaWxlcyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5U
aWxlQ29ob3J0cyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0NvbW1pdHRpbmdDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0NvbW1pdHRpbmdDaGFuZ2VzOyB9CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBiYWNraW5nU3RvcmVN
ZW1vcnlFc3RpbWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVwYWludE9uU2l6ZUNoYW5nZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzaG91bGRSZXBhaW50T25TaXpl
Q2hhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxheWVyRGlkRGlzcGxheShQ
bGF0Zm9ybUNBTGF5ZXIqKTsKICAgICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CiAgICAg
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpAQCAtMjczLDEwICsyNzMsMTAgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKICAgICBQbGF0
Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5
ZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFw
aGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNl
dFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImLCBmbG9hdCYgd2lkdGgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0RGVidWdCb3JkZXJJbmZvKENv
bG9yJiwgZmxvYXQmIHdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5k
ZW50LCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGNvbXB1dGVQaXhlbEFsaWdubWVudChmbG9hdCBjb250ZW50c1NjYWxlLCBjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlLAogICAgICAgICBGbG9hdFBvaW50JiBwb3NpdGlv
biwgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZzZXQp
IGNvbnN0OwpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlY3Vyc2l2
ZVZpc2libGVSZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb25zdCBUcmFuc2Zvcm1TdGF0ZSYpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBib29sIGNhblRocm90dGxlTGF5ZXJGbHVzaCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBjYW5UaHJvdHRsZUxheWVy
Rmx1c2goKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFVzZWQgdG8gdHJhY2sgdGhlIHBhdGgg
ZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMuCiAgICAgc3RydWN0IFJlcGxpY2FTdGF0
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXll
ckZsdXNoU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9M
YXllckZsdXNoU2NoZWR1bGVyLmgKaW5kZXggNzJiNjcyNWU0NzA1MTkwYWRkODQ5Y2Q4MWU1NzZm
OWFjODY1Njc5YS4uMGFjZDM3YTU1OGRkZTIwNWZkN2RhZjY1MzNmYjYyOTJkMDEwOTNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJGbHVzaFNj
aGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVy
Rmx1c2hTY2hlZHVsZXIuaApAQCAtMzUsMTkgKzM1LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExheWVyRmx1c2hTY2hlZHVsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExh
eWVyRmx1c2hTY2hlZHVsZXIpOwogcHVibGljOgotICAgIExheWVyRmx1c2hTY2hlZHVsZXIoTGF5
ZXJGbHVzaFNjaGVkdWxlckNsaWVudCopOwotICAgIHZpcnR1YWwgfkxheWVyRmx1c2hTY2hlZHVs
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hT
Y2hlZHVsZXJDbGllbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5MYXllckZsdXNo
U2NoZWR1bGVyKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgdm9pZCBzdXNwZW5kKCk7Ci0gICAgdm9pZCBy
ZXN1bWUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc3VtZSgpOwogCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1
YWwgdm9pZCBsYXllckZsdXNoQ2FsbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgbGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJQb29sLmgKaW5kZXggYzNiOWI1
YTNkNDE5YWEyMjliNzk0NGEwY2Q5NGEzNGFjNGU0NzEzZS4uODY4MTE2ZjMwYTkzMGI0OTI2M2I0
MGNkNDY5NWFhODVlZTNhNmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvTGF5ZXJQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvTGF5ZXJQb29sLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTGF5ZXJQb29sIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclBvb2wp
OwogcHVibGljOgotICAgIExheWVyUG9vbCgpOwotICAgIH5MYXllclBvb2woKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBMYXllclBvb2woKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+TGF5ZXJQb29sKCk7
CiAKICAgICBzdGF0aWMgSGFzaFNldDxMYXllclBvb2wqPiYgYWxsTGF5ZXJQb29scygpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUZpbHRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FGaWx0ZXJzLmgKaW5kZXggMWFlMTg1MTI2MjVmNDgxYzNmYjk4ZGE5YzFjYmJlZDU4YmNh
MWQ5YS4uODg2MDY4Nzg4NzgxOGUzMDZhMGU4ODNlODFjNTcwY2ZhZTg1MjU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUZpbHRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBRmls
dGVycy5oCkBAIC00NywxMyArNDcsMTMgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogCiBjbGFz
cyBQbGF0Zm9ybUNBRmlsdGVycyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0RmlsdGVy
c09uTGF5ZXIoUGxhdGZvcm1MYXllciosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKLSAgICBz
dGF0aWMgdm9pZCBzZXRCbGVuZGluZ0ZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBjb25z
dCBCbGVuZE1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEZpbHRlcnNP
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0QmxlbmRpbmdGaWx0ZXJzT25MYXllcihQbGF0Zm9y
bUxheWVyKiwgY29uc3QgQmxlbmRNb2RlKTsKICAgICBzdGF0aWMgaW50IG51bUFuaW1hdGVkRmls
dGVyUHJvcGVydGllcyhGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUpOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBhbmltYXRlZEZpbHRlclByb3BlcnR5TmFtZShGaWx0ZXJPcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUsIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgc3RhdGljIFJldGFpblB0cjxOU1ZhbHVlPiBmaWx0ZXJWYWx1
ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPE5TVmFs
dWU+IGZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBp
bnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpOwogI2VuZGlmCiAKICNpZmRlZiBVU0VfQ0FfRklM
VEVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuaAppbmRleCBiZWE2Njg5NzJjNDM4YTQ2ODUxYzY4Y2NkMzBmYjQ2NTNkZjVm
YzRhLi41YzBhODYzM2YyNzcxMmJkZThkMWE0NzdiNTM3MDcwM2FkNDQyYjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5QbGF0Zm9ybUNBTGF5ZXIoKTsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRCBsYXllcklEKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklEOyB9CiAKQEAgLTkyLDcgKzky
LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBwYXNzZXMgdGhlIGxheWVyIGFz
IGEgdm9pZCogcmF0aGVyIHRoYW4gYSBQbGF0Zm9ybUxheWVyIGJlY2F1c2UgUGxhdGZvcm1MYXll
cgogICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIE9iaiBDIGFuZCBDKysuIFRoaXMg
YWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1YWdlcy4KLSAgICBzdGF0aWMgUGxhdGZvcm1D
QUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIodm9pZCogcGxhdGZvcm1MYXllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKHZvaWQqIHBs
YXRmb3JtTGF5ZXIpOwogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCkBAIC0yNDUsMTQgKzI0NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIAogICAgIC8vIEZ1bmN0aW9ucyBhbGxvd3MgdXMgdG8gc2hhcmUg
aW1wbGVtZW50YXRpb24gYWNyb3NzIFdlYlRpbGVkTGF5ZXIgYW5kIFdlYkxheWVyCiAgICAgc3Rh
dGljIFJlcGFpbnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxh
dGZvcm1DQUxheWVyKik7Ci0gICAgc3RhdGljIHZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250
ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4
dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzKTsKICAg
ICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihDR0NvbnRleHRSZWYsIFBsYXRmb3Jt
Q0FMYXllciosIGludCByZXBhaW50Q291bnQsIENHQ29sb3JSZWYgY3VzdG9tQmFja2dyb3VuZENv
bG9yKTsKICAgICBzdGF0aWMgQ0dSZWN0IGZyYW1lRm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1MYXll
ciopOwogCiAgICAgdm9pZCBtb3ZlVG9MYXllclBvb2woKTsKIAogcHJvdGVjdGVkOgotICAgIFBs
YXRmb3JtQ0FMYXllcihMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogb3duZXIpOwogCiAgICAgdmlydHVhbCBMYXllclBvb2wmIGxheWVyUG9vbCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMuaAppbmRleCA3NDZkY2FhMjkxOThlZTg3
YzZmMTYwMzhjNzJkYmM5OTZlNDNhNmVjLi40ZjAwNTRjNjVhNjE1MDE2M2U2YjZmMWRlM2RhYzBj
YjhmOTI0NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgdm9pZCBzZXRIYXNFeHBsaWNpdEJlZ2luVGltZShDQUFuaW1hdGlvbiAqLCBib29sKTsK
IGNsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1DQUFu
aW1hdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKFBsYXRmb3JtQW5p
bWF0aW9uUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYpOwogCiAgICAgdmlydHVh
bCB+UGxhdGZvcm1DQUFuaW1hdGlvbk1hYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgKaW5k
ZXggNDFmMDM2NzZjZTQzZWYyZTNhODVjYzBjYzM0ZWY1N2Q3MGRlZWRkMC4uNTQ5YjA5MmI2ZTU0
MzU4ODFkMTFmMDU3M2QxYzA4ODkwODYwZDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBm
b3IgT2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2Vz
LgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBs
YXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCopOwogCi0gICAgc3RhdGljIExheWVy
VHlwZSBsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTGF5ZXJUeXBlIGxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciopOwogCiAgICAgflBsYXRmb3JtQ0FMYXllck1hYygpOwogCkBAIC04OSw3ICs4
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRIaWRkZW4oYm9vbCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQoYm9v
bCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb3VibGVTaWRlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXREb3VibGVTaWRlZChib29sKSBvdmVycmlkZTsK
QEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAg
ICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJy
aWRlOwotICAgIHN0YXRpYyBib29sIGZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGZpbHRlcnNDYW5C
ZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIHZpcnR1YWwgdm9pZCBj
b3B5RmlsdGVyc0Zyb20oY29uc3QgUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJm
YWNlUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5oCmluZGV4IGM1MDczYTcxZWRhYmZkY2Q0MDVmNDY2YjIxZDhhNDI3OWM1YThiYjMuLjgw
YWYwZDVmMmY3MDQzNTYwYThlMjUyMTY2OGM0YTEzYWY2YTk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKQEAgLTQ3LDE0
ICs0NywxNCBAQCBjbGFzcyBJT1N1cmZhY2VQb29sIHsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8SU9TdXJmYWNlUG9vbD47CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSU9TdXJmYWNl
UG9vbCYgc2hhcmVkUG9vbCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJT1N1cmZhY2VQ
b29sJiBzaGFyZWRQb29sKCk7CiAKICAgICBQYXNzUmVmUHRyPElPU3VyZmFjZT4gdGFrZVN1cmZh
Y2UoSW50U2l6ZSBzaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpOwotICAgIHZvaWQgYWRkU3Vy
ZmFjZShJT1N1cmZhY2UqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFN1cmZhY2UoSU9T
dXJmYWNlKik7CiAKICAgICB2b2lkIGRpc2NhcmRBbGxTdXJmYWNlcygpOwogCi0gICAgdm9pZCBz
ZXRQb29sU2l6ZShzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UG9vbFNpemUo
c2l6ZV90KTsKIAogICAgIHZvaWQgc2hvd1Bvb2xTdGF0aXN0aWNzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKaW5kZXggN2Y4
MDhjYTIxNzA5OTI0ODA4YzhhNTg5MjhlY2VjYzQ4ZjMwZmQ4MS4uYzdjZmExNWZlOTcxZDg3Yjg4
ZmNlN2VjNGE5NDU2ZTk0M2YwYzBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTM3LDIyICszNywyMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElPU3VyZmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PElPU3VyZmFjZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElPU3VyZmFjZT4g
Y3JlYXRlKEludFNpemUsIENvbG9yU3BhY2UpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElPU3Vy
ZmFjZT4gY3JlYXRlRnJvbU1hY2hQb3J0KG1hY2hfcG9ydF90LCBDb2xvclNwYWNlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXpl
LCBDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJT1N1
cmZhY2U+IGNyZWF0ZUZyb21NYWNoUG9ydChtYWNoX3BvcnRfdCwgQ29sb3JTcGFjZSk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VS
ZWYsIENvbG9yU3BhY2UpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElPU3VyZmFjZT4gY3JlYXRl
RnJvbUltYWdlKENHSW1hZ2VSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVm
UHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwogCiAgICAgc3RhdGlj
IEludFNpemUgbWF4aW11bVNpemUoKTsKIAotICAgIG1hY2hfcG9ydF90IGNyZWF0ZU1hY2hQb3J0
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgbWFjaF9wb3J0X3QgY3JlYXRlTWFjaFBvcnQo
KSBjb25zdDsKIAogICAgIC8vIEFueSBpbWFnZXMgY3JlYXRlZCBmcm9tIGEgc3VyZmFjZSBuZWVk
IHRvIGJlIHJlbGVhc2VkIGJlZm9yZSByZWxlYXNpbmcKICAgICAvLyB0aGUgc3VyZmFjZSwgb3Ig
YW4gZXhwZW5zaXZlIEdQVSByZWFkYmFjayBjYW4gcmVzdWx0LgotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZSgpOwogCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKSBjb25z
dCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KLSAgICBHcmFwaGljc0NvbnRleHQmIGVuc3Vy
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNvbnRl
eHQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQmIGVuc3VyZUdyYXBoaWNz
Q29udGV4dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0Zm9y
bUNvbnRleHQoKTsKIAogICAgIGVudW0gY2xhc3MgU3VyZmFjZVN0YXRlIHsKICAgICAgICAgVmFs
aWQsCkBAIC02NiwxNyArNjYsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWb2xhdGlsZSgpIGNv
bnN0OwogCiAgICAgLy8gc2V0SXNWb2xhdGlsZSBvbmx5IGhhcyBhbiBlZmZlY3Qgb24gaU9TIGFu
ZCBPUyAxMC45IGFuZCBhYm92ZS4KLSAgICBTdXJmYWNlU3RhdGUgc2V0SXNWb2xhdGlsZShib29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdXJmYWNlU3RhdGUgc2V0SXNWb2xhdGlsZShib29sKTsK
IAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVf
dCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9CiAgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAKLSAgICBi
b29sIGlzSW5Vc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSW5Vc2UoKSBj
b25zdDsKIAogICAgIC8vIFRoZSBncmFwaGljcyBjb250ZXh0IGNhY2hlZCBvbiB0aGUgc3VyZmFj
ZSBjb3VudHMgYXMgYSAidXNlciIsIHNvIHRvIGdldAogICAgIC8vIGFuIGFjY3VyYXRlIHJlc3Vs
dCBmcm9tIGlzSW5Vc2UoKSwgaXQgbmVlZHMgdG8gYmUgcmVsZWFzZWQuCi0gICAgdm9pZCByZWxl
YXNlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlR3Jh
cGhpY3NDb250ZXh0KCk7CiAKIHByaXZhdGU6CiAgICAgSU9TdXJmYWNlKEludFNpemUsIENvbG9y
U3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAppbmRleCBkMTJlOWIzNTY0MDM4NzNlMjM2Y2E4
MGRmNjNlN2I3ZWMzODBjZDQ5Li43MjBmNjY1ZDZiZDEyMjg3NzUwMmZiYWVhZWE0ZmY4ZGFkMDRk
ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtNDAsMTAgKzQwLDEwIEBAIHR5cGVkZWYg
SW50UmVjdEV4dGVudCBGaWx0ZXJPdXRzZXRzOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRmlsdGVyT3BlcmF0aW9u
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIEZpbHRlck9wZXJhdGlvbnMoKTsKICAgICBGaWx0ZXJP
cGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7
IH0KICAgICAKLSAgICBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRvcj0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdG9y
PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5k
ZXggNjA4YjU4YTFjMGVjZWM3OGQzOGRiYjI3NGYzODJmNDM4OTc0NDUwMS4uYWVlODk2ZjcwYjg0
MmU4OGQ2ZWMzOWRhMjhiZGQ3YTJlY2NmMjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
LmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIHB1
YmxpYzoKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQoKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
KTsKIAogICAgIHZvaWQgcmVwYWludCgpOwogICAgIHZvaWQgbG9hZFN0YXRlQ2hhbmdlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IGM0
M2VlNmFlOTBhODM3ZDFjZDBhMTkyNzRiOTRiZjhhMmI5OTFiZDMuLmRhMWIwNmRhNWY4MGI3NWI1
MTE2ZjExNWQyNGE1YjM0MGM2YmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLmgKQEAgLTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRMYXllclBv
b2xDYXBhY2l0eSh1bnNpZ25lZCk7Ci0gICAgc3RhdGljIHZvaWQgZHJhaW5MYXllclBvb2woKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRMYXllclBvb2xDYXBhY2l0eSh1bnNp
Z25lZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZHJhaW5MYXllclBvb2woKTsK
IAogICAgIC8vIExvZ2dpbmcKICAgICB2b2lkIGR1bXBUaWxlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaAppbmRleCA3
YzNiZDExNTYyMDRjZDE4MTRiZTQyMGFiNjIxNGE4MjU1YzVjOTA5Li5mZGU4ZjI3NGQ0ZjFkMmJh
ZjMwNjU3YTZlZGUxYThhNDJlMDA1Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaApAQCAtMzcsOSArMzcsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtRXZlbnRGYWN0b3J5IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVu
dChXZWJFdmVudCAqKTsKLSAgICBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNyZWF0ZVBsYXRm
b3JtV2hlZWxFdmVudChXZWJFdmVudCAqKTsKLSAgICBzdGF0aWMgUGxhdGZvcm1LZXlib2FyZEV2
ZW50IGNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChXZWJFdmVudCAqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVu
dChXZWJFdmVudCAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2
ZW50IGNyZWF0ZVBsYXRmb3JtV2hlZWxFdmVudChXZWJFdmVudCAqKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRF
dmVudChXZWJFdmVudCAqKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHN0YXRpYyBQ
bGF0Zm9ybVRvdWNoRXZlbnQgY3JlYXRlUGxhdGZvcm1Ub3VjaEV2ZW50KFdlYkV2ZW50ICopOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9G
bG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaAppbmRleCA4MTE1YmI2NTVkOGRjNjMyYmRlMjczOGFm
MDFjOTk2NGE1NjlkYWIwLi4wM2Y0ZDNmMGZiY2QyNDU2ZjVhOGRiZTczZGE2OGZhOTMwMTk2OGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmgKQEAgLTM2LDExICszNiwxMSBAQCBjbGFzcyBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQgewogcHVibGljOgogICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dCgpOwogCi0gICAgdm9pZCBlbmFibGVEZW5vcm1hbFN1cHBvcnQoKTsKLSAgICB2b2lkIHNhdmVN
YWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZURl
bm9ybWFsU3VwcG9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZU1haW5UaHJlYWRF
bnZpcm9ubWVudCgpOwogICAgIHZvaWQgcHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7
CiAKLSAgICBzdGF0aWMgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBzaGFyZWQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBzaGFyZWQoKTsK
IAogcHJpdmF0ZToKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJREdhbWVw
YWRQcm92aWRlci5oCmluZGV4IGJkMTUxYjI4YjE1MWVjMzBjYzUyMTNhNWU3YTI4YjA5Nzg2MjQ5
M2QuLmVkNzYyODFlZjQ4ZTU0YTg5MmU3MmRlZmEzMTEyMzNkOTliNTkxMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgSElER2FtZXBhZFByb3ZpZGVyIDogcHVibGljIEdhbWVwYWRQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSElER2FtZXBhZFByb3ZpZGVyKTsKICAgICBm
cmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SElER2FtZXBhZFByb3ZpZGVyPjsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgSElER2FtZXBhZFByb3ZpZGVyJiBzaGFyZWQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSElER2FtZXBhZFByb3ZpZGVyJiBzaGFyZWQoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFkUHJvdmlkZXJDbGll
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
U3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0
cmVhbUNlbnRlci5oCmluZGV4IDgyNjAwNzU2MGFlODg1YzdiYTQ0OTZlN2U3OGQ0MzBlMTQyOTMz
ODcuLmFiM2U1ZmZmNmMyZDMyZWE1N2FiN2IxM2YzNWUwNzc1ZmVlNjhlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tNZWRpYVN0
cmVhbUNlbnRlciBmaW5hbCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXIoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpOwog
CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
YXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0
cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBh
dWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3Ry
YWludHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4
IGU2YWM1MmY4MTU2Y2FkNjRhNGVkMGYzOWY5OTUxNWVmMTg3NTM4NzkuLmM1ZTdmMGZiZGQwZmQz
MDVhZWQ3YWZiZGUxYTUwMjE1Y2E2YjEyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICAgICAg
TXVsdGlwYXJ0Rm9ybURhdGEgLy8gZm9yIG11bHRpcGFydC9mb3JtLWRhdGEKICAgICB9OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCos
IHNpemVfdCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBD
U3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8Y2hhcj4mKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNv
bnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIEVuY29kaW5nVHlwZSA9IEZv
cm1VUkxFbmNvZGVkKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlTXVs
dGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIERvY3VtZW50
Kik7Ci0gICAgfkZvcm1EYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkZvcm1EYXRhKCk7CiAK
ICAgICAvLyBGSVhNRTogQm90aCB0aGVzZSBmdW5jdGlvbnMgcGVyZm9ybSBhIGRlZXAgY29weSBv
ZiBtX2VsZW1lbnRzLCBidXQgZGlmZmVyIGluIGhhbmRsaW5nIG9mIG90aGVyIGRhdGEgbWVtYmVy
cy4KICAgICAvLyBIb3cgbXVjaCBvZiB0aGF0IGlzIGludGVudGlvbmFsPyBXZSBuZWVkIGJldHRl
ciBuYW1lcyB0aGF0IGV4cGxhaW4gdGhlIGRpZmZlcmVuY2UuCkBAIC0yMTEsMTAgKzIxMSwxMCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsK
LSAgICB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0gZmFsc2UpOwotICAgIHZvaWQgYXBwZW5kQmxv
Yihjb25zdCBVUkwmIGJsb2JVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmls
ZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5l
cmF0ZUZpbGUgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNv
bnN0IFVSTCYgYmxvYlVSTCk7CiAgICAgY2hhciogZXhwYW5kRGF0YVN0b3JlKHNpemVfdCk7CiAK
ICAgICB2b2lkIGZsYXR0ZW4oVmVjdG9yPGNoYXI+JikgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4
IDU5MDRlZWE5MGI5ZDExMWQ1ZjU1MjU5YjdhM2U1MjJhZGY5MjhiMDYuLjZlMTA1MWUxZmQyODY2
YWZiNjBjOTg4ZWEyZDFhZTRlMTJjMzQ1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIEhUVFBI
ZWFkZXJNYXAgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcFR5cGU6OmNvbnN0X2l0ZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yOwogCi0gICAgSFRUUEhlYWRlck1hcCgpOwotICAgIH5IVFRQSGVh
ZGVyTWFwKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSFRUUEhlYWRlck1hcCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIH5IVFRQSGVhZGVyTWFwKCk7CiAKICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUg
ZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gY29weURhdGEoKSBjb25zdDsK
QEAgLTU5LDE1ICs1OSwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCkgeyBtX2hlYWRl
cnMuY2xlYXIoKTsgfQogCi0gICAgU3RyaW5nIGdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OwotICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAotICAgIFN0cmluZyBnZXQoSFRUUEhlYWRlck5hbWUpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXQoSFRUUEhlYWRlck5hbWUpIGNvbnN0OwogICAg
IHZvaWQgc2V0KEhUVFBIZWFkZXJOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBib29s
IGNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lKSBjb25zdDsKICAgICBjb25zdF9pdGVyYXRvciBmaW5k
KEhUVFBIZWFkZXJOYW1lKSBjb25zdDsKLSAgICBib29sIHJlbW92ZShIVFRQSGVhZGVyTmFtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZW1vdmUoSFRUUEhlYWRlck5hbWUpOwogCiAgICAg
Ly8gSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpdGVyYWwgdG8gYW55IG9mIHRoZXNlIGZ1
bmN0aW9ucywganVzdCB1c2UgYSBIVFRQSGVhZGVyTmFtZSBpbnN0ZWFkLgogICAgIHRlbXBsYXRl
PHNpemVfdCBsZW5ndGg+IFN0cmluZyBnZXQoY29uc3QgY2hhciAoJilbbGVuZ3RoXSkgY29uc3Qg
PSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAxMGIzYWYyZDNlMGMzNGY3N2JhMTMyYzNjOTc2
YzI5YWRjMmJhOTk0Li5iNDljMWI0OGQ1ZmNhNDQ1YjYxYTBhZWM0MTJmZGY3MDIzZmMyMzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKQEAgLTQyLDEwICs0MiwxMCBAQCBjbGFzcyBTb3VwTmV0d29ya1Nlc3Np
b247CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIGRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiBjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJh
c2UgPSBTdHJpbmcoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsK
IAotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgYm9v
bCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzUHJpdmF0ZTsg
fQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAgICAgLy8gTWF5IGJlIG51bGwsIGlu
IHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCiAgICAgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3Jt
U2Vzc2lvbi5nZXQoKTsgfQotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBj
b29raWVTdG9yYWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKICNlbGlmIFVTRShTT1VQ
KQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8U291cE5ldHdvcmtT
ZXNzaW9uPik7CiAgICAgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAppbmRleCBl
OTc0MmRkNGMyYjU2ZTEzZGM4ZTI4OTUyYzhlMWE0NGFkYjY4YzI1Li5jNWJhMWVjOWViMjk0OGFj
ZTMyZmRlZmM1YzJhYjI5MGI3YTRkMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaApAQCAtNjAsMTIgKzYwLDEyIEBA
IGNsYXNzIFByb3RlY3Rpb25TcGFjZUJhc2UgewogcHVibGljOgogICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
OyB9CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3Q7Ci0gICAgaW50IHBvcnQo
KSBjb25zdDsKLSAgICBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIHNlcnZlclR5cGUoKSBjb25z
dDsKLSAgICBib29sIGlzUHJveHkoKSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcmIHJlYWxtKCkg
Y29uc3Q7Ci0gICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aGVudGlj
YXRpb25TY2hlbWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGhv
c3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcG9ydCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQcm94eSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IFN0cmluZyYgcmVhbG0oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50aWNhdGlvblNjaGVtZSgp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgcmVjZWl2ZXNDcmVkZW50aWFsU2VjdXJlbHkoKSBjb25z
dDsKIApAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY29tcGFyZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYik7CiAKIHBy
b3RlY3RlZDoKLSAgICBQcm90ZWN0aW9uU3BhY2VCYXNlKCk7Ci0gICAgUHJvdGVjdGlvblNwYWNl
QmFzZShjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0LCBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJU
eXBlLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUHJvdGVjdGlvblNwYWNlQmFzZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIFByb3RlY3Rpb25TcGFjZUJhc2UoY29uc3QgU3RyaW5nJiBob3N0LCBpbnQg
cG9ydCwgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSwgY29uc3QgU3RyaW5nJiByZWFsbSwgUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUpOwogCiAgICAgLy8gSGFzaCB0YWJsZSBk
ZWxldGVkIHZhbHVlcywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGll
ZCBvciBkZXN0cm95ZWQuCiAgICAgUHJvdGVjdGlvblNwYWNlQmFzZShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSh0cnVlKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJvdGVjdGlv
blNwYWNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUHJv
dGVjdGlvblNwYWNlQ29jb2EuaAppbmRleCBkMTMzNjQwMmYyNmM5YjQ0NjkxODk0NzNiYjIwZjkw
ZDRkNDY0Y2EzLi4zYmM3MTEyOTdlZjcwNDcwNjdjYzMxYzU3MTU2ZWQ4N2JmNzM4MjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Byb3RlY3Rpb25T
cGFjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Q
cm90ZWN0aW9uU3BhY2VDb2NvYS5oCkBAIC01MCwyNCArNTAsMjQgQEAgcHVibGljOgogI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgZXhwbGljaXQgUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlv
blNwYWNlUmVmKTsKICNlbmRpZgotICAgIGV4cGxpY2l0IFByb3RlY3Rpb25TcGFjZShOU1VSTFBy
b3RlY3Rpb25TcGFjZSAqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQcm90ZWN0aW9u
U3BhY2UoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9y
bUNvbXBhcmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IGIpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKLSAgICBib29sIGVuY29kaW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoKSBjb25z
dCB7IHJldHVybiBtX25zU3BhY2UgJiYgZW5jb2RpbmdSZXF1aXJlc1BsYXRmb3JtRGF0YShtX25z
U3BhY2UuZ2V0KCkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlbmNvZGluZ1JlcXVpcmVz
UGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uc1NwYWNlICYmIGVuY29kaW5nUmVxdWly
ZXNQbGF0Zm9ybURhdGEobV9uc1NwYWNlLmdldCgpKTsgfQogI2VuZGlmCiAKLSAgICBib29sIHJl
Y2VpdmVzQ3JlZGVudGlhbFNlY3VyZWx5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCByZWNlaXZlc0NyZWRlbnRpYWxTZWN1cmVseSgpIGNvbnN0OwogCiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjZlNwYWNlKCkgY29uc3Q7CiAjZW5kaWYK
LSAgICBOU1VSTFByb3RlY3Rpb25TcGFjZSAqbnNTcGFjZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIE5TVVJMUHJvdGVjdGlvblNwYWNlICpuc1NwYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBzdGF0aWMgYm9vbCBlbmNvZGluZ1JlcXVpcmVzUGxhdGZvcm1EYXRhKE5TVVJM
UHJvdGVjdGlvblNwYWNlICopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVuY29k
aW5nUmVxdWlyZXNQbGF0Zm9ybURhdGEoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiAjZW5kaWYK
IAogICAgIG11dGFibGUgUmV0YWluUHRyPE5TVVJMUHJvdGVjdGlvblNwYWNlPiBtX25zU3BhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCmlu
ZGV4IGIyM2IwZTlhYWJkY2JlOWJjNTFkYjk0OWRmMjQ3YTlmODBjM2RjZDMuLmNmZTYwM2NmZDEx
MDk0NzViOTk4YmIyNzZjNjcwZGNhMDZiOTg0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5oCkBAIC04NiwyNSArODYsMjUgQEAgcHVibGlj
OgogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xv
b2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJjZUhhbmRsZSosIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSosIENGVVJMUmVzcG9uc2VSZWYpOwogI2VuZGlmCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IGNyZWF0ZShSZXNvdXJj
ZUxvYWRlciosIE5TVVJMUmVzcG9uc2UgKik7Ci0gICAgflF1aWNrTG9va0hhbmRsZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBj
cmVhdGUoUmVzb3VyY2VMb2FkZXIqLCBOU1VSTFJlc3BvbnNlICopOworICAgIFdFQkNPUkVfRVhQ
T1JUIH5RdWlja0xvb2tIYW5kbGUoKTsKIAotICAgIGJvb2wgZGlkUmVjZWl2ZURhdGFBcnJheShD
RkFycmF5UmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZBcnJheVJlZik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYpOwotICAgIGJv
b2wgZGlkRmluaXNoTG9hZGluZygpOwotICAgIHZvaWQgZGlkRmFpbCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkRmFpbCgpOwogCi0gICAgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2UoKTsKICNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSgpOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldENsaWVudChQYXNzUmVmUHRyPFF1aWNrTG9va0hhbmRsZUNsaWVudD4gY2xpZW50KSB7IG1f
Y2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBy
ZXZpZXdVVEkoKSBjb25zdDsKICAgICBOU1VSTCAqZmlyc3RSZXF1ZXN0VVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdFJlcXVlc3RVUkwuZ2V0KCk7IH0KLSAgICBOU1VSTCAqcHJldmlld1JlcXVl
c3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOU1VSTCAqcHJldmlld1JlcXVlc3RV
UkwoKSBjb25zdDsKICAgICBRTFByZXZpZXdDb252ZXJ0ZXIgKmNvbnZlcnRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udmVydGVyLmdldCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggODgwZmJmMmFmNDM4
MmRlN2U5MmE4ZGZiMGMxNTc3ZWY0ZGJiYmY5NS4uMTBjMTZjNzc2NDMzYzNiMDZjYTQ2NjJlNzIz
N2U0ZmEyNGY3NzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaApAQCAtMTY4LDggKzE2OCw4IEBAIHByaXZhdGU6CiBjbGFzcyBOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTsKIHB1YmxpYzoKLSAgICBOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotICAgIH5Ob25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpOwogCiAgICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YS5oCmluZGV4IDdkZDU2ZGViN2VlODExMTk3OWYxOWVmMmFkMWI1MDY2MzdlNTAwZmMu
LjhkNDUyMzQ1NjBmZDQyN2ZmMTZjMDA4ODRmOWZiODNhOGRlMzczYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgT25s
eUFwcGxpY2F0aW9uUGx1Z2lucwogICAgIH07CiAKLSAgICBib29sIHN1cHBvcnRzTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgQWxsb3dlZFBsdWdpblR5cGVzKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN1cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgQWxsb3dlZFBsdWdpblR5cGVzKSBjb25zdDsKICAgICBTdHJpbmcgcGx1
Z2luTmFtZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwogICAgIFN0
cmluZyBwbHVnaW5GaWxlRm9yTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmgKaW5kZXggYWFmYzQ5MWFjMzA1MTFmNzIxNmRmOGRmNWQ0OGFjNmM2ZmFkZGFhNS4uODU4
ZTg5NzljYjc2OGJmYWMzYjVhZWIyZDgwNzM2Njk0ODAxZTAwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKQEAgLTQxLDEyICs0
MSwxMiBAQCBjbGFzcyBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIHZvaWQgTWFpblRocmVhZEZ1bmN0aW9uKHZvaWQqKTsKIAotICAgIHN0YXRpYyBQbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyJiBzY2hlZHVsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlciYgc2NoZWR1bGVyKCk7CiAKLSAgICB2b2lk
IHNjaGVkdWxlQ2FsbChOUFAsIE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIHVzZXJEYXRhKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlQ2FsbChOUFAsIE1haW5UaHJlYWRGdW5j
dGlvbiosIHZvaWQqIHVzZXJEYXRhKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJQbHVnaW4oTlBQKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJQbHVnaW4oTlBQKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZ2lzdGVyUGx1Z2luKE5QUCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVy
UGx1Z2luKE5QUCk7CiAKIHByaXZhdGU6CiAgICAgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCmluZGV4IDgxYjYw
NDUwNGFkZGJiYjhkMDM5Y2RiN2Q2MjcwMjQwMTY3OTA1MTYuLmEwYzUzNzUxNWY4OTkxYzE5YTE3
NjBhYWZmNWM3M2Y2MmQ0ZGE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgSGl0
VGVzdExvY2F0aW9uIHsKIHB1YmxpYzoKIAotICAgIEhpdFRlc3RMb2NhdGlvbigpOworICAgIFdF
QkNPUkVfRVhQT1JUIEhpdFRlc3RMb2NhdGlvbigpOwogICAgIEhpdFRlc3RMb2NhdGlvbihjb25z
dCBMYXlvdXRQb2ludCYpOwogICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50Jik7
CiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFF1YWQm
KTsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIC8vIE1ha2UgYSBjb3B5IHRoZSBIaXRU
ZXN0TG9jYXRpb24gaW4gYSBuZXcgcmVnaW9uIGJ5IGFwcGx5aW5nIGdpdmVuIG9mZnNldCB0byBp
bnRlcm5hbCBwb2ludCBhbmQgYXJlYS4KICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KTsKICAgICBIaXRUZXN0TG9jYXRp
b24oY29uc3QgSGl0VGVzdExvY2F0aW9uJik7Ci0gICAgfkhpdFRlc3RMb2NhdGlvbigpOworICAg
IFdFQkNPUkVfRVhQT1JUIH5IaXRUZXN0TG9jYXRpb24oKTsKICAgICBIaXRUZXN0TG9jYXRpb24m
IG9wZXJhdG9yPShjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsKIAogICAgIGNvbnN0IExheW91dFBv
aW50JiBwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnQ7IH0KQEAgLTY2LDggKzY2LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Jl
Y3RCYXNlZDsgfQogICAgIGJvb2wgaXNSZWN0aWxpbmVhcigpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZWN0aWxpbmVhcjsgfQogICAgIEludFJlY3QgYm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kaW5nQm94OyB9Ci0KLSAgICBzdGF0aWMgSW50UmVjdCByZWN0Rm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50UmVjdCByZWN0Rm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICBpbnQgdG9wUGFk
ZGluZygpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRQb2ludCgpLnkoKSAtIG1fYm91bmRpbmdCb3gu
eSgpOyB9CiAgICAgaW50IHJpZ2h0UGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdC
b3gubWF4WCgpIC0gcm91bmRlZFBvaW50KCkueCgpIC0gMTsgfQogICAgIGludCBib3R0b21QYWRk
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0JveC5tYXhZKCkgLSByb3VuZGVkUG9pbnQo
KS55KCkgLSAxOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRl
eCA2ZWM4Y2EzNTZkMDI5OThmMjFiMmU5N2YwZTVlMWJjMDg2ZmE2NTRhLi5lZmM4NDcxZDQxY2E3
ZGNhMGYxNWFiNzY4OWRkNGFiYjljN2M1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKQEAgLTU1LDEzICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgSGl0VGVzdFJl
c3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcpOwogICAgIGV4cGxpY2l0IEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExv
Y2F0aW9uJik7CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAg
fkhpdFRlc3RSZXN1bHQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+SGl0VGVzdFJlc3VsdCgpOwog
ICAgIEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAKICAg
ICBOb2RlKiBpbm5lck5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9kZS5nZXQoKTsgfQot
ICAgIEVsZW1lbnQqIGlubmVyRWxlbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEVs
ZW1lbnQqIGlubmVyRWxlbWVudCgpIGNvbnN0OwogICAgIE5vZGUqIGlubmVyTm9uU2hhcmVkTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpOyB9Ci0gICAgRWxl
bWVudCogaW5uZXJOb25TaGFyZWRFbGVtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
RWxlbWVudCogaW5uZXJOb25TaGFyZWRFbGVtZW50KCkgY29uc3Q7CiAgICAgRWxlbWVudCogVVJM
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJVUkxFbGVtZW50LmdldCgpOyB9CiAgICAg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsg
fQogICAgIGJvb2wgaXNPdmVyV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJXaWRnZXQ7
IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50
IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXJOb2RlIGZyYW1lLCB0aGUgZnJhbWUgY29u
dGFpbmluZyBpbm5lck5vZGUuCiAgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lck5v
ZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lOyB9CiAgICAg
SW50UG9pbnQgcm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJv
dW5kZWRJbnRQb2ludChwb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7IH0KLSAgICBGcmFtZSogaW5u
ZXJOb2RlRnJhbWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogaW5uZXJOb2Rl
RnJhbWUoKSBjb25zdDsKIAogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29y
ZGluYXRlcyBvZiB0aGUgaW5uZXIgbm9kZS4KICAgICBjb25zdCBMYXlvdXRQb2ludCYgbG9jYWxQ
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxQb2ludDsgfQpAQCAtOTIsMjcgKzkyLDI3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKICAgICB2b2lkIHNl
dElzT3ZlcldpZGdldChib29sIGIpIHsgbV9pc092ZXJXaWRnZXQgPSBiOyB9CiAKLSAgICBGcmFt
ZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKLSAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgc3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Bl
bGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mKSBjb25zdDsKICAgICBTdHJpbmcgcmVwbGFjZWRT
dHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgdGl0bGUoVGV4dERpcmVjdGlvbiYpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0aXRsZShUZXh0RGlyZWN0aW9uJikgY29uc3Q7CiAg
ICAgU3RyaW5nIGlubmVyVGV4dElmVHJ1bmNhdGVkKFRleHREaXJlY3Rpb24mKSBjb25zdDsKLSAg
ICBTdHJpbmcgYWx0RGlzcGxheVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0aXRsZURpc3Bs
YXlTdHJpbmcoKSBjb25zdDsKLSAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKLSAgICBJbnRSZWN0
IGltYWdlUmVjdCgpIGNvbnN0OwotICAgIFVSTCBhYnNvbHV0ZUltYWdlVVJMKCkgY29uc3Q7Ci0g
ICAgVVJMIGFic29sdXRlUERGVVJMKCkgY29uc3Q7Ci0gICAgVVJMIGFic29sdXRlTWVkaWFVUkwo
KSBjb25zdDsKLSAgICBVUkwgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRl
eHRDb250ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpdmVMaW5rKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGFsdERpc3BsYXlTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgdGl0bGVEaXNwbGF5U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2UqIGltYWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBp
bWFnZVJlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYWJzb2x1dGVJbWFnZVVS
TCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZVBERlVSTCgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0ZXh0Q29udGVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNMaXZlTGluaygpIGNvbnN0OwogICAgIGJvb2wgaXNPdmVyTGluaygpIGNvbnN0OwotICAg
IGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CiAgICAgdm9pZCB0b2dnbGVNZWRpYUNvbnRyb2xz
RGlzcGxheSgpIGNvbnN0OwogICAgIHZvaWQgdG9nZ2xlTWVkaWFMb29wUGxheWJhY2soKSBjb25z
dDsKLSAgICBib29sIG1lZGlhSXNJbkZ1bGxzY3JlZW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG1lZGlhSXNJbkZ1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIHRvZ2dsZU1l
ZGlhRnVsbHNjcmVlblN0YXRlKCkgY29uc3Q7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JW
aWRlbygpIGNvbnN0OwogICAgIGJvb2wgbWVkaWFDb250cm9sc0VuYWJsZWQoKSBjb25zdDsKQEAg
LTEyMCw4ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBtZWRpYVBsYXlpbmcoKSBjb25zdDsK
ICAgICBib29sIG1lZGlhU3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCB0b2dn
bGVNZWRpYVBsYXlTdGF0ZSgpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFIYXNBdWRpbygpIGNvbnN0
OwotICAgIGJvb2wgbWVkaWFJc1ZpZGVvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBtZWRpYUhhc0F1ZGlvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYUlz
VmlkZW8oKSBjb25zdDsKICAgICBib29sIG1lZGlhTXV0ZWQoKSBjb25zdDsKICAgICB2b2lkIHRv
Z2dsZU1lZGlhTXV0ZVN0YXRlKCkgY29uc3Q7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gSWYgbV9yZWN0QmFzZWRUZXN0UmVzdWx0IGlzIDAgdGhlbiBzZXQgaXQgdG8gYSBu
ZXcgTm9kZVNldC4gUmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQuIExhenkgYWxsb2NhdGlv
biBtYWtlcwogICAgIC8vIHNlbnNlIGJlY2F1c2UgdGhlIE5vZGVTZXQgaXMgc2VsZG9tIG5lY2Vz
c2FyeSwgYW5kIGl0J3Mgc29tZXdoYXQgZXhwZW5zaXZlIHRvIGFsbG9jYXRlIGFuZCBpbml0aWFs
aXplLiBUaGlzIG1ldGhvZCBkb2VzCiAgICAgLy8gdGhlIHNhbWUgdGhpbmcgYXMgbXV0YWJsZVJl
Y3RCYXNlZFRlc3RSZXN1bHQoKSwgYnV0IGhlcmUgdGhlIHJldHVybiB2YWx1ZSBpcyBjb25zdC4K
LSAgICBjb25zdCBOb2RlU2V0JiByZWN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgTm9kZVNldCYgcmVjdEJhc2VkVGVzdFJlc3VsdCgpIGNvbnN0Owog
CiAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCA4Y2E0NTczYmIxZDNkZjM0NjIwYzUz
Mzk0NDFiMzYyZmM5M2VlZDAyLi43YWQ5NDEzOWU0MjYzZjI4YjVmYjRjZGNiZWM4ZWIyMjJiY2Yy
ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IHJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFBv
c2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGFkanVzdFBvc2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdm9pZCBhZGp1c3RM
b2dpY2FsUG9zaXRpb24oZmxvYXQgZGVsdGFMb2dpY2FsTGVmdCwgZmxvYXQgZGVsdGFMb2dpY2Fs
VG9wKQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCgpKQpAQCAtMjEyLDExICsyMTIs
MTEgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBGbG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90b3BMZWZ0
LnkoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3QobV90b3BM
ZWZ0LnkoKSwgbV90b3BMZWZ0LngoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSk7
IH0KICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KHRv
cExlZnQoKSwgc2l6ZSgpKTsgfQogCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
bGluZUhlaWdodCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgY2FyZXRN
YXhPZmZzZXQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGludCBjYXJldE1p
bk9mZnNldCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgaW50IGNhcmV0TWF4
T2Zmc2V0KCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0ZmllbGRzLmJpZGlFbWJlZGRpbmdMZXZlbCgpOyB9CiAgICAgdm9pZCBzZXRC
aWRpTGV2ZWwodW5zaWduZWQgY2hhciBsZXZlbCkgeyBtX2JpdGZpZWxkcy5zZXRCaWRpRW1iZWRk
aW5nTGV2ZWwobGV2ZWwpOyB9CkBAIC0yMzAsMTMgKzIzMCwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZGlydHkoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBtYXJrRGlydHkoYm9vbCBkaXJ0eSA9IHRydWUpIHsgbV9iaXRmaWVsZHMuc2V0
RGlydHkoZGlydHkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lQm94ZXMoKTsKICAgICAKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUg
c2VsZWN0aW9uU3RhdGUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NvbW1vZGF0ZUVsbGlw
c2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9v
bCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKSBjb25zdDsKICAgICAvLyB2
aXNpYmxlTGVmdEVkZ2UsIHZpc2libGVSaWdodEVkZ2UgYXJlIGluIHRoZSBwYXJlbnQncyBjb29y
ZGluYXRlIHN5c3RlbS4KLSAgICB2aXJ0dWFsIGZsb2F0IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBs
dHIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQgdmlzaWJsZVJpZ2h0RWRnZSwgZmxvYXQg
ZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBmbG9hdCBwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBmbG9hdCB2
aXNpYmxlTGVmdEVkZ2UsIGZsb2F0IHZpc2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lk
dGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYpOwogCiAjaWYgIUFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAgdm9pZCBzZXRIYXNCYWRQYXJlbnQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>