<?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>136256</bug_id>
          
          <creation_ts>2014-08-26 09:42:53 -0700</creation_ts>
          <short_desc>REGRESSION(r172940): Caused assertions on fast/storage/serialized-script-value.html, and possibly flakiness on more tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2014-08-26 09:46:26 -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>
          
          <blocked>135145</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031390</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-26 09:42:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/172940 broke the build:
Caused assertions on fast/storage/serialized-script-value.html, and possibly flakiness on more tests (Requested by ap 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>1031392</commentid>
    <comment_count>1</comment_count>
      <attachid>237153</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-26 09:43:38 -0700</bug_when>
    <thetext>Created attachment 237153
ROLLOUT of r172940

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>1031393</commentid>
    <comment_count>2</comment_count>
      <attachid>237153</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-26 09:46:23 -0700</bug_when>
    <thetext>Comment on attachment 237153
ROLLOUT of r172940

Clearing flags on attachment: 237153

Committed r172961: &lt;http://trac.webkit.org/changeset/172961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031394</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-26 09:46:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237153</attachid>
            <date>2014-08-26 09:43:38 -0700</date>
            <delta_ts>2014-08-26 09:46:23 -0700</delta_ts>
            <desc>ROLLOUT of r172940</desc>
            <filename>bug-136256-20140826094331.patch</filename>
            <type>text/plain</type>
            <size>186346</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyOTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGUzNjYyYzE2Y2RhNzJhZWUzYmYwODE1OWI4MjM2YzRmZDdjNmNiLi4xZTIyZDM1NThlODU1ZGRm
NTk1MDg3MzFhNTA5N2VkNjQwNzhlYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNC0wOC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3Mjk0MC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI1NgorCisgICAg
ICAgIENhdXNlZCBhc3NlcnRpb25zIG9uIGZhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC0K
KyAgICAgICAgdmFsdWUuaHRtbCwgYW5kIHBvc3NpYmx5IGZsYWtpbmVzcyBvbiBtb3JlIHRlc3Rz
IChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgYXAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0
ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJGVEwgc2hvdWxkIGJlIGFibGUgdG8gZG8gcG9seW1v
cnBoaWMgY2FsbCBpbmxpbmluZyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNTE0NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xNzI5NDAKKwogMjAxNC0wOC0yNiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNzI3OTQpICsgMzJCaXQgYnVpbGQ6IEFTU0VS
VCBmYWlsdXJlcyBpbiBmb3ItaW4tdGVzdHMuanMgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZlNTZkZDVkMzE2MTVl
MTQ0MmU4Yzk2YmE2ZWRlMjA5YjQzN2RkOTguLjlkNTUxY2VlNDgxOGRjNjkwZjAxYzEyNjUzMzAz
ZmQ1YzdlYjg1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDgtMjYgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNzI5NDAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzYyNTYKKworICAgICAgICBDYXVzZWQgYXNzZXJ0aW9ucyBvbiBmYXN0L3N0b3Jh
Z2Uvc2VyaWFsaXplZC1zY3JpcHQtCisgICAgICAgIHZhbHVlLmh0bWwsIGFuZCBwb3NzaWJseSBm
bGFraW5lc3Mgb24gbW9yZSB0ZXN0cyAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGFwIG9uICN3ZWJr
aXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiRlRMIHNob3Vs
ZCBiZSBhYmxlIHRvIGRvIHBvbHltb3JwaGljIGNhbGwgaW5saW5pbmciCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDUKKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTcyOTQwCisKIDIwMTQtMDgtMjMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIGJlIGFibGUgdG8g
ZG8gcG9seW1vcnBoaWMgY2FsbCBpbmxpbmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDYwMzA0YWM5MGE5NzYwNjI4ZjY5YTM4MzIxYjhiMTZhYjcwOTg1ZDYuLjUwMDIz
ZmJjZTZjMDU5MTVlYWIyMTM3ZmY4NjNjZjA0YWZmY2Q2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTY1LDExICs2NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
Ci0gICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCi0gICAgYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKICAgICBieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKLSAgICBieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKICAgICBieXRlY29kZS9D
b2RlQmxvY2suY3BwCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKICAgICBieXRlY29k
ZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagppbmRleCAyZDZmZTkxMmY0YThjMDM5ZTNhMjUzYTc5ZDczNjc0Zjg5
NzgxYzQ1Li43MDAwODNiMjBjZDYxYWFiY2ZmMmQ2NTkzNTVmZjRjZjBhM2Q2YWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMxNCwxMSArMzE0LDggQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENh
bGxFZGdlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxF
ZGdlUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxD
YWxsTGlua0luZm8uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Q2FsbExpbmtTdGF0dXMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ2FsbFZhcmlhbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ29kZUJsb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XENvZGVCbG9ja0hhc2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCIgLz4KQEAgLTkwOCwxMyArOTA1
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNC
bG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZVVzZURlZi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQ2FsbEVkZ2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENh
bGxFZGdlUHJvZmlsZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Q2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbExpbmtJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxDYWxsTGlua1N0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxWYXJpYW50LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0hhc2guaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIiAv
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZWE1MDFkMWNjOTQ3NDExZWI4ZmEy
NDA1MTQ2Y2U3ZTEzNTFkZjQyLi42MGU2OTIyMzBjODE5MTRlNmJhMmQ2OGUxOWI2NGE1Y2VkZDYy
ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYzLDEzICsyNjMsNiBAQAog
CQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUx
NTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAw
MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRl
LmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1
NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjNCN0UyNjE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
M0I3RTIwMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGM0I3RTI3MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsRWRnZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5j
cHAgKi87IH07Ci0JCTBGM0I3RTI4MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTIy
MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjNCN0UyOTE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJv
ZmlsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkwRjNCN0UyQTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjQxOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCAqLzsgfTsKLQkJMEYzQjdFMkIxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjNCN0Uy
RDE5QTEyQUFFMDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2IC8qIENhbGxF
ZGdlLmNwcCAqLzsgfTsKIAkJMEYzRDBCQkMxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3Ry
dWN0dXJlQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYzRDBCQkExOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2su
Y3BwICovOyB9OwogCQkwRjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1
cmVDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0
NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVl
UmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjE3NiwxMyArMjE2OSw2IEBACiAJCTBGM0IzQTI1MTU0NEM5OTEwMDNFRDBGRiAvKiBE
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdDRkdTaW1wbGlm
aWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0IzQTI5MTU0
NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYg
LyogREZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFs
aWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbEVkZ2VQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxFZGdlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNCN0UyMzE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVmFyaWFudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1
NiAvKiBDYWxsVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
VmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNCN0UyQzE5QTEyQUFF
MDBEOUJDNTYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNEMEJC
QTE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8q
IENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MTYwLDE4ICs1MTQ2LDExIEBACiAJCQkJMEY2NjZFQkUxODM1NjZGOTAw
RDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKIAkJCQkwRjg4
NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLywKIAkJCQkwRjgwMjNF
OTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8sCi0JCQkJMEYzQjdFMkMxOUExMkFB
RTAwRDlCQzU2IC8qIENhbGxFZGdlLmNwcCAqLywKLQkJCQkwRjNCN0UyMDE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbEVkZ2UuaCAqLywKLQkJCQkwRjNCN0UyMTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlLmNwcCAqLywKLQkJCQkwRjNCN0UyMjE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bEVkZ2VQcm9maWxlLmggKi8sCi0JCQkJMEYzQjdFMjMxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZUlubGluZXMuaCAqLywKIAkJCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYgLyog
Q2FsbExpbmtJbmZvLmNwcCAqLywKIAkJCQkwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2Fs
bExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKLQkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYg
LyogQ2FsbFZhcmlhbnQuY3BwICovLAotCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsVmFyaWFudC5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxv
Y2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAq
LywKIAkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8s
CkBAIC01OTAwLDcgKzU4NzksNiBAQAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBE
RkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3NDAwMzhEOTc2
IC8qIERGR0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3MkYwNTAxMDA3
REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjNC
N0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJl
ZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JD
OTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNjks
NyArNjE0Nyw2IEBACiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QzUyNDJCMEY1MzU1RTkwMEJB
M0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzQjdFMkIxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0
M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFRjY4MzVG
MTc0MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RUY2ODM2MTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNYODYuaCBpbiBIZWFkZXJzICovLApA
QCAtNjE4MSw3ICs2MTU4LDYgQEAKIAkJCQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklU
V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFBMUQ5
MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0I3
RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1
bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ5Nyw3ICs2NDczLDYgQEAKIAkJ
CQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIg
LyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzQjdFMjYxOUEx
MUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM4NjU1NDEx
ODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBp
biBIZWFkZXJzICovLApAQCAtNzM1Miw3ICs3MzI3LDYgQEAKIAkJCQkwRjIzNUJENTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjIzNUJEODE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFRodW5rR2VuZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkRBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzQjdFMjcxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxFZGdlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0YyOTk2QjE3QTBCQjY3
MDAxMDQxN0EgLyogRlRMRmFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUx
RjIyMDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMjVGMUFGMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03NTM5LDcgKzc1MTMsNiBAQAogCQkJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTExN0NG
MDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUNEMTgwNUU3NTUwMDQ3MkNFNCAv
KiBMTFZNQVBJLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzcwMSw3ICs3Njc0LDYgQEAKIAkJCQkx
NEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0I3RTJBMTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBE
MjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlD
MTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxFZGdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZmZmNmRmZGEyMjNkOWM2MDI2Njk3
ZmRkNWM5NDgzMTljMzEyZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbGxFZGdl
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkIENhbGxFZGdlOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCI8IiwgbV9jYWxsZWUsICIsIGNvdW50OiAi
LCBtX2NvdW50LCAiPiIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzI4ODQ5MjY1ODBlYjlkOGJmZWJlMjc5ZTdiODhkNDAyMDU5MDU2Zi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbEVkZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDYWxsRWRn
ZV9oCi0jZGVmaW5lIENhbGxFZGdlX2gKLQotI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi10eXBlZGVmIHVpbnQxNl90IENhbGxFZGdlQ291bnRUeXBlOwotCi1j
bGFzcyBDYWxsRWRnZSB7Ci1wdWJsaWM6Ci0gICAgQ2FsbEVkZ2UoKTsKLSAgICBDYWxsRWRnZShD
YWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGUpOwotICAgIAotICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9Ci0gICAgCi0gICAgQ2FsbFZhcmlhbnQgY2Fs
bGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KLSAgICBDYWxsRWRnZUNvdW50VHlwZSBj
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KLSAgICAKLSAgICBDYWxsRWRnZSBkZXNw
ZWNpZmllZENsb3N1cmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIENhbGxFZGdlKG1f
Y2FsbGVlLmRlc3BlY2lmaWVkQ2xvc3VyZSgpLCBtX2NvdW50KTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi1wdWJsaWM6Ci0gICAgQ2FsbFZh
cmlhbnQgbV9jYWxsZWU7Ci0gICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9jb3VudDsKLX07Ci0KLWlu
bGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZUNvdW50
VHlwZSBjb3VudCkKLSAgICA6IG1fY2FsbGVlKGNhbGxlZSkKLSAgICAsIG1fY291bnQoY291bnQp
Ci17Ci19Ci0KLWlubGluZSBDYWxsRWRnZTo6Q2FsbEVkZ2UoKQotICAgIDogQ2FsbEVkZ2UoQ2Fs
bFZhcmlhbnQoKSwgMCkKLXsKLX0KLQotdHlwZWRlZiBWZWN0b3I8Q2FsbEVkZ2UsIDE+IENhbGxF
ZGdlTGlzdDsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBDYWxsRWRnZV9oCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2Zp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZWFlZDQ5MDM3M2MxNzgwNjJjMTJi
MTZjYmFmZTY5YzNjMDhlNDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Q2FsbEVkZ2VQcm9maWxlLmgiCi0KLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNpbmNsdWRl
ICJDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgot
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUNhbGxFZGdlTGlz
dCBDYWxsRWRnZVByb2ZpbGU6OmNhbGxFZGdlcygpIGNvbnN0Ci17Ci0gICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKLSAgICBDYWxsRWRnZUxpc3QgcmVzdWx0Owot
ICAgIAotICAgIENhbGxWYXJpYW50IHByaW1hcnlDYWxsZWUgPSBtX3ByaW1hcnlDYWxsZWU7Ci0g
ICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb1ByaW1hcnkgPSBtX251bUNhbGxzVG9Qcmlt
YXJ5OwotICAgIC8vIERlZmVuZCBhZ2FpbnN0IHJhY2VzLiBUaGVzZSBmaWVsZHMgYXJlIG1vZGlm
aWVkIGJ5IHRoZSBsb2cgcHJvY2Vzc29yIHdpdGhvdXQgbG9ja2luZy4KLSAgICBpZiAoISFwcmlt
YXJ5Q2FsbGVlICYmIG51bUNhbGxzVG9QcmltYXJ5KQotICAgICAgICByZXN1bHQuYXBwZW5kKENh
bGxFZGdlKHByaW1hcnlDYWxsZWUsIG51bUNhbGxzVG9QcmltYXJ5KSk7Ci0gICAgCi0gICAgaWYg
KG1fb3RoZXJDYWxsZWVzKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBwcmlt
YXJ5IHRocmVhZCBoYWQganVzdCBjcmVhdGVkIGEgbV9vdGhlckNhbGxlcyB3aGlsZSBsb2cKLSAg
ICAgICAgLy8gcHJvY2Vzc2luZywgd2Ugc2VlIGEgY29uc2lzdGVudGx5IGNyZWF0ZWQgb25lLiBU
aGUgbG9jayBiZWluZyBoZWxkIGlzIGluc3VmZmljaWVudCBmb3IKLSAgICAgICAgLy8gdGhpcywg
c2luY2UgdGhlIGxvZyBwcm9jZXNzb3Igd2lsbCBvbmx5IGdyYWIgdGhlIGxvY2sgd2hlbiBtZXJn
aW5nIHRoZSBzZWNvbmRhcnkKLSAgICAgICAgLy8gc3BlY3RydW0gaW50byB0aGUgcHJpbWFyeSBv
bmUgYnV0IG1heSBzdGlsbCBjcmVhdGUgdGhlIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgaG9sZGlu
ZwotICAgICAgICAvLyBsb2Nrcy4KLSAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7Ci0gICAg
ICAgIGZvciAoQ2FsbEVkZ2UmIGVudHJ5IDogbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkKSB7
Ci0gICAgICAgICAgICAvLyBEZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUg
cHJpbWFyeSBkdXBsaWNhdGVzIGFuIGVudHJ5IGluIHRoZSBzZWNvbmRhcnkKLSAgICAgICAgICAg
IC8vIHNwZWN0cnVtLiBUaGF0IGNhbiBoYXBwZW4gd2hlbiB0aGUgR0MgcmVtb3ZlcyB0aGUgcHJp
bWFyeS4gV2UgY291bGQgaGF2ZSB0aGUgR0MgZml4Ci0gICAgICAgICAgICAvLyB0aGUgc2l0dWF0
aW9uIGJ5IGNoYW5naW5nIHRoZSBwcmltYXJ5IHRvIGJlIHNvbWV0aGluZyBmcm9tIHRoZSBzZWNv
bmRhcnkgc3BlY3RydW0sCi0gICAgICAgICAgICAvLyBidXQgdGhpcyBmaXggc2VlbXMgc2ltcGxl
ciB0byBpbXBsZW1lbnQgYW5kIGFsc28gY2hlYXBlci4KLSAgICAgICAgICAgIGlmIChlbnRyeS5j
YWxsZWUoKSA9PSByZXN1bHRbMF0uY2FsbGVlKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHRb
MF0gPSBDYWxsRWRnZShyZXN1bHRbMF0uY2FsbGVlKCksIGVudHJ5LmNvdW50KCkgKyByZXN1bHRb
MF0uY291bnQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50cnkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIHN0ZDo6c29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgp
LCBbXSAoY29uc3QgQ2FsbEVkZ2UmIGEsIGNvbnN0IENhbGxFZGdlJiBiKSAtPiBib29sIHsKLSAg
ICAgICAgICAgIHJldHVybiBhLmNvdW50KCkgPiBiLmNvdW50KCk7Ci0gICAgICAgIH0pOwotICAg
IAotICAgIGlmIChyZXN1bHQuc2l6ZSgpID49IDIpCi0gICAgICAgIEFTU0VSVChyZXN1bHRbMF0u
Y291bnQoKSA+PSByZXN1bHQubGFzdCgpLmNvdW50KCkpOwotICAgIAotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUNhbGxFZGdlQ291bnRUeXBlIENhbGxFZGdlUHJvZmlsZTo6bnVtQ2FsbHNUb0tu
b3duQ2VsbHMoKSBjb25zdAotewotICAgIENhbGxFZGdlQ291bnRUeXBlIHJlc3VsdCA9IDA7Ci0g
ICAgZm9yIChDYWxsRWRnZSYgZWRnZSA6IGNhbGxFZGdlcygpKQotICAgICAgICByZXN1bHQgKz0g
ZWRnZS5jb3VudCgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIHdvcnRo
RGVzcGVjaWZ5aW5nKGNvbnN0IENhbGxWYXJpYW50JiB2YXJpYW50KQotewotICAgIHJldHVybiAh
SGVhcDo6aXNNYXJrZWQodmFyaWFudC5yYXdDYWxsZWVDZWxsKCkpCi0gICAgICAgICYmIEhlYXA6
OmlzTWFya2VkKHZhcmlhbnQuZGVzcGVjaWZpZWRDbG9zdXJlKCkucmF3Q2FsbGVlQ2VsbCgpKTsK
LX0KLQotYm9vbCBDYWxsRWRnZVByb2ZpbGU6OndvcnRoRGVzcGVjaWZ5aW5nKCkKLXsKLSAgICBp
ZiAobV9jbG9zdXJlc0FyZURlc3BlY2lmaWVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFKU0M6OndvcnRoRGVzcGVjaWZ5aW5nKG1f
cHJpbWFyeUNhbGxlZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAobV9v
dGhlckNhbGxlZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9vdGhlckNhbGxlZXMt
Pm1fcHJvY2Vzc2VkLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgaWYgKCFKU0M6OndvcnRo
RGVzcGVjaWZ5aW5nKG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxsZWUoKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIENhbGxFZGdlUHJvZmlsZTo6dmlzaXRXZWFrKCkKLXsK
LSAgICBpZiAoIW1fcHJpbWFyeUNhbGxlZSAmJiAhbV9vdGhlckNhbGxlZXMpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAotICAgIC8vIFNlZSBpZiBhbnl0aGluZyBpcyBkZWFkIGFuZCBpZiB0aGF0IGNhbiBiZSByZWN0
aWZpZWQgYnkgZGVzcGVjaWZ5aW5nLgotICAgIGlmICh3b3J0aERlc3BlY2lmeWluZygpKSB7Ci0g
ICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKLSAgICAgICAgCi0gICAgICAgIGlmICgh
IW1fcHJpbWFyeUNhbGxlZSkKLSAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChtX3ByaW1hcnlD
YWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7Ci0gICAg
ICAgICAgICAgICAgbmV3U3BlY3RydW0uYWRkKAotICAgICAgICAgICAgICAgICAgICBtX290aGVy
Q2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkuZGVzcGVjaWZpZWRDbG9zdXJlKCksCi0g
ICAgICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPENh
bGxTcGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsK
LSAgICAgICAgQVNTRVJUKGxpc3Quc2l6ZSgpKTsKLSAgICAgICAgbV9wcmltYXJ5Q2FsbGVlID0g
bGlzdC5sYXN0KCkua2V5OwotICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0
KCkuY291bnQ7Ci0gICAgICAgIAotICAgICAgICBBU1NFUlQoISFtX290aGVyQ2FsbGVlcyA9PSAo
bGlzdC5zaXplKCkgPj0gMikpOwotICAgICAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsKLSAgICAg
ICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5jbGVhcigpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGlzdC5zaXplKCkgLSAxOyBpLS07KQotICAgICAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQoQ2FsbEVkZ2UobGlzdFtpXS5rZXks
IGxpc3RbaV0uY291bnQpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkID0gdHJ1ZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX3By
aW1hcnlDYWxsZWUucmF3Q2FsbGVlQ2VsbCgpKSkgewotICAgICAgICBtX251bUNhbGxzVG9Vbmtu
b3duQ2VsbCArPSBtX251bUNhbGxzVG9QcmltYXJ5OwotICAgICAgICAKLSAgICAgICAgbV9wcmlt
YXJ5Q2FsbGVlID0gQ2FsbFZhcmlhbnQoKTsKLSAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9
IDA7Ci0gICAgfQotICAgIAotICAgIGlmIChtX290aGVyQ2FsbGVlcykgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQobV9vdGhlckNhbGxlZXMtPm1f
cHJvY2Vzc2VkW2ldLmNhbGxlZSgpLnJhd0NhbGxlZUNlbGwoKSkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25D
ZWxsICs9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpOwotICAgICAgICAg
ICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ktLV0gPSBtX290aGVyQ2FsbGVlcy0+bV9w
cm9jZXNzZWQubGFzdCgpOwotICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2Vk
LnJlbW92ZUxhc3QoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gT25seSBleGlz
dHMgd2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgdGhlIGxvZy4KLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtKTsKLSAgICB9Ci19Ci0KLXZv
aWQgQ2FsbEVkZ2VQcm9maWxlOjphZGRTbG93KENhbGxWYXJpYW50IGNhbGxlZSwgQ2FsbEVkZ2VQ
cm9maWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpCi17Ci0gICAgLy8gVGhpcyBleGlzdHMgdG8gaGFu
ZGxlIGNhc2VzIHdoZXJlIHRoZSBzcGVjdHJ1bSB3YXNuJ3QgY3JlYXRlZCB5ZXQsIG9yIHdlJ3Jl
IHN0b3JpbmcgdG8gYQotICAgIC8vIHBhcnRpY3VsYXIgc3BlY3RydW0gZm9yIHRoZSBmaXJzdCB0
aW1lIGR1cmluZyBhIGxvZyBwcm9jZXNzaW5nIGl0ZXJhdGlvbi4KLSAgICAKLSAgICBpZiAoIW1f
b3RoZXJDYWxsZWVzKSB7Ci0gICAgICAgIG1fb3RoZXJDYWxsZWVzID0gc3RkOjptYWtlX3VuaXF1
ZTxTZWNvbmRhcnk+KCk7Ci0gICAgICAgIC8vIElmIGEgY29tcGlsZXIgdGhyZWFkIG5vdGljZXMg
dGhlIG1fb3RoZXJDYWxsZWVzIGJlaW5nIG5vbi1udWxsLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZQot
ICAgICAgICAvLyB0aGF0IGl0IHNlZXMgYSBmdWxseSBjcmVhdGVkIG9uZS4KLSAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFtX290aGVyQ2FsbGVl
cy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkgewotICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1w
b3JhcnlTcGVjdHJ1bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFNwZWN0cnVtPigpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+
YWRkKAotICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jYWxs
ZWUoKSwKLSAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY291
bnQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0
aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3JlIHNlZWluZyB0aGlzIHByb2ZpbGUgZHVyaW5nIHRo
aXMgbG9nCi0gICAgICAgIC8vIHByb2Nlc3NpbmcgaXRlcmF0aW9uLgotICAgICAgICBtZXJnZUJh
Y2tMb2cuYXBwZW5kKHRoaXMpOwotICAgIH0KLSAgICAKLSAgICBtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bS0+YWRkKGNhbGxlZSk7Ci19Ci0KLXZvaWQgQ2FsbEVkZ2VQcm9maWxl
OjptZXJnZUJhY2soKQotewotICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgCi0gICAgQVNTRVJUKG1fb3RoZXJDYWxsZWVzKTsKLSAgICBBU1NFUlQobV9vdGhlckNh
bGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOwotICAgIAotICAgIGlmICghIW1fcHJpbWFyeUNh
bGxlZSkKLSAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZCht
X3ByaW1hcnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOwotICAgIAotICAgIGlmICghbV9j
bG9zdXJlc0FyZURlc3BlY2lmaWVkKSB7Ci0gICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1
bTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3Jh
cnlTcGVjdHJ1bSkKLSAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVj
aWZpZWRDbG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChuZXdT
cGVjdHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6
ZSgpKSB7Ci0gICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0g
PSBuZXdTcGVjdHJ1bTsKLSAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5
QW5kQ291bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVp
bGRMaXN0KCk7Ci0gICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxs
cHRyOwotICAgIAotICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKLSAgICBt
X251bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7Ci0gICAgbGlzdC5yZW1vdmVM
YXN0KCk7Ci0gICAgCi0gICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlz
dC5pc0VtcHR5KCk7KSB7Ci0gICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBl
bmQoQ2FsbEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOwotICAgICAg
ICBsaXN0LnJlbW92ZUxhc3QoKTsKLSAgICB9Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
bGlzdC5zaXplKCk7IGktLTspCi0gICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxp
c3RbaV0uY291bnQ7Ci19Ci0KLXZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKLXsK
LSAgICBtX251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOwotICAgIG1fbnVtQ2FsbHNUb05vdENlbGwg
Pj49IDE7Ci0gICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7Ci0gICAgbV90b3RhbENv
dW50ID4+PSAxOwotICAgIAotICAgIGlmIChtX290aGVyQ2FsbGVlcykgewotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7
Ci0gICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgK
LSAgICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCks
Ci0gICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkg
Pj4gMSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+
bV90ZW1wb3JhcnlTcGVjdHJ1bSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKLSAgICAgICAgICAgICAgICBlbnRy
eS52YWx1ZSA+Pj0gMTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ2FsbEVkZ2VMb2c6OkNhbGxF
ZGdlTG9nKCkKLSAgICA6IG1fc2NhbGVkTG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkp
Ci17Ci0gICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKLX0K
LQotQ2FsbEVkZ2VMb2c6On5DYWxsRWRnZUxvZygpIHsgfQotCi1ib29sIENhbGxFZGdlTG9nOjpp
c0VuYWJsZWQoKQotewotICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDYWxsRWRnZVByb2ZpbGlu
ZygpICYmIE9wdGlvbnM6OnVzZUZUTEpJVCgpOwotfQotCi0jaWYgRU5BQkxFKEpJVCkKLQotZXh0
ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENh
bGxFZGdlTG9nKikgV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQg
b3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKiBsb2cpCi17Ci0gICAgbG9n
LT5wcm9jZXNzTG9nKCk7Ci19Ci0KLXZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKENDYWxs
SGVscGVycyYgaml0LCBDYWxsRWRnZVByb2ZpbGUmIHByb2ZpbGUsIEpTVmFsdWVSZWdzIGNhbGxl
ZVJlZ3MpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSAxOwotICAg
IAotICAgIEdQUlJlZyBzY3JhdGNoR1BSOwotICAgIGlmICghY2FsbGVlUmVncy51c2VzKEdQUklu
Zm86OnJlZ1QwKSkKLSAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QwOwotICAgIGVs
c2UgaWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDEpKQotICAgICAgICBzY3JhdGNo
R1BSID0gR1BSSW5mbzo6cmVnVDE7Ci0gICAgZWxzZQotICAgICAgICBzY3JhdGNoR1BSID0gR1BS
SW5mbzo6cmVnVDI7Ci0gICAgCi0gICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJbmRleCwgc2Ny
YXRjaEdQUik7Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFRl
c3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOwotICAgIAotICAgIEFTU0VS
VF9VTlVTRUQobnVtYmVyT2ZBcmd1bWVudHMsIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0g
MSArIG51bWJlck9mQXJndW1lbnRzKTsKLSAgICAKLSAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIAotICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBzaXplb2YoSlNWYWx1ZSkpKTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRoaXMpKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCk7Ci0gICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSwgY2FsbGVlUmVncyk7Ci0g
ICAgCi0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdu
bWVudEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAK
LSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9m
KEVudHJ5KSksIHNjcmF0Y2hHUFIpOwotICAgIG9rLmxpbmsoJmppdCk7Ci0KLSAgICBqaXQuc3Vi
MzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIp
OwotICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKLSAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIp
OwotICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7Ci0gICAgaml0LnN0
b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkp
KTsKLX0KLQotdm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCi0gICAgQ0NhbGxIZWxwZXJz
JiBqaXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJl
Z3MgY2FsbGVlUmVncykKLXsKLSAgICBpZiAoIWlzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25hbGx5KCk7Ci0gICAg
ZW1pdExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3MpOwotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKLQotdm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCi17Ci0g
ICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKLSAgICAKLSAg
ICBpZiAoT3B0aW9uczo6Y2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nKCkpIHsKLSAg
ICAgICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKLSAgICAgICAgCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBp
IDwgbG9nU2l6ZTsgKytpKQotICAgICAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9s
b2dbaV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1lcmdlQmFja0xvZy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtZXJnZUJh
Y2tMb2dbaV0tPm1lcmdlQmFjaygpOwotICAgIH0KLSAgICAKLSAgICBtX3NjYWxlZExvZ0luZGV4
ID0gbG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZmQ1YTJjYmFhMWJiZjBmZDQ5MTJmNjQ3MTQ4
MmU5ODY0ZTBhNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVfaAotI2RlZmluZSBDYWxs
RWRnZVByb2ZpbGVfaAotCi0jaW5jbHVkZSAiQ2FsbEVkZ2UuaCIKLSNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgotI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCi0jaW5jbHVkZSAiSlNDZWxs
LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3Mg
Q0NhbGxIZWxwZXJzOwotY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi1jbGFzcyBDYWxs
RWRnZUxvZzsKLWNsYXNzIENhbGxFZGdlUHJvZmlsZTsKLXR5cGVkZWYgVmVjdG9yPENhbGxFZGdl
UHJvZmlsZSosIDEwPiBDYWxsRWRnZVByb2ZpbGVWZWN0b3I7Ci0KLWNsYXNzIENhbGxFZGdlUHJv
ZmlsZSB7Ci1wdWJsaWM6Ci0gICAgQ2FsbEVkZ2VQcm9maWxlKCk7Ci0gICAgCi0gICAgQ2FsbEVk
Z2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxz
VG9Ob3RDZWxsOyB9Ci0gICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb1Vua25vd25DZWxs
KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5rbm93bkNlbGw7IH0KLSAgICBDYWxsRWRn
ZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0OwotICAgIAotICAgIENhbGxF
ZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQ291bnQ7IH0K
LSAgICAKLSAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmluZyBDb2RlQmxvY2sncyBs
b2NrLgotICAgIENhbGxFZGdlTGlzdCBjYWxsRWRnZXMoKSBjb25zdDsKLSAgICAKLSAgICB2b2lk
IHZpc2l0V2VhaygpOwotICAgIAotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQ2FsbEVkZ2VM
b2c7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtub3duQ2FsbGVlcyA9IDU7
Ci0gICAgCi0gICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yJiBtZXJn
ZUJhY2tMb2cpOwotICAgIAotICAgIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoKTsKLSAgICB2b2lk
IGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9n
KTsKLSAgICB2b2lkIG1lcmdlQmFjaygpOwotICAgIHZvaWQgZmFkZUJ5SGFsZigpOwotICAgIAot
ICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBvd24gbG9jay4gSXQgbmVl
ZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KLSAgICAvLyBsb2NrLiBOb3JtYWxs
eSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9jaywgYnV0IHRoYXQgd291
bGQgcmVxdWlyZSBhCi0gICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRvIHBvaW50IGF0IHRoZSBD
b2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUgaXMKLSAgICAvLyBjaGVh
cGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBD
b2RlQmxvY2sgbG9jayBpczoKLSAgICAvLyBhY3F1aXJlIHRoZSBDb2RlQmxvY2sgbG9jayBiZWZv
cmUgdGhpcyBvbmUuCi0gICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7Ci0gICAg
Ci0gICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7Ci0gICAgCi0gICAgQ2FsbEVkZ2VD
b3VudFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKLSAgICBDYWxsRWRnZUNvdW50VHlwZSBtX251
bUNhbGxzVG9Ob3RDZWxsOwotICAgIENhbGxFZGdlQ291bnRUeXBlIG1fbnVtQ2FsbHNUb1Vua25v
d25DZWxsOwotICAgIENhbGxFZGdlQ291bnRUeXBlIG1fdG90YWxDb3VudDsKLSAgICBDYWxsVmFy
aWFudCBtX3ByaW1hcnlDYWxsZWU7Ci0gICAgCi0gICAgdHlwZWRlZiBTcGVjdHJ1bTxDYWxsVmFy
aWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVjdHJ1bTsKLSAgICAKLSAgICBzdHJ1Y3Qg
U2Vjb25kYXJ5IHsKLSAgICAgICAgVmVjdG9yPENhbGxFZGdlPiBtX3Byb2Nlc3NlZDsgLy8gUHJv
Y2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVkLgotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0cnVtOwotICAgIH07Ci0gICAgCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhlckNhbGxlZXM7Ci19OwotCi1jbGFzcyBD
YWxsRWRnZUxvZyB7Ci1wdWJsaWM6Ci0gICAgQ2FsbEVkZ2VMb2coKTsKLSAgICB+Q2FsbEVkZ2VM
b2coKTsKLQotICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOwotICAgIAotI2lmIEVOQUJMRShK
SVQpCi0gICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBDYWxsRWRnZVByb2ZpbGUm
LCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0IHN0YWNrIGlzIGFsaWdu
ZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNhbGxlZUdQUiAtIGFyZSBj
bG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4gdXNlLgotICAgIAotICAg
IC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxsRWRnZVByb2ZpbGUgaW5zdGFuY2Ug
aWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcwotICAgIC8vIHRoaXMgaW4gYSB0aHJl
YWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNyZWF0ZVRyYW5zYWN0aW9uYWxseS4K
LSAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIE93blB0cjxDYWxsRWRnZVByb2Zp
bGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAg
ICAKLSAgICB2b2lkIHByb2Nlc3NMb2coKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b2dTaXplID0gMTAwMDA7Ci0gICAgCi0gICAgc3RydWN0IEVudHJ5IHsKLSAgICAgICAgSlNWYWx1
ZSBtX3ZhbHVlOwotICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIG1fcHJvZmlsZTsKLSAgICB9Owot
ICAgIAotICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7Ci0gICAgRW50cnkgbV9sb2dbbG9n
U2l6ZV07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIENhbGxFZGdlUHJv
ZmlsZV9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bEVkZ2VQcm9maWxlSW5saW5lcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmVh
MzIwZjk1ZmU4NzM1N2ZkMTgyNDBmZTExNDI3Y2NjYTU5ODM4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYg
Q2FsbEVkZ2VQcm9maWxlSW5saW5lc19oCi0jZGVmaW5lIENhbGxFZGdlUHJvZmlsZUlubGluZXNf
aAotCi0jaW5jbHVkZSAiQ2FsbEVkZ2VQcm9maWxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1p
bmxpbmUgQ2FsbEVkZ2VQcm9maWxlOjpDYWxsRWRnZVByb2ZpbGUoKQotICAgIDogbV9jbG9zdXJl
c0FyZURlc3BlY2lmaWVkKGZhbHNlKQotICAgICwgbV9udW1DYWxsc1RvUHJpbWFyeSgwKQotICAg
ICwgbV9udW1DYWxsc1RvTm90Q2VsbCgwKQotICAgICwgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwo
MCkKLSAgICAsIG1fdG90YWxDb3VudCgwKQotICAgICwgbV9wcmltYXJ5Q2FsbGVlKG51bGxwdHIp
Ci17Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBDYWxsRWRnZVByb2ZpbGU6OmFkZChKU1ZhbHVl
IHZhbHVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdlQmFja0xvZykKLXsKLSAgICB1bnNp
Z25lZCBuZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKLSAgICBpZiAoVU5MSUtFTFko
IW5ld1RvdGFsQ291bnQpKSB7Ci0gICAgICAgIGZhZGVCeUhhbGYoKTsgLy8gVGFja2xlIG92ZXJm
bG93cyBieSBkaXZpZGluZyBhbGwgY291bnRzIGJ5IHR3by4KLSAgICAgICAgbmV3VG90YWxDb3Vu
dCA9IG1fdG90YWxDb3VudCArIDE7Ci0gICAgfQotICAgIEFTU0VSVChuZXdUb3RhbENvdW50KTsK
LSAgICBtX3RvdGFsQ291bnQgPSBuZXdUb3RhbENvdW50OwotICAgIAotICAgIGlmIChVTkxJS0VM
WSghdmFsdWUuaXNDZWxsKCkpKSB7Ci0gICAgICAgIG1fbnVtQ2FsbHNUb05vdENlbGwrKzsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IENhbGxWYXJp
YW50KHZhbHVlLmFzQ2VsbCgpKTsKLSAgICAKLSAgICBpZiAobV9jbG9zdXJlc0FyZURlc3BlY2lm
aWVkKQotICAgICAgICBjYWxsZWUgPSBjYWxsZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCk7Ci0gICAg
Ci0gICAgaWYgKFVOTElLRUxZKCFtX3ByaW1hcnlDYWxsZWUpKSB7Ci0gICAgICAgIG1fcHJpbWFy
eUNhbGxlZSA9IGNhbGxlZTsKLSAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSA9IDE7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIGlmIChMSUtFTFkobV9wcmltYXJ5Q2Fs
bGVlID09IGNhbGxlZSkpIHsKLSAgICAgICAgbV9udW1DYWxsc1RvUHJpbWFyeSsrOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBpZiAoVU5MSUtFTFkoIW1fb3RoZXJDYWxs
ZWVzKSkgewotICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgQ2FsbFNwZWN0cnVtKiBzZWNvbmRhcnkgPSBt
X290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS5nZXQoKTsKLSAgICBpZiAoIXNlY29u
ZGFyeSkgewotICAgICAgICBhZGRTbG93KGNhbGxlZSwgbWVyZ2VCYWNrTG9nKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgc2Vjb25kYXJ5LT5hZGQoY2FsbGVlKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAppbmRleCBjMjg0YzViYjEzNTQ2YTJmMTljNGQ0Nzc1NmRiYTYxMzY3Y2Q5MWM3Li45M2NiMTNk
Y2RjNGEyY2Q3OTIyMjlhMWY0MjU1MjAzMmY2ZDY3NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtODMsMTEgKzgzLDYgQEAgdm9p
ZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQog
ICAgIH0KICAgICBpZiAoISFsYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNl
ZW5DYWxsZWUuZ2V0KCkpKQogICAgICAgICBsYXN0U2VlbkNhbGxlZS5jbGVhcigpOwotICAgIAot
ICAgIGlmIChjYWxsRWRnZVByb2ZpbGUpIHsKLSAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7
Ci0gICAgICAgIGNhbGxFZGdlUHJvZmlsZS0+dmlzaXRXZWFrKCk7Ci0gICAgfQogfQogCiBDYWxs
TGlua0luZm8mIENhbGxMaW5rSW5mbzo6ZHVtbXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IDNhNjVlZjVjZDlkZDAzODA4YmVmNTFhZDdj
MzM2NTQ3ZWM0YzhkNTcuLjg4MDk0ZmY2MTllNTI3OTM3NWFjY2VkOWNmM2ZjN2E2NjgzNTExMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAg
LTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExpbmtJ
bmZvX2gKIAotI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgogI2luY2x1ZGUgIkNsb3N1cmVD
YWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCkBAIC0zNCw3ICszMyw2IEBACiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTAsNyArODgsNiBAQCBzdHJ1Y3QgQ2FsbExp
bmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAg
IHVuc2lnbmVkIGNhbGxlZUdQUiA6IDg7CiAgICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKICAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47Ci0gICAgT3duUHRyPENhbGxFZGdlUHJvZmlsZT4gY2Fs
bEVkZ2VQcm9maWxlOwogCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIHN0dWIgfHwgY2Fs
bGVlOyB9CiAgICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKaW5kZXggZWNjNzIzM2Yy
MTk4NDg2ZGVlMDBjMTQyMTdhMDlmYTA3YjMyNWFjNC4uYWEwZTk2MmFjN2E3YzE0ZGM3YTBjNzg3
ZDIyMWFhZmJmMGE0ZWQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC0zMiwyMiArMzIsNTQgQEAKICNpbmNsdWRlICJMTElu
dENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Q29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIENhbGxMaW5rU3Rh
dHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQotICAgIDogbV9jb3VsZFRha2VTbG93
UGF0aChmYWxzZSkKKyAgICA6IG1fY2FsbFRhcmdldCh2YWx1ZSkKKyAgICAsIG1fZXhlY3V0YWJs
ZSgwKQorICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQcm92ZWQo
ZmFsc2UpCiB7Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAg
bV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXND
ZWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgCi0gICAgbV9lZGdlcy5hcHBlbmQo
Q2FsbEVkZ2UoQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpLCAxKSk7CisgICAgaWYgKCF2YWx1
ZS5hc0NlbGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIG1fZXhlY3V0YWJsZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUuYXND
ZWxsKCkpLT5leGVjdXRhYmxlKCk7Cit9CisKK0pTRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjpm
dW5jdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhbGxUYXJnZXQgfHwgIW1fY2FsbFRhcmdl
dC5pc0NlbGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKCFtX2NhbGxUYXJn
ZXQuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbFRhcmdldC5h
c0NlbGwoKSk7Cit9CisKK0ludGVybmFsRnVuY3Rpb24qIENhbGxMaW5rU3RhdHVzOjppbnRlcm5h
bEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2FsbFRhcmdldCB8fCAhbV9jYWxsVGFy
Z2V0LmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBpZiAoIW1fY2FsbFRh
cmdldC5hc0NlbGwoKS0+aW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4o
bV9jYWxsVGFyZ2V0LmFzQ2VsbCgpKTsKK30KKworSW50cmluc2ljIENhbGxMaW5rU3RhdHVzOjpp
bnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAoreworICAgIGlm
ICghbV9leGVjdXRhYmxlKQorICAgICAgICByZXR1cm4gTm9JbnRyaW5zaWM7CisgICAgCisgICAg
cmV0dXJuIG1fZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOwogfQogCiBDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKQEAgLTU1LDcgKzg3LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2UKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChwcm9maWxlZEJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxs
KSkpIHsKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRnVuY3Rpb24pKSkgewogICAgICAgICAv
LyBXZSBjb3VsZCBmb3JjZSB0aGlzIHRvIGJlIGEgY2xvc3VyZSBjYWxsLCBidXQgaW5zdGVhZCB3
ZSdsbCBqdXN0IGFzc3VtZSB0aGF0IGl0CiAgICAgICAgIC8vIHRha2VzIHNsb3cgcGF0aC4KICAg
ICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKQEAgLTkzLDcgKzEyNSw3IEBAIENhbGxMaW5r
U3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGlmICghY2FsbExpbmtJbmZv
KQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChsb2NrZXIsIHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIHJldHVybiBjb21wdXRlRm9yKGxvY2tlciwgcHJv
ZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhKTsKKyAgICByZXR1cm4gY29t
cHV0ZUZvcihsb2NrZXIsICpjYWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSk7CiAjZWxzZQogICAg
IHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogI2VuZGlmCkBAIC0xMDcsMTAgKzEzOSwxMCBAQCBD
YWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNp
dGVEYXRhKAogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGV4aXRTaXRlRGF0YS5tX3Rh
a2VzU2xvd1BhdGggPQotICAgICAgICBwcm9maWxlZEJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlLCBleGl0aW5nSklU
VHlwZSkpCisgICAgICAgIHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlLCBleGl0aW5nSklUVHlwZSkp
CiAgICAgICAgIHx8IHByb2ZpbGVkQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIGV4aXRpbmdKSVRUeXBl
KSk7CiAgICAgZXhpdFNpdGVEYXRhLm1fYmFkRnVuY3Rpb24gPQotICAgICAgICBwcm9maWxlZEJs
b2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUlu
ZGV4LCBCYWRDZWxsLCBleGl0aW5nSklUVHlwZSkpOworICAgICAgICBwcm9maWxlZEJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRGdW5jdGlvbiwgZXhpdGluZ0pJVFR5cGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxv
Y2tlcik7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwpAQCAtMTIyLDM0ICsxNTQs
NyBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RXhpdFNpdGVEYXRhKAogfQogCiAjaWYgRU5BQkxFKEpJVCkKLUNhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxv
Y2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bykKLXsKLSAgICAvLyBXZSBkb24ndCByZWFsbHkgbmVlZCB0aGlzLCBidXQgYW55dGltZSB3ZSBo
YXZlIHRvIGRlYnVnIHRoaXMgY29kZSwgaXQgYmVjb21lcyBpbmRpc3BlbnNhYmxlLgotICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKLSAgICAKLSAgICBpZiAoT3B0aW9uczo6Y2FsbFN0
YXR1c1Nob3VsZFVzZUNhbGxFZGdlUHJvZmlsZSgpKSB7Ci0gICAgICAgIC8vIEFsd2F5cyB0cnVz
dCB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgb3ZlciBhbnl0aGluZyBlbHNlIHNpbmNlIHRoaXMgaGFz
IHByZWNpc2UgY291bnRzLgotICAgICAgICAvLyBJdCBjYW4gbWFrZSB0aGUgYmVzdCBwb3NzaWJs
ZSBkZWNpc2lvbiBiZWNhdXNlIGl0IG5ldmVyICJmb3JnZXRzIiB3aGF0IGhhcHBlbmVkIGZvciBh
bnkKLSAgICAgICAgLy8gY2FsbCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGZhZGluZyBvdXQgdGhl
IGNvdW50cyBvZiBvbGQgY2FsbHMgKGZvciBleGFtcGxlIGlmIHRoZQotICAgICAgICAvLyBjb3Vu
dGVyIHR5cGUgaXMgMTYtYml0IHRoZW4gY2FsbHMgdGhhdCBoYXBwZW5lZCBtb3JlIHRoYW4gMl4x
NiBjYWxscyBhZ28gYXJlIGdpdmVuIGhhbGYKLSAgICAgICAgLy8gd2VpZ2h0LCBhbmQgdGhpcyBj
b21wb3VuZHMgZm9yIGV2ZXJ5IDJeMTUgW3NpY10gY2FsbHMgYWZ0ZXIgdGhhdCkuIFRoZSBjb21i
aW5hdGlvbiBvZgotICAgICAgICAvLyBoaWdoIGZpZGVsaXR5IGZvciByZWNlbnQgY2FsbHMgYW5k
IGZhZGluZyBmb3Igb2xkZXIgY2FsbHMgbWFrZXMgdGhpcyB0aGUgbW9zdCB1c2VmdWwKLSAgICAg
ICAgLy8gbWVjaGFtaXNtIG9mIGNob29zaW5nIGhvdyB0byBvcHRpbWl6ZSBmdXR1cmUgY2FsbHMu
Ci0gICAgICAgIENhbGxFZGdlUHJvZmlsZSogZWRnZVByb2ZpbGUgPSBjYWxsTGlua0luZm8uY2Fs
bEVkZ2VQcm9maWxlLmdldCgpOwotICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKLSAgICAg
ICAgaWYgKGVkZ2VQcm9maWxlKSB7Ci0gICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQg
PSBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShlZGdlUHJvZmlsZSk7Ci0gICAgICAgICAgICBp
ZiAoISFyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZyb21DYWxsTGlua0luZm8obG9ja2VyLCBj
YWxsTGlua0luZm8pOwotfQotCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyb21DYWxsTGlua0luZm8oCi0gICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJbmZvKQogewogICAgIC8vIE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBs
b2NrZXIgaXMgaGVsZCwgdGhpcyBjb2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8g
dGhlIENhbGxMaW5rSW5mbzogaXQgbWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5z
ISBUaGlzIGlzIGJlY2F1c2UKQEAgLTE3Miw3ICsxNzcsNyBAQCBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsTGlua0luZm8oCiAgICAgCiAgICAgSlNGdW5jdGlv
biogdGFyZ2V0ID0gY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpOwogICAgIGlmICgh
dGFyZ2V0KQotICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOworICAgICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoKTsKICAgICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmhhc1NlZW5DbG9z
dXJlKQogICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LT5leGVjdXRhYmxlKCkp
OwpAQCAtMTgwLDQzICsxODUsMTUgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQp
OwogfQogCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRn
ZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKK0NhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
IGxvY2tlciwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIEV4aXRTaXRlRGF0YSBleGl0U2l0
ZURhdGEpCiB7Ci0gICAgLy8gSW4gY2FzZXMgd2hlcmUgdGhlIGNhbGwgZWRnZSBwcm9maWxlIHNh
dyBub3RoaW5nLCB1c2UgdGhlIENhbGxMaW5rSW5mbyBpbnN0ZWFkLgotICAgIGlmICghZWRnZVBy
b2ZpbGUtPnRvdGFsQ2FsbHMoKSkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7Ci0g
ICAgCi0gICAgLy8gVG8gZG8gYW55dGhpbmcgbWVhbmluZ2Z1bCwgd2UgcmVxdWlyZSB0aGF0IHRo
ZSBtYWpvcml0eSBvZiBjYWxscyBhcmUgdG8gc29tZXRoaW5nIHdlCi0gICAgLy8ga25vdyBob3cg
dG8gaGFuZGxlLgotICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Lbm93biA9IGVkZ2VQcm9maWxlLT5u
dW1DYWxsc1RvS25vd25DZWxscygpOwotICAgIHVuc2lnbmVkIG51bUNhbGxzVG9Vbmtub3duID0g
ZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Ob3RDZWxsKCkgKyBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNU
b1Vua25vd25DZWxsKCk7Ci0gICAgCi0gICAgLy8gV2UgcmVxdWlyZSB0aGF0IHRoZSBtYWpvcml0
eSBvZiBjYWxscyB3ZXJlIHRvIHNvbWV0aGluZyB0aGF0IHdlIGNvdWxkIHBvc3NpYmx5IGlubGlu
ZS4KLSAgICBpZiAobnVtQ2FsbHNUb0tub3duIDw9IG51bUNhbGxzVG9Vbmtub3duKQotICAgICAg
ICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwotICAgIAotICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0
aGUgbnVtYmVyIG9mIHN1Y2ggY2FsbHMgaXMgZ3JlYXRlciB0aGFuIHNvbWUgbWluaW1hbCB0aHJl
c2hvbGQsIHNvIHRoYXQgd2UKLSAgICAvLyBhdm9pZCBpbmxpbmluZyBjb21wbGV0ZWx5IGNvbGQg
Y2FsbHMuCi0gICAgaWYgKG51bUNhbGxzVG9Lbm93biA8IE9wdGlvbnM6OmZyZXF1ZW50Q2FsbFRo
cmVzaG9sZCgpKQorICAgIGlmIChleGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQogICAgICAg
ICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAotICAgIENhbGxMaW5rU3RhdHVzIHJlc3Vs
dDsKLSAgICByZXN1bHQubV9lZGdlcyA9IGVkZ2VQcm9maWxlLT5jYWxsRWRnZXMoKTsKLSAgICBy
ZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9ICEhbnVtQ2FsbHNUb1Vua25vd247Ci0gICAgcmVz
dWx0Lm1fY2FuVHJ1c3RDb3VudHMgPSB0cnVlOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBD
YWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRh
KQotewotICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9m
aWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOworICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNv
bXB1dGVGb3IobG9ja2VyLCBjYWxsTGlua0luZm8pOwogICAgIGlmIChleGl0U2l0ZURhdGEubV9i
YWRGdW5jdGlvbikKICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOwotICAgIGlmIChl
eGl0U2l0ZURhdGEubV90YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VT
bG93UGF0aCA9IHRydWU7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1MCw3ICsy
MjcsNyBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCiAgICAgICAg
IAogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihkZmdD
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbiwg
Y29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Cisg
ICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbiwgY29tcHV0ZUZvcihsb2NrZXIsIGlu
Zm8sIGV4aXRTaXRlRGF0YSkpOwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKQEAgLTI3OSwzMSAr
MjU2LDYgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
LCBiYXNlbGluZU1hcCk7CiB9CiAKLWJvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwo
KSBjb25zdAotewotICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6ZSgpOyBpLS07KSB7
Ci0gICAgICAgIGlmIChtX2VkZ2VzW2ldLmNhbGxlZSgpLmlzQ2xvc3VyZUNhbGwoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQg
Q2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCi17Ci0gICAgQVNTRVJUKCFtX2lzUHJv
dmVkKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2VzLnNpemUoKTsgaS0tOykKLSAgICAg
ICAgbV9lZGdlc1tpXSA9IG1fZWRnZXNbaV0uZGVzcGVjaWZpZWRDbG9zdXJlKCk7Ci0gICAgCi0g
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgLy8gRG9pbmcgdGhpcyBzaG91bGQg
bm90IGhhdmUgY3JlYXRlZCBkdXBsaWNhdGVzLCBiZWNhdXNlIHRoZSBDYWxsRWRnZVByb2ZpbGUK
LSAgICAgICAgLy8gc2hvdWxkIGRlc3BlY2lmeSBjbG9zdXJlcyBpZiBkb2luZyBzbyB3b3VsZCBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBrbm93biBjYWxsZWVzLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gaSArIDE7IGogPCBtX2VkZ2VzLnNpemUoKTsgKytqKQotICAgICAgICAgICAgICAg
IEFTU0VSVChtX2VkZ2VzW2ldLmNhbGxlZSgpICE9IG1fZWRnZXNbal0uY2FsbGVlKCkpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkBAIC0zMTksNyArMjcxLDE0IEBA
IHZvaWQgQ2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBp
ZiAobV9jb3VsZFRha2VTbG93UGF0aCkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiQ291bGQg
VGFrZSBTbG93IFBhdGgiKTsKICAgICAKLSAgICBvdXQucHJpbnQobGlzdER1bXAobV9lZGdlcykp
OworICAgIGlmIChtX2NhbGxUYXJnZXQpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIktub3du
IHRhcmdldDogIiwgbV9jYWxsVGFyZ2V0KTsKKyAgICAKKyAgICBpZiAobV9leGVjdXRhYmxlKSB7
CisgICAgICAgIG91dC5wcmludChjb21tYSwgIkV4ZWN1dGFibGUvQ2FsbEhhc2g6ICIsIFJhd1Bv
aW50ZXIobV9leGVjdXRhYmxlKSk7CisgICAgICAgIGlmICghaXNDb21waWxhdGlvblRocmVhZCgp
KQorICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRhYmxlLT5oYXNoRm9yKENvZGVG
b3JDYWxsKSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKaW5kZXggNmEzZDM4ODNkN2E1
NjNlY2VjMDI2NTJkZDQ1YmI4Mjc5YzRjY2Y4Zi4uOWEzNDEzNWJiMTk1OGNkNGUzMDhjZjdhNDlk
MDZkMzM1OTg3MjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RydWN0IENhbGxMaW5rSW5mbzsKIGNs
YXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCi0gICAg
ICAgIDogbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKKyAgICAgICAgOiBtX2V4ZWN1dGFibGUo
MCkKKyAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICAgICAsIG1faXNQ
cm92ZWQoZmFsc2UpCi0gICAgICAgICwgbV9jYW5UcnVzdENvdW50cyhmYWxzZSkKICAgICB7CiAg
ICAgfQogICAgIApAQCAtNjEsMTEgKzYxLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNp
dCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAgICAKLSAgICBDYWxsTGlua1N0YXR1cyhDYWxs
VmFyaWFudCB2YXJpYW50KQotICAgICAgICA6IG1fZWRnZXMoMSwgQ2FsbEVkZ2UodmFyaWFudCwg
MSkpCisgICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCisgICAg
ICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCiAgICAgICAgICwgbV9jb3VsZFRha2VTbG93
UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
VHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDkgKzkyLDggQEAg
cHVibGljOgogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1
bWluZyB0aGF0IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAg
ICAgLy8gZXhpdGVkLgotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0
IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKLSAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgY29uc3QgQ29uY3VycmVu
dEpJVExvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7Cisg
ICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29uY3VycmVudEpJVExv
Y2tlciYsIENhbGxMaW5rSW5mbyYpOworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
Rm9yKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURh
dGEpOwogI2VuZGlmCiAgICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxM
aW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwpAQCAtMTA5
LDM4ICsxMDcsMzcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
Rm9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua0luZm9N
YXAmLCBjb25zdCBDb250ZXh0TWFwJik7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CisgICAg
Ym9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldCB8fCBtX2V4ZWN1dGFibGUg
fHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQorICAgIGJvb2wgaXNDbG9z
dXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZSAmJiAhbV9jYWxsVGFyZ2V0OyB9
CiAgICAgCi0gICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9lZGdlczsg
fQotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUoKTsgfQot
ICAgIENhbGxFZGdlIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZWRnZXNbaV07IH0K
LSAgICBDYWxsRWRnZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkp
OyB9CisgICAgSlNWYWx1ZSBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0
OyB9CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdDsKKyAgICBJbnRlcm5hbEZ1bmN0
aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgSW50cmluc2ljIGludHJpbnNpY0Zv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZTsgfQogICAgIGJvb2wgaXNQcm92
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvdmVkOyB9Ci0gICAgYm9vbCBjYW5PcHRpbWl6ZSgp
IGNvbnN0IHsgcmV0dXJuICFtX2VkZ2VzLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgY2FuVHJ1c3RD
b3VudHMoKSBjb25zdCB7IHJldHVybiBtX2NhblRydXN0Q291bnRzOyB9Ci0gICAgCi0gICAgYm9v
bCBpc0Nsb3N1cmVDYWxsKCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgY2FsbGVlIGlz
IGEgY2xvc3VyZSBjYWxsLgorICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAo
bV9jYWxsVGFyZ2V0IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1BhdGg7IH0K
ICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
Ci0gICAgdm9pZCBtYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICB2b2lkIG1ha2VDbG9zdXJlQ2FsbCgp
CisgICAgeworICAgICAgICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgICAgICAvLyBUdXJuIHRo
aXMgaW50byBhIGNsb3N1cmUgY2FsbC4KKyAgICAgICAgbV9jYWxsVGFyZ2V0ID0gSlNWYWx1ZSgp
OworICAgIH0KICAgICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTElu
dChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCk7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZyb21DYWxsRWRnZVByb2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKik7Ci0gICAgc3RhdGljIENh
bGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAotICAgICAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7Ci0jZW5kaWYKICAgICAKLSAgICBDYWxs
RWRnZUxpc3QgbV9lZGdlczsKKyAgICBKU1ZhbHVlIG1fY2FsbFRhcmdldDsKKyAgICBFeGVjdXRh
YmxlQmFzZSogbV9leGVjdXRhYmxlOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAg
ICBib29sIG1faXNQcm92ZWQ7Ci0gICAgYm9vbCBtX2NhblRydXN0Q291bnRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZlMGY3NDNmZTJlMTNl
MjU2ODJmM2NjZGJiYjg1NWI4ODQ0YzNiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQ2FsbFZhcmlhbnQuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLXZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
LXsKLSAgICBpZiAoISp0aGlzKSB7Ci0gICAgICAgIG91dC5wcmludCgibnVsbCIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5h
bEZ1bmN0aW9uID0gdGhpcy0+aW50ZXJuYWxGdW5jdGlvbigpKSB7Ci0gICAgICAgIG91dC5wcmlu
dCgiSW50ZXJuYWxGdW5jdGlvbjogIiwgSlNWYWx1ZShpbnRlcm5hbEZ1bmN0aW9uKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
dGhpcy0+ZnVuY3Rpb24oKSkgewotICAgICAgICBvdXQucHJpbnQoIihGdW5jdGlvbjogIiwgSlNW
YWx1ZShmdW5jdGlvbiksICI7IEV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCksICIpIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgb3V0LnByaW50KCJFeGVjdXRhYmxlOiAi
LCAqZXhlY3V0YWJsZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU4NTk4M2NiNTRlNzg4MmZhYWZjOTUxOTdlZGFhOTQ1OTZiOGNjNWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIENhbGxWYXJpYW50X2gKLSNkZWZpbmUgQ2FsbFZhcmlhbnRfaAotCi0jaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLS8vIFRoZSBDYWxsVmFyaWFudCBjbGFzcyBpcyBtZWFudCB0
byBlbmNhcHN1bGF0ZSBhIGNhbGxlZSBpbiBhIHdheSB0aGF0IGlzIHVzZWZ1bCBmb3IgY2FsbCBs
aW5raW5nCi0vLyBhbmQgaW5saW5pbmcuIEJlY2F1c2UgSmF2YVNjcmlwdCBoYXMgY2xvc3VyZXMs
IGFuZCBiZWNhdXNlIEpTQyBpbXBsZW1lbnRzIHRoZSBub3Rpb24gb2YgaW50ZXJuYWwKLS8vIG5v
bi1mdW5jdGlvbiBvYmplY3RzIHRoYXQgbmV2ZXJ0aGVsZXNzIHByb3ZpZGUgY2FsbCB0cmFwcywg
dGhlIGNhbGwgbWFjaGluZXJ5IHdhbnRzIHRvIHNlZSBhCi0vLyBjYWxsZWUgaW4gb25lIG9mIHRo
ZSBmb2xsb3dpbmcgZm91ciBmb3JtczoKLS8vCi0vLyBKU0Z1bmN0aW9uIGNhbGxlZTogVGhpcyBt
ZWFucyB0aGF0IHdlIGV4cGVjdCB0aGUgY2FsbHNpdGUgdG8gYWx3YXlzIGNhbGwgYSBwYXJ0aWN1
bGFyIGZ1bmN0aW9uCi0vLyAgICAgaW5zdGFuY2UsIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEg
cGFydGljdWxhciBhY3RpdmF0aW9uLiBUaGlzIHBpbnBvaW50cyBub3QganVzdCB0aGUgY29kZQot
Ly8gICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgKGkuZS4gdGhlIGV4ZWN1dGFibGUpIGJ1dCBhbHNv
IHRoZSBzY29wZSB3aXRoaW4gd2hpY2ggdGhlIGNvZGUgcnVucy4KLS8vCi0vLyBFeGVjdXRhYmxl
IGNhbGxlZTogVGhpcyBjb3JyZXNwb25kcyB0byBhIGNhbGwgdG8gYSBjbG9zdXJlLiBJbiB0aGlz
IGNhc2UsIHdlIGtub3cgdGhhdCB0aGUKLS8vICAgICBjYWxsc2l0ZSB3aWxsIGNhbGwgYSBKU0Z1
bmN0aW9uLCBidXQgd2UgZG8gbm90IGtub3cgd2hpY2ggcGFydGljdWxhciBKU0Z1bmN0aW9uLiBX
ZSBkbyBrbm93Ci0vLyAgICAgd2hhdCBjb2RlIHdpbGwgYmUgY2FsbGVkIC0gaS5lLiB3ZSBrbm93
IHRoZSBleGVjdXRhYmxlLgotLy8KLS8vIEludGVybmFsRnVuY3Rpb24gY2FsbGVlOiBKU0Mgc3Vw
cG9ydHMgYSBzcGVjaWFsIGtpbmQgb2YgbmF0aXZlIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQgYml6
YXJyZQotLy8gICAgIHNlbWFudGljcy4gVGhlc2UgYXJlIGFsd2F5cyBzaW5nbGV0b25zLiBJZiB3
ZSBrbm93IHRoYXQgdGhlIGNhbGxlZSBpcyBhbiBJbnRlcm5hbEZ1bmN0aW9uCi0vLyAgICAgdGhl
biB3ZSBrbm93IGJvdGggdGhlIGNvZGUgdGhhdCB3aWxsIGJlIGNhbGxlZCBhbmQgdGhlIHNjb3Bl
OyBpbiBmYWN0IHRoZSAic2NvcGUiIGlzIHJlYWxseQotLy8gICAgIGp1c3QgdGhlIEludGVybmFs
RnVuY3Rpb24gaXRzZWxmLgotLy8KLS8vIFNvbWV0aGluZyBlbHNlOiBJdCdzIHBvc3NpYmxlIGNh
bGwgYWxsIG1hbm5lciBvZiBydWJiaXNoIGluIEphdmFTY3JpcHQuIFRoaXMgaW1wbGljaXRseSBz
dXBwb3J0cwotLy8gICAgIGJpemFycmUgb2JqZWN0IGNhbGxlZXMsIGJ1dCBpdCBjYW4ndCByZWFs
bHkgdGVsbCB5b3UgYW55dGhpbmcgaW50ZXJlc3RpbmcgYWJvdXQgdGhlbSBvdGhlcgotLy8gICAg
IHRoYW4gdGhlIGZhY3QgdGhhdCB0aGV5IGRvbid0IGZhbGwgaW50byBhbnkgb2YgdGhlIGFib3Zl
IGNhdGVnb3JpZXMuCi0vLwotLy8gVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBraW5kIG9mIHVuaW9u
IG92ZXIgdGhlc2UgZm91ciB0aGluZ3MuIEl0IGRvZXMgc28gYnkganVzdCBob2xkaW5nIGEKLS8v
IEpTQ2VsbCouIFdlIGRldGVybWluZSB3aGljaCBvZiB0aGUgbW9kZXMgaXRzIGluIGJ5IGRvaW5n
IHR5cGUgY2hlY2tzIG9uIHRoZSBjZWxsLiBOb3RlIHRoYXQgdGhlcmUKLS8vIGlzIG5vIGxpZmVj
eWNsZSBtYW5hZ2VtZW50IGZvciB0aGUgY2VsbCBiZWNhdXNlIHRoaXMgY2xhc3MgaXMgYWx3YXlz
IHVzZWQgaW4gY29udGV4dHMgd2hlcmUgd2UKLS8vIGVpdGhlciBkbyBjdXN0b20gd2VhayByZWZl
cmVuY2UgbG9naWMgb3ZlciBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyAoc2VlIENhbGxFZGdlUHJv
ZmlsZSksIG9yIHdlCi0vLyBhcmUgaW5zaWRlIHRoZSBjb21waWxlciBhbmQgd2UgYXNzdW1lIHRo
YXQgdGhlIGNvbXBpbGVyIHJ1bnMgaW4gYmV0d2VlbiBjb2xsZWN0aW9ucyBhbmQgc28gY2FuCi0v
LyB0b3VjaCB0aGUgaGVhcCB3aXRob3V0IG5vdGlmeWluZyBhbnlvbmUuCi0KLWNsYXNzIENhbGxW
YXJpYW50IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxl
ZSA9IG51bGxwdHIpCi0gICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgQ2FsbFZhcmlhbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAg
ICAgICA6IG1fY2FsbGVlKGRlbGV0ZWRUb2tlbigpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KLSAgICAKLSAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KLSAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9jYWxsZWUtPnR5cGUo
KSA9PSBKU0Z1bmN0aW9uVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nh
c3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLSAgICAKLSAgICBKU0NlbGwqIHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxlZTsgfQotICAgIAotICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFs
RnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlKTsKLSAgICB9Ci0gICAgCi0gICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KG1fY2FsbGVlKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Nsb3N1cmVDYWxs
KCkgY29uc3QgeyByZXR1cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxs
ZWUpOyB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwotICAgICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlKTsKLSAgICB9Ci0gICAg
Ci0gICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOwotICAgICAgICByZXR1cm4gbV9jYWxs
ZWU7Ci0gICAgfQotICAgIAotICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKLSAgICAgICAgcmV0dXJuIE5vSW50cmluc2lj
OwotICAgIH0KLSAgICAKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUg
PSB0aGlzLT5leGVjdXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLSAg
ICAKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBvdGhlciA8ICp0aGlzOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
PD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPCBvdGhlcik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIg
PD0gKnRoaXM7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7Ci0g
ICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4oKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7
IH0KLSAgICAKLSAgICBKU0NlbGwqIG1fY2FsbGVlOwotfTsKLQotc3RydWN0IENhbGxWYXJpYW50
SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtleSkg
eyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENhbGxW
YXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwot
fTsKLQotdHlwZWRlZiBWZWN0b3I8Q2FsbFZhcmlhbnQsIDE+IENhbGxWYXJpYW50TGlzdDsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6OkNhbGxWYXJpYW50PiB7Ci0gICAgdHlwZWRlZiBKU0M6OkNhbGxWYXJpYW50SGFzaCBIYXNo
OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBDYWxsVmFyaWFudF9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCmluZGV4IDAzZGQ3ODFlYzc4YTUyZGYwYTBjYTIyNTk4OWM5MzViMWQyOTVj
NGIuLjQwNmQzZDA5YWVlMzM0ZGEzYTZlZDExYWM4MGViZjgyMjg4NTBkZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaApAQCAtMTU0LDE3ICsxNTQsNiBA
QCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICAgICAgcmV0dXJuIENvZGVGb3JDYWxsOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBpc05vcm1hbENhbGwoS2luZCBraW5kKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgQ2FsbDoKLSAgICAgICAg
Y2FzZSBDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAg
ICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCiAg
ICAgV3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7CiAgICAgVmFsdWVS
ZWNvdmVyeSBjYWxsZWVSZWNvdmVyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhpdEtpbmQuY3BwCmluZGV4IDg3YWQyZWQ4NWFhNjkzYWQ4YjgyNTc3NTQwYjZlN2I5NWIxNjdi
ZWYuLmVmZDdjMTA1OGJhYTJiMDYyYWEyNjgyZWNlNjRjNThkZmFjZTAwNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcApAQCAtMzgsOCArMzgsOCBAQCBj
b25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpbmQpCiAgICAgICAgIHJldHVy
biAiVW5zZXQiOwogICAgIGNhc2UgQmFkVHlwZToKICAgICAgICAgcmV0dXJuICJCYWRUeXBlIjsK
LSAgICBjYXNlIEJhZENlbGw6Ci0gICAgICAgIHJldHVybiAiQmFkQ2VsbCI7CisgICAgY2FzZSBC
YWRGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuICJCYWRGdW5jdGlvbiI7CiAgICAgY2FzZSBCYWRF
eGVjdXRhYmxlOgogICAgICAgICByZXR1cm4gIkJhZEV4ZWN1dGFibGUiOwogICAgIGNhc2UgQmFk
Q2FjaGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtp
bmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5oCmluZGV4IDE1
MDEzNWQ1MzE1YzQ1Yjg4MTBmMzQ1NGJkM2I0OWI1YTE5MWVlYTkuLjUyOTY4MTI0N2U1YWJhMTI0
YjBjOTA5MDIxMDIyMWIwMjUzODQ0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0S2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0S2luZC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBFeGl0
S2luZCA6IHVpbnQ4X3QgewogICAgIEV4aXRLaW5kVW5zZXQsCiAgICAgQmFkVHlwZSwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYSB0eXBlIHByZWRpY3Rpb24gd2FzIHdyb25nLgotICAgIEJhZENlbGws
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5jb3JyZWN0IGFzc3VtcHRpb24gYWJv
dXQgd2hhdCBjZWxsIHdlIHdvdWxkIHNlZS4gVXN1YWxseSB1c2VkIGZvciBmdW5jdGlvbiBjaGVj
a3MuCisgICAgQmFkRnVuY3Rpb24sIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIG1hZGUgYW4gaW5j
b3JyZWN0IGFzc3VtcHRpb24gYWJvdXQgd2hhdCBmdW5jdGlvbiB3ZSB3b3VsZCBzZWUuCiAgICAg
QmFkRXhlY3V0YWJsZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgbWFkZSBhbiBpbmNvcnJlY3Qg
YXNzdW1wdGlvbiBhYm91dCB3aGF0IGV4ZWN1dGFibGUgd2Ugd291bGQgc2VlLgogICAgIEJhZENh
Y2hlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhbiBpbmxpbmUgY2FjaGUgd2FzIHdyb25nLgogICAg
IEJhZENvbnN0YW50Q2FjaGUsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGEgY2FjaGUgb24gYSB3ZWFr
IGNvbnN0YW50ICh1c3VhbGx5IGEgcHJvdG90eXBlKSB3YXMgd3JvbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZWNjNjVhMmI3
NmNkNzdmMjIwZWFhN2JlMDBkMjFhODk5ZTEwYTJhNS4uNGI1MjYzNzI0OTg5MDE0YTI4NDJhNTM4
NmMxMDkxZjk4NTU0YTJlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAtMTg3LDggKzE4Nyw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgICAgICBBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZSogc3R1YiA9IHN0YXRpY19jYXN0PEFjY2Vzc29yQ2FsbEpJ
VFN0dWJSb3V0aW5lKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hdChsaXN0SW5k
ZXgpLnN0dWJSb3V0aW5lKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqc3R1Yi0+bV9jYWxsTGlua0luZm8sIGNhbGxFeGl0
U2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRm9yKGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBjYXNlIEdldEJ5SWRBY2Nlc3M6OkN1c3RvbUdldHRlcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAxYTQyMGU1Nzkw
MzhjNmIwMTAyY2FkZjI1YzEyYzIzZGRkYjk3M2Y5Li45MzkwNzdlYTBlNTkxNWQ4NmYxOTczMTBh
NGFjNGVhMzVhYzA4NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKnN0dWItPm1fY2Fs
bExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2tlciwgKnN0dWItPm1fY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0gUHV0
QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwg
Y29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29tcGxleEdldFN0YXR1cy5jaGFpbigpLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDIyZjhkMGUyYWVjNzJjMjc0YjMzODU0OTMzMzhhODMwN2U2ZTdk
NzMuLjJjZDhmNjgzNWE3ZGJlMTQ4YmYwZTUyNDdlMzMyNjFmNTYzYTk1ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE0NTksNiArMTQ1OSwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAorICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBjb3VsZCB0cmFjayBleGVjdXRhYmxlcyBpbiBBYnN0cmFjdFZhbHVlLCB3aGljaCB3b3Vs
ZCBhbGxvdyB1cyB0byBnZXQgcmlkIG9mIHRoZXNlIGNoZWNrcworICAgICAgICAvLyBtb3JlIHRo
b3JvdWdobHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMDAK
KyAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGVsaW1pbmF0ZSB0aGVzZSBlbnRpcmVseSBpZiB3
ZSBrbm93IHRoZSBleGFjdCB2YWx1ZSB0aGF0IGZsb3dzIGludG8gdGhpcy4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjIwMQorICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0cnVjdHVyZSBzZXRzIG9m
IGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE3MTgsMjkgKzE3MjYsMTYgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBHZXRFeGVjdXRh
YmxlOiB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwotICAgICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpOwotICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3Jh
cGguZnJlZXplKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCkpKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0NlbGxPdGhlcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICAKLSAgICBjYXNl
IENoZWNrQ2VsbDogeworICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjogewogICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKHZh
bHVlID09IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKHZhbHVl
ID09IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZpbHRlckJ5VmFsdWUo
bm9kZS0+Y2hpbGQxKCksICpub2RlLT5jZWxsT3BlcmFuZCgpKTsKKyAgICAgICAgZmlsdGVyQnlW
YWx1ZShub2RlLT5jaGlsZDEoKSwgKm5vZGUtPmZ1bmN0aW9uKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIApAQCAtMTg2NCw2ICsxODU5LDggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgCiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBW
YXJJbmplY3Rpb25XYXRjaHBvaW50OgorICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAg
IGNhc2UgUHV0R2xvYmFsVmFyOgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGJyZWFr
OwpAQCAtMTkwMywxNiArMTkwMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IFByb2ZpbGVkQ2FsbDoKLSAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgotICAgICAgICBpZiAo
Zm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3ZhbHVlKQotICAgICAgICAg
ICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKLSAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKLSAgICAgICAgZm9yTm9kZShu
b2RlKS5tYWtlSGVhcFRvcCgpOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgRm9yY2VPU1JF
eGl0OgotICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQo
ZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xOTY3LDggKzE5NTUsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2Ug
QXJpdGhJTXVsOgogICAgIGNhc2UgRmlhdEludDUyOgotICAgIGNhc2UgQm90dG9tVmFsdWU6Ci0g
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIHR5cGUiKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODU4NTlkMjhiMmQ4YTQyODg1ZWQ4
NGZhMDk3YTU2Njc1ODE0ZWZhNC4uZTJkM2E4M2VhMDRjZWYzZjg5MDk1NTY2OTEzMGM3OTg5N2Vk
MTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0zODksMTEgKzM4OSw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgLy8gdGhlbiAtMCBhbmQgMCBhcmUgdHJlYXRlZCB0aGUgc2FtZS4K
ICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVV
c2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN3aXRjaENlbGw6Ci0gICAgICAgICAgICAgICAgLy8g
VGhlcmUgaXMgY3VycmVudGx5IG5vIHBvaW50IHRvIGJlaW5nIGNsZXZlciBoZXJlIHNpbmNlIHRo
aXMgaXMgdXNlZCBmb3Igc3dpdGNoaW5nCi0gICAgICAgICAgICAgICAgLy8gb24gb2JqZWN0cy4K
LSAgICAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAppbmRleCAxNGEyMTUz
NjdiYWU3NmMxODc0OTlhYWJhODJjMGM2ZmNjNzYyMmQ1Li43MzNmOGMyMjU2NzZjNTQ2YTlhOGY0
NmRkZDlhZjBmY2RjOWIyMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5jcHAKQEAgLTU4LDkgKzU4LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKIHsK
IH0KIAotQmFzaWNCbG9jazo6fkJhc2ljQmxvY2soKQotewotfQorQmFzaWNCbG9jazo6fkJhc2lj
QmxvY2soKSB7IH0KIAogdm9pZCBCYXNpY0Jsb2NrOjplbnN1cmVMb2NhbHModW5zaWduZWQgbmV3
TnVtTG9jYWxzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaApp
bmRleCBkZmJkODgwNGRmZDRkZWYxYmQ4ZjZjMDJiYmE4ZDU2NmYyMDY1ZjNlLi44MDk5NDA3MDUy
ZDM1OTU1MDNjNjBjMDFhZWRlZGFjNjU1OGU5YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaApAQCAtNjIsNyArNjIsNiBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFJlZkNvdW50ZWQ8QmFzaWNCbG9jaz4gewogICAgIE5vZGUqJiBvcGVyYXRvcltdKHNpemVfdCBp
KSB7IHJldHVybiBhdChpKTsgfQogICAgIE5vZGUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuIGF0KGkpOyB9CiAgICAgTm9kZSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KHNp
emUoKSAtIDEpOyB9Ci0gICAgTm9kZSogdGFrZUxhc3QoKSB7IHJldHVybiBtX25vZGVzLnRha2VM
YXN0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLnJlc2l6ZShz
aXplKTsgfQogICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6ZSkgeyBtX25vZGVzLmdyb3coc2l6ZSk7
IH0KICAgICAKQEAgLTEwNywxMyArMTA2LDYgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3Vu
dGVkPEJhc2ljQmxvY2s+IHsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CiAgICAgCi0gICAgdm9pZCBkaWRMaW5rKCkKLSAgICB7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgICAgICBpc0xpbmtlZCA9IHRydWU7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCiAgICAg
Ly8gVGhpcyB2YWx1ZSBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJsb2NrIGxpbmtpbmcgYW5kIE9T
UiBlbnRyeS4gSXQgaXMgbW9zdGx5IG1lYW5pbmdsZXNzCiAgICAgLy8gZm9yIG90aGVyIHB1cnBv
c2VzIGR1ZSB0byBpbmxpbmluZy4KICAgICB1bnNpZ25lZCBieXRlY29kZUJlZ2luOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhOGJh
NWI5NWQ4N2Y2MjY1ZWZjZTYzMTNiNzg4ZGRhMDAxMWJlOTExLi4zZGU5ZTBiZjgxOWI0OTlhZjJh
MzE4MWNlNTZjY2UzZjY2OWU0ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTAsOCArNTAsNiBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLXN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
LQogY2xhc3MgQ29uc3RhbnRCdWZmZXJLZXkgewogcHVibGljOgogICAgIENvbnN0YW50QnVmZmVy
S2V5KCkKQEAgLTE4MCwyMCArMTc4LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUqIGNhbGxU
YXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDYWxsTGlua1N0YXR1cyk7
CiAgICAgdm9pZCBoYW5kbGVDYWxsKGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsIGludCBjYWxsZWUsIGludCBh
cmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUNhbGwoSW5zdHJ1
Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9p
ZCBlbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIGludCBy
ZWdpc3Rlck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgdm9pZCB1bmRvRnVu
Y3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQpOworICAgIHZvaWQgZW1pdEZ1bmN0aW9uQ2hlY2tzKGNv
bnN0IENhbGxMaW5rU3RhdHVzJiwgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICB2b2lkIGVtaXRBcmd1bWVudFBoYW50b21z
KGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlh
bnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCk7IC8vIFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUu
IEJ5IGNvbnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KICAgICAvLyBIYW5k
bGUgaW5saW5pbmcuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVl
ZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9vbCBoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3RhdHVzJiwgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5l
eHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLCBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKTsKLSAgICBlbnVtIENhbGxlckxpbmthYmlsaXR5IHsgQ2FsbGVy
RG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsKLSAgICBib29sIGF0dGVt
cHRUb0lubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyaWFudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2luZCwgQ2FsbGVy
TGlua2FiaWxpdHksIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkJiBpbmxpbmlu
Z0JhbGFuY2UpOwotICAgIHZvaWQgaW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50
IHJlc3VsdE9wZXJhbmQsIENhbGxWYXJpYW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZy
YW1lOjpLaW5kLCBDYWxsZXJMaW5rYWJpbGl0eSk7Ci0gICAgdm9pZCBjYW5jZWxMaW5raW5nRm9y
QmxvY2soSW5saW5lU3RhY2tFbnRyeSosIEJhc2ljQmxvY2sqKTsgLy8gT25seSB3b3JrcyB3aGVu
IHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbGFzdCBvbmUgdG8gaGF2ZSBiZWVuIGFkZGVkIGZvciB0
aGF0IGlubGluZSBzdGFjayBlbnRyeS4KKyAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNh
bGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWdu
ZWQgbmV4dE9mZnNldCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsKICAgICAvLyBIYW5kbGUgaW50
cmluc2ljIGZ1bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3
ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4KICAgICBib29sIGhhbmRsZUludHJpbnNpYyhpbnQgcmVz
dWx0T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAgYm9vbCBo
YW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQsIEludGVybmFsRnVu
Y3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgVHlwZWRBcnJheVR5cGUpOwotICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0
aW9uKGludCByZXN1bHRPcGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIGJvb2wgaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKGludCByZXN1bHRP
cGVyYW5kLCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIENvZGVTcGVj
aWFsaXphdGlvbktpbmQpOwogICAgIE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2Us
IHVuc2lnbmVkIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAg
Tm9kZSogaGFuZGxlR2V0QnlPZmZzZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIGNvbnN0
IFN0cnVjdHVyZVNldCYsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFByb3BlcnR5T2Zmc2V0
LCBOb2RlVHlwZSBvcCA9IEdldEJ5T2Zmc2V0KTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCkBA
IC0yMDgsOSArMjAwLDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIGdldFNjb3BlKHVuc2lnbmVk
IHNraXBDb3VudCk7CiAgICAgCisgICAgLy8gUHJlcGFyZSB0byBwYXJzZSBhIGJsb2NrLgogICAg
IHZvaWQgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwotICAgIHZvaWQgY2xlYXJDYWNoZXMoKTsKLQog
ICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2RlIGluc3RydWN0aW9u
cy4KICAgICBib29sIHBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpOwogICAgIC8vIExpbmsgYmxv
Y2sgc3VjY2Vzc29ycy4KQEAgLTMwNSwxMyArMjk2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBkZWxheWVkLmV4ZWN1dGUodGhpcywgc2V0TW9kZSk7CiAgICAgfQotICAg
IAotICAgIHZvaWQgcHJvY2Vzc1NldExvY2FsUXVldWUoKQotICAgIHsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2V0TG9jYWxRdWV1ZS5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIG1fc2V0TG9jYWxRdWV1ZVtpXS5leGVjdXRlKHRoaXMpOwotICAgICAgICBtX3NldExvY2Fs
UXVldWUucmVzaXplKDApOwotICAgIH0KIAogICAgIE5vZGUqIHNldChWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKICAgICB7
CkBAIC02NTMsMTMgKzYzNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KLSAgICAKLSAgICB2b2lkIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKE5v
ZGVUeXBlIGV4cGVjdGVkTm9kZVR5cGUpCi0gICAgewotICAgICAgICBOb2RlKiBub2RlID0gbV9j
dXJyZW50QmxvY2stPnRha2VMYXN0KCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm9w
KCkgPT0gZXhwZWN0ZWROb2RlVHlwZSk7Ci0gICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJl
ZShub2RlKTsKLSAgICB9CiAKICAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKE5vZGUqIGNoaWxkKQog
ICAgIHsKQEAgLTY2OCw3ICs2NDUsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICBOb2Rl
KiBhZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQoCi0gICAgICAgIE5vZGVUeXBlIG9wLCBPcElu
Zm8gb3BJbmZvLCBOb2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0
LAorICAgICAgICBOb2RlVHlwZSBvcCwgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCBy
ZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7
CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CkBAIC02NzYsMTkgKzY1MywxOSBAQCBw
cml2YXRlOgogICAgICAgICBpZiAocGFyYW1ldGVyU2xvdHMgPiBtX3BhcmFtZXRlclNsb3RzKQog
ICAgICAgICAgICAgbV9wYXJhbWV0ZXJTbG90cyA9IHBhcmFtZXRlclNsb3RzOwogCi0gICAgICAg
IGludCBkdW1teVRoaXNBcmd1bWVudCA9IG9wID09IENhbGwgfHwgb3AgPT0gTmF0aXZlQ2FsbCB8
fCBvcCA9PSBQcm9maWxlZENhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0FyZ3Vt
ZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVDYWxsID8gMCA6IDE7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwICsgZHVtbXlUaGlzQXJndW1lbnQ7IGkgPCBhcmdDb3VudDsgKytpKQogICAg
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGks
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogCi0gICAgICAgIHJldHVybiBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgb3AsIG9wSW5mbywgT3BJbmZvKHByZWRpY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbikp
OwogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQsIGlu
dCByZWdpc3Rlck9mZnNldCwKKyAgICAgICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIE5vZGUq
IGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2Fs
bFdpdGhvdXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBh
cmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIGNh
bGxlZSwgYXJnQ291bnQsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwogICAgICAgICBpZiAocmVzdWx0UmVnLmlz
VmFsaWQoKSkKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KSwgY2FsbCk7
CkBAIC04OTQsNyArODcxLDggQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPFVubGlua2VkQmxv
Y2s+IG1fdW5saW5rZWRCbG9ja3M7CiAgICAgICAgIAogICAgICAgICAvLyBQb3RlbnRpYWwgYmxv
Y2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQK
LSAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0
ZWNvZGVCZWdpbi4KKyAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUg
dGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4gRm9yIHRoaXMgdmVyeQorICAgICAgICAvLyByZWFzb24s
IHRoaXMgaXMgbm90IGVxdWl2YWxlbnQgdG8gCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4g
bV9ibG9ja0xpbmtpbmdUYXJnZXRzOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhbGxz
aXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQpA
QCAtMTA0MSw2MyArMTAxOSw3NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKAog
ICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQogewogICAgIEFTU0VSVChyZWdpc3Rlck9mZnNldCA8PSAwKTsKKyAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lh
bGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgIAogICAgIGlmIChjYWxsVGFyZ2V0LT5oYXNDb25z
dGFudCgpKQogICAgICAgICBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzKGNhbGxUYXJn
ZXQtPmFzSlNWYWx1ZSgpKS5zZXRJc1Byb3ZlZCh0cnVlKTsKICAgICAKLSAgICBpZiAoKCFjYWxs
TGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpIHx8IGNhbGxMaW5rU3RhdHVzLnNpemUoKSAhPSAxKQot
ICAgICAgICAmJiAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6dXNlRlRM
SklUKCkKLSAgICAgICAgJiYgSW5saW5lQ2FsbEZyYW1lOjppc05vcm1hbENhbGwoa2luZCkKLSAg
ICAgICAgJiYgQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpCi0gICAgICAgICYmIE9wdGlvbnM6OmRm
Z0RvZXNDYWxsRWRnZVByb2ZpbGluZygpKSB7Ci0gICAgICAgIEFTU0VSVChvcCA9PSBDYWxsIHx8
IG9wID09IENvbnN0cnVjdCk7Ci0gICAgICAgIGlmIChvcCA9PSBDYWxsKQotICAgICAgICAgICAg
b3AgPSBQcm9maWxlZENhbGw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9wID0gUHJvZmls
ZWRDb25zdHJ1Y3Q7Ci0gICAgfQotICAgIAogICAgIGlmICghY2FsbExpbmtTdGF0dXMuY2FuT3B0
aW1pemUoKSkgewogICAgICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBo
YXZlbid0IGV4ZWN1dGVkIHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5
bW9ycGhpY2FsbHkKICAgICAgICAgLy8gdGhhdCB3ZSBjYW5ub3Qgb3B0aW1pemUgdGhlbS4KICAg
ICAgICAgCi0gICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgT3BJbmZvKCksIGNhbGxUYXJnZXQs
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rlck9mZnNldCwgcHJlZGljdGlvbik7
CisgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBuZXh0T2Zmc2V0ID0gbV9jdXJyZW50SW5kZXgg
KyBpbnN0cnVjdGlvblNpemU7Ci0gICAgCi0gICAgT3BJbmZvIGNhbGxPcEluZm87Ci0gICAgCi0g
ICAgaWYgKGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwgY2FsbExpbmtTdGF0dXMs
IHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwg
b3AsIGtpbmQsIHByZWRpY3Rpb24pKSB7CisKKyAgICBpZiAoSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24gPSBjYWxsTGlua1N0YXR1cy5pbnRlcm5hbEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgaWYg
KGhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbihyZXN1bHQsIGZ1bmN0aW9uLCByZWdpc3Rl
ck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIHNwZWNpYWxp
emF0aW9uS2luZCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgcGhhbnRvbWluZyBoYXMgdG8gYmUg
KmFmdGVyKiB0aGUgY29kZSBmb3IgdGhlIGludHJpbnNpYywgdG8gc2lnbmlmeSB0aGF0CisgICAg
ICAgICAgICAvLyB0aGUgaW5wdXRzIG11c3QgYmUga2VwdCBhbGl2ZSB3aGF0ZXZlciBleGl0cyB0
aGUgaW50cmluc2ljIG1heSBkby4KKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2Fs
bFRhcmdldCk7CisgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIENhbiBvbmx5
IGhhbmRsZSB0aGlzIHVzaW5nIHRoZSBnZW5lcmljIGNhbGwgaGFuZGxlci4KKyAgICAgICAgYWRk
Q2FsbChyZXN1bHQsIG9wLCBjYWxsVGFyZ2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
ICAgICAKKyAgICBJbnRyaW5zaWMgaW50cmluc2ljID0gY2FsbExpbmtTdGF0dXMuaW50cmluc2lj
Rm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CisKKyAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9u
ID0gbnVsbHB0cjsKKyAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7CisgICAgICAg
IGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVnaXN0ZXJP
ZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGhh
bmRsZUludHJpbnNpYyhyZXN1bHQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgLy8gVGhpcyBw
aGFudG9taW5nIGhhcyB0byBiZSAqYWZ0ZXIqIHRoZSBjb2RlIGZvciB0aGUgaW50cmluc2ljLCB0
byBzaWduaWZ5IHRoYXQKKyAgICAgICAgICAgIC8vIHRoZSBpbnB1dHMgbXVzdCBiZSBrZXB0IGFs
aXZlIHdoYXRldmVyIGV4aXRzIHRoZSBpbnRyaW5zaWMgbWF5IGRvLgorICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgICAgIGVtaXRBcmd1bWVudFBo
YW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lh
bGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkQ2FsbCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChoYW5kbGVJ
bmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNl
dCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQpKSB7CiAgICAg
ICAgIGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBp
bGF0aW9uKCktPm5vdGljZUlubGluZWRDYWxsKCk7CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCiAjaWYgRU5BQkxFKEZUTF9OQVRJVkVfQ0FMTF9JTkxJTklORykKLSAgICBpZiAoaXNGVEwo
bV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVOYXRpdmVDYWxscygpICYm
IGNhbGxMaW5rU3RhdHVzLnNpemUoKSA9PSAxICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VT
bG93UGF0aCgpKSB7Ci0gICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVz
WzBdLmNhbGxlZSgpOwotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5j
dGlvbigpOwotICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2lu
ZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIH0g
ZWxzZSBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6b3B0aW1pemVO
YXRpdmVDYWxscygpKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbExpbmtT
dGF0dXMuZnVuY3Rpb24oKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uICYmIGZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBlbWl0RnVuY3Rpb25DaGVja3MoY2FsbGVlLCBj
YWxsVGFyZ2V0LCByZWdpc3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAg
ICAgIGNhbGxPcEluZm8gPSBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVuY3Rpb24pKTsKKyAgICAg
ICAgICAgIGVtaXRGdW5jdGlvbkNoZWNrcyhjYWxsTGlua1N0YXR1cywgY2FsbFRhcmdldCwgcmVn
aXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgICAgICAgICBrbm93bkZ1bmN0
aW9uID0gZnVuY3Rpb247CiAKLSAgICAgICAgICAgIGlmIChvcCA9PSBDYWxsIHx8IG9wID09IFBy
b2ZpbGVkQ2FsbCkKKyAgICAgICAgICAgIGlmIChvcCA9PSBDYWxsKSAKICAgICAgICAgICAgICAg
ICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQob3AgPT0gQ29uc3RydWN0IHx8IG9wID09IFByb2ZpbGVkQ29uc3RydWN0KTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQob3AgPT0gQ29uc3RydWN0KTsKICAgICAgICAgICAgICAgICBvcCA9
IE5hdGl2ZUNvbnN0cnVjdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KICNlbmRp
ZgotICAgIAotICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5mbywgY2FsbFRhcmdldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsK
KyAgICB9CisgICAgTm9kZSogY2FsbCA9IGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbFRhcmdldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0LCBwcmVkaWN0aW9uKTsK
KworICAgIGlmIChrbm93bkZ1bmN0aW9uKSAKKyAgICAgICAgY2FsbC0+Z2l2ZUtub3duRnVuY3Rp
b24oa25vd25GdW5jdGlvbik7CiB9CiAKLXZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlv
bkNoZWNrcyhDYWxsVmFyaWFudCBjYWxsZWUsIE5vZGUqIGNhbGxUYXJnZXQsIGludCByZWdpc3Rl
ck9mZnNldCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNl
cjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKGNvbnN0IENhbGxMaW5rU3RhdHVzJiBjYWxsTGlua1N0YXR1
cywgTm9kZSogY2FsbFRhcmdldCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgTm9kZSogdGhpc0FyZ3VtZW50OwogICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKQpAQCAtMTEwNSwyNSArMTA5NywyMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjplbWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlLCBOb2RlKiBjYWxsVGFyZ2V0
LCBpbgogICAgIGVsc2UKICAgICAgICAgdGhpc0FyZ3VtZW50ID0gMDsKIAotICAgIEpTQ2VsbCog
Y2FsbGVlQ2VsbDsKLSAgICBOb2RlKiBjYWxsVGFyZ2V0Rm9yQ2hlY2s7Ci0gICAgaWYgKGNhbGxl
ZS5pc0Nsb3N1cmVDYWxsKCkpIHsKLSAgICAgICAgY2FsbGVlQ2VsbCA9IGNhbGxlZS5leGVjdXRh
YmxlKCk7Ci0gICAgICAgIGNhbGxUYXJnZXRGb3JDaGVjayA9IGFkZFRvR3JhcGgoR2V0RXhlY3V0
YWJsZSwgY2FsbFRhcmdldCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2FsbGVlQ2VsbCA9IGNh
bGxlZS5ub25FeGVjdXRhYmxlQ2FsbGVlKCk7Ci0gICAgICAgIGNhbGxUYXJnZXRGb3JDaGVjayA9
IGNhbGxUYXJnZXQ7CisgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpIHsKKyAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEFTU0VSVChjYWxsZWVDZWxsKTsKLSAgICBhZGRU
b0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGNhbGxlZUNlbGwpKSwgY2Fs
bFRhcmdldEZvckNoZWNrLCB0aGlzQXJndW1lbnQpOwotfQotCi12b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojp1bmRvRnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQgY2FsbGVlKQotewotICAgIHJlbW92ZUxh
c3ROb2RlRnJvbUdyYXBoKENoZWNrQ2VsbCk7Ci0gICAgaWYgKGNhbGxlZS5pc0Nsb3N1cmVDYWxs
KCkpCi0gICAgICAgIHJlbW92ZUxhc3ROb2RlRnJvbUdyYXBoKEdldEV4ZWN1dGFibGUpOworICAg
IEFTU0VSVChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKTsKKyAgICAKKyAgICBpZiAoSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpKQorICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikp
LCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQo
Y2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKTsKKyAgICAgICAgCisgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tFeGVjdXRhYmxlLCBPcEluZm8oY2FsbExpbmtTdGF0dXMuZXhlY3V0YWJsZSgpKSwg
Y2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKKyAgICB9CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmVtaXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0xMTMy
LDE3ICsxMTE5LDI4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRBcmd1bWVudFBoYW50b21z
KGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJCiAgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lzdGVyT2Zm
c2V0KSkpOwogfQogCi11bnNpZ25lZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxW
YXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCitib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhO
b2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IENhbGxMaW5rU3Rh
dHVzJiBjYWxsTGlua1N0YXR1cywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFtZTo6S2lu
ZCBraW5kKQogeworICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAK
KyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNh
bGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOworICAgIAogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBpbmxpbmluZyAiLCBjYWxsZWUsICIg
aW50byAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiQ29u
c2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbExpbmtTdGF0dXMsICIgaW50byAiLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCAiXG4iKTsKICAgICAKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7Ci0gICAgaWYgKCFleGVjdXRhYmxlKSB7
CisgICAgLy8gRmlyc3QsIHRoZSByZWFsbHkgc2ltcGxlIGNoZWNrczogZG8gd2UgaGF2ZSBhbiBh
Y3R1YWwgSlMgZnVuY3Rpb24/CisgICAgaWYgKCFjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkp
IHsKICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuIik7Ci0gICAgICAgIHJl
dHVybiBVSU5UX01BWDsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2Ug
dGhlcmUgaXMgbm8gZXhlY3V0YWJsZS5cbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIGlmIChjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkp
IHsKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGlu
ZyBiZWNhdXNlIGl0J3MgYSBob3N0IGZ1bmN0aW9uLlxuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7CiAg
ICAgCiAgICAgLy8gRG9lcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSdyZSBwYXNzaW5nIG1h
dGNoIHRoZSBhcml0eSBvZiB0aGUgdGFyZ2V0PyBXZSBjdXJyZW50bHkKICAgICAvLyBpbmxpbmUg
b25seSBpZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaXMgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvIHRoZSBudW1iZXIKQEAgLTExNTAsNyArMTE0OCw3IEBAIHVuc2lnbmVkIEJ5dGVD
b2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRD
b3VudEluY2x1CiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oZXhlY3V0YWJsZS0+cGFyYW1ldGVy
Q291bnQoKSkgKyAxID4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRmFpbGluZyBiZWNhdXNlIG9mIGFy
aXR5IG1pc21hdGNoLlxuIik7Ci0gICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICAvLyBEbyB3ZSBoYXZlIGEgY29kZSBibG9jaywg
YW5kIGRvZXMgdGhlIGNvZGUgYmxvY2sncyBzaXplIG1hdGNoIHRoZSBoZXVyaXN0aWNzL3JlcXVp
cmVtZW50cyBmb3IKQEAgLTExNTksMTggKzExNTcsMTggQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5j
bHUKICAgICAvLyBpZiB3ZSBoYWQgYSBzdGF0aWMgcHJvb2Ygb2Ygd2hhdCB3YXMgYmVpbmcgY2Fs
bGVkOyB0aGlzIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB5b3UgY2FsbCBhCiAgICAgLy8g
Z2xvYmFsIGZ1bmN0aW9uLCB3aGVyZSB3YXRjaHBvaW50aW5nIGdpdmVzIHVzIHN0YXRpYyBpbmZv
cm1hdGlvbi4gT3ZlcmFsbCwgaXQncyBhIHJhcmUgY2FzZQogICAgIC8vIGJlY2F1c2Ugd2UgZXhw
ZWN0IHRoYXQgYW55IGhvdCBjYWxsZWVzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNvbXBpbGVk
LgotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxv
Y2tGb3Ioa2luZCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5iYXNl
bGluZUNvZGVCbG9ja0ZvcihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGlmICghY29kZUJsb2Nr
KSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSBubyBjb2RlIGJsb2NrIGF2YWlsYWJsZS5cbiIpOwotICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQ2FwYWJpbGl0eUxl
dmVsIGNhcGFiaWxpdHlMZXZlbCA9IGlubGluZUZ1bmN0aW9uRm9yQ2FwYWJpbGl0eUxldmVsKAot
ICAgICAgICBjb2RlQmxvY2ssIGtpbmQsIGNhbGxlZS5pc0Nsb3N1cmVDYWxsKCkpOworICAgICAg
ICBjb2RlQmxvY2ssIHNwZWNpYWxpemF0aW9uS2luZCwgY2FsbExpbmtTdGF0dXMuaXNDbG9zdXJl
Q2FsbCgpKTsKICAgICBpZiAoIWNhbklubGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0
aGUgZnVuY3Rpb24gaXMgbm90IGlubGluZWFibGUuXG4iKTsKLSAgICAgICAgcmV0dXJuIFVJTlRf
TUFYOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlm
IHRoZSBjYWxsZXIgaXMgYWxyZWFkeSB0b28gbGFyZ2UuIFdlIGRvIHRoaXMgY2hlY2sgaGVyZSBi
ZWNhdXNlIHRoYXQncyBqdXN0CkBAIC0xMTgwLDcgKzExNzgsNyBAQCB1bnNpZ25lZCBCeXRlQ29k
ZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdQogICAgICAgICBjb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFs
c2U7CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxp
bmcgYmVjYXVzZSB0aGUgY2FsbGVyIGlzIHRvbyBsYXJnZS5cbiIpOwotICAgICAgICByZXR1cm4g
VUlOVF9NQVg7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgLy8gRklY
TUU6IHRoaXMgc2hvdWxkIGJlIGJldHRlciBhdCBwcmVkaWN0aW5nIGhvdyBtdWNoIGJsb2F0IHdl
IHdpbGwgaW50cm9kdWNlIGJ5IGlubGluaW5nCkBAIC0xMTk5LDcgKzExOTcsNyBAQCB1bnNpZ25l
ZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdQogICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlu
bGluaW5nRGVwdGgoKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSBkZXB0aCBleGNlZWRlZC5cbiIpOwotICAg
ICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBleGVj
dXRhYmxlKSB7CkBAIC0xMjA3LDI2ICsxMjA1LDE5IEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1
CiAgICAgICAgICAgICBpZiAocmVjdXJzaW9uID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ1Jl
Y3Vyc2lvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGYWlsaW5nIGJlY2F1c2UgcmVjdXJzaW9uIGRldGVjdGVkLlxu
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiICAgIElubGluaW5nIHNob3VsZCBiZSBwb3Nz
aWJsZS5cbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgQ29tbWl0dGluZyB0byBpbmxpbmluZy5c
biIpOwogICAgIAotICAgIC8vIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGlubGluZS4KLSAgICBy
ZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCk7Ci19Ci0KLXZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5k
LCBDYWxsVmFyaWFudCBjYWxsZWUsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgQ2FsbGVyTGlua2FiaWxpdHkgY2FsbGVyTGlua2FiaWxpdHkpCi17Ci0gICAgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJbmxpbmVDYWxsRnJhbWU6
OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKLSAgICAKLSAgICBBU1NFUlQoaW5saW5pbmdD
b3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCkgIT0gVUlOVF9NQVgpOworICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0
IHdlIGFyZSBjb21taXR0ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCisgICAg
Ly8gYnkgY2hlY2tpbmcgdGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUg
dGhhdCBhcmd1bWVudHMgYW5kIHRoZSBjYWxsZWUKKyAgICAvLyBhcmUgZmx1c2hlZC4KKyAgICBl
bWl0RnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rl
ck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICAKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxlZS5mdW5jdGlvbkV4ZWN1dGFibGUoKS0+YmFzZWxpbmVDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKTsKLQogICAgIC8vIEZJWE1FOiBEb24ndCBmbHVzaCBjb25zdGFu
dHMhCiAgICAgCiAgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1Rv
cC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCkpLm9mZnNldCgp
ICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKQEAgLTEyNDIsNyArMTIzMyw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCBy
ZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgIHJlc3VsdFJlZyA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChyZXN1bHRSZWcpOwogICAgIAogICAgIElubGluZVN0YWNrRW50cnkg
aW5saW5lU3RhY2tFbnRyeSgKLSAgICAgICAgdGhpcywgY29kZUJsb2NrLCBjb2RlQmxvY2ssIG1f
Z3JhcGgubGFzdEJsb2NrKCksIGNhbGxlZS5mdW5jdGlvbigpLCByZXN1bHRSZWcsCisgICAgICAg
IHRoaXMsIGNvZGVCbG9jaywgY29kZUJsb2NrLCBtX2dyYXBoLmxhc3RCbG9jaygpLCBjYWxsTGlu
a1N0YXR1cy5mdW5jdGlvbigpLCByZXN1bHRSZWcsCiAgICAgICAgIChWaXJ0dWFsUmVnaXN0ZXIp
aW5saW5lQ2FsbEZyYW1lU3RhcnQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBraW5kKTsK
ICAgICAKICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSBhY3R1YWwgaW5saW5pbmcgcmVhbGx5IGhh
cHBlbnMuCkBAIC0xMjU2LDggKzEyNDcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmVD
YWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgQ2FsbFZhcgogICAg
IAogICAgIFJFTEVBU0VfQVNTRVJUKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2lubGlu
ZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbAotICAgICAgICA9PSBjYWxsZWUuaXNDbG9zdXJlQ2Fs
bCgpKTsKLSAgICBpZiAoY2FsbGVlLmlzQ2xvc3VyZUNhbGwoKSkgeworICAgICAgICA9PSBjYWxs
TGlua1N0YXR1cy5pc0Nsb3N1cmVDYWxsKCkpOworICAgIGlmIChjYWxsTGlua1N0YXR1cy5pc0Ns
b3N1cmVDYWxsKCkpIHsKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBjYWxsZWVWYXJpYWJs
ZSA9CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSksIGNh
bGxUYXJnZXROb2RlLCBJbW1lZGlhdGVOYWtlZFNldCktPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNjb3BlVmFyaWFibGUgPQpAQCAtMTI3Miw3ICsx
MjYzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0
Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICBtX2dyYXBoLm1faW5saW5lVmFy
aWFibGVEYXRhLmFwcGVuZChpbmxpbmVWYXJpYWJsZURhdGEpOwogICAgIAogICAgIHBhcnNlQ29k
ZUJsb2NrKCk7Ci0gICAgY2xlYXJDYWNoZXMoKTsgLy8gUmVzZXQgb3VyIHN0YXRlIG5vdyB0aGF0
IHdlJ3JlIGJhY2sgdG8gdGhlIG91dGVyIGNvZGUuCisgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygp
OyAvLyBSZXNldCBvdXIgc3RhdGUgbm93IHRoYXQgd2UncmUgYmFjayB0byB0aGUgb3V0ZXIgY29k
ZS4KICAgICAKICAgICBtX2N1cnJlbnRJbmRleCA9IG9sZEluZGV4OwogICAgIApAQCAtMTI4NSw4
ICsxMjc2LDIwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRh
cmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hlYWQtPmlzTGlu
a2VkKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0eSA9PSBDYWxsZXJE
b2VzTm9ybWFsTGlua2luZykKLSAgICAgICAgICAgIGNhbmNlbExpbmtpbmdGb3JCbG9jayhpbmxp
bmVTdGFja0VudHJ5Lm1fY2FsbGVyLCBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbHNpdGVCbG9ja0hl
YWQpOworICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNhbGxzaXRlIGJsb2NrIGhl
YWQgaXMgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuCisgICAgICAgIGlmICghaW5saW5lU3RhY2tF
bnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxs
ZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgorICAgICAgICAgICAgLy8gQXNzZXJ0IHRoYXQgdGhpcyBh
bGwgYWRkcyB1cC4KKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVy
LT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGlubGluZVN0YWNrRW50cnkubV9j
YWxsc2l0ZUJsb2NrSGVhZCk7CisgICAgICAgICAgICBBU1NFUlQoaW5saW5lU3RhY2tFbnRyeS5t
X2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcpOwor
ICAgICAgICAgICAgaW5saW5lU3RhY2tFbnRyeS5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5s
YXN0KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIEl0J3MgZGVmaW5pdGVseSBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4gVGVs
bCB0aGUgY2FsbGVyIHRoYXQgaGUgZG9lcyBub3QKKyAgICAgICAgICAgIC8vIG5lZWQgdG8gbGlu
ayBoaXMgY2FsbHNpdGUgYmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KKyAg
ICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxv
Y2tIZWFkTmVlZHNMaW5raW5nKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVTdGFja0VudHJ5
Lm1fY2FsbGVyLT5tX2NhbGxzaXRlQmxvY2tIZWFkID09IGlubGluZVN0YWNrRW50cnkubV9jYWxs
c2l0ZUJsb2NrSGVhZCk7CisgICAgICAgICAgICBpbmxpbmVTdGFja0VudHJ5Lm1fY2FsbGVyLT5t
X2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tz
LCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAgICAgfSBlbHNlCkBA
IC0xMzA1LDE5ICsxMzA4LDE2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxsVmFyCiAgICAgICAgICAg
ICAvLyBmb3IgcmVsZWFzZSBidWlsZHMgYmVjYXVzZSB0aGlzIGJsb2NrIHdpbGwgbmV2ZXIgc2Vy
dmUgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0CiAgICAgICAgICAgICAvLyBpbiB0aGUgbGlua2VyJ3Mg
YmluYXJ5IHNlYXJjaC4KICAgICAgICAgICAgIGxhc3RCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1f
Y3VycmVudEluZGV4OwotICAgICAgICAgICAgaWYgKGNhbGxlckxpbmthYmlsaXR5ID09IENhbGxl
ckRvZXNOb3JtYWxMaW5raW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2lu
dGVyKG1fZ3JhcGgubGFzdEJsb2NrKCkpLCAiIChvbmUgcmV0dXJuKVxuIik7Ci0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5k
KFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fdW5saW5rZWRCbG9ja3MuYXBw
ZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5sYXN0QmxvY2soKSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG1fZ3JhcGgubGFzdEJsb2NrKCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIC8vIElm
IHdlIGdldCB0byB0aGlzIHBvaW50IHRoZW4gYWxsIGJsb2NrcyBtdXN0IGVuZCBpbiBzb21lIHNv
cnQgb2YgdGVybWluYWxzLgogICAgIEFTU0VSVChsYXN0QmxvY2stPmxhc3QoKS0+aXNUZXJtaW5h
bCgpKTsKKyAgICAKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIGZv
ciB0aGUgY29udGludWF0aW9uIGF0IHRoZSBjYWxsZXIuCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+
IGJsb2NrID0gYWRvcHRSZWYobmV3IEJhc2ljQmxvY2sobmV4dE9mZnNldCwgbV9udW1Bcmd1bWVu
dHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7CkBAIC0xMzMzLDI5MyArMTMzMywyMCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjppbmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgQ2FsbFZhcgogICAgICAgICBBU1NFUlQoIW5vZGUtPnRhcmdldEJsb2NrKCkpOwog
ICAgICAgICBub2RlLT50YXJnZXRCbG9jaygpID0gYmxvY2suZ2V0KCk7CiAgICAgICAgIGlubGlu
ZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2Nrc1tpXS5tX25lZWRzRWFybHlSZXR1cm5MaW5raW5n
ID0gZmFsc2U7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiTWFy
a2luZyAiLCBSYXdQb2ludGVyKGJsb2NrVG9MaW5rKSwgIiBhcyBsaW5rZWQgKGp1bXBzIHRvIHJl
dHVybilcbiIpOwotICAgICAgICBibG9ja1RvTGluay0+ZGlkTGluaygpOworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgYmxvY2tUb0xpbmstPmlzTGlua2VkID0gdHJ1ZTsKKyNlbmRpZgog
ICAgIH0KICAgICAKICAgICBtX2N1cnJlbnRCbG9jayA9IGJsb2NrLmdldCgpOwogICAgIEFTU0VS
VChtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmlzRW1w
dHkoKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtpbmdUYXJnZXRz
Lmxhc3QoKS0+Ynl0ZWNvZGVCZWdpbiA8IG5leHRPZmZzZXQpOwotICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKCJBZGRpbmcgdW5saW5rZWQgYmxvY2sgIiwgUmF3UG9pbnRlcihibG9j
ay5nZXQoKSksICIgKG1hbnkgcmV0dXJucylcbiIpOwotICAgIGlmIChjYWxsZXJMaW5rYWJpbGl0
eSA9PSBDYWxsZXJEb2VzTm9ybWFsTGlua2luZykgewotICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2NhbGxlci0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5n
ZXQoKSkpOwotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxlci0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5nZXQoKSk7Ci0gICAgfQorICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fY2FsbGVyLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2Nr
LmdldCgpKSk7CisgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXItPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5hcHBlbmQoYmxvY2suZ2V0KCkpOwogICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soYmxv
Y2spOwogICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKLX0KLQotdm9pZCBCeXRlQ29kZVBhcnNl
cjo6Y2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqIGlubGluZVN0YWNrRW50
cnksIEJhc2ljQmxvY2sqIGJsb2NrKQotewotICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUg
Y2FsbHNpdGUgYmxvY2sgaGVhZCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAo
IWlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IC8vIEl0J3MgZGVmaW5pdGVseSBvd25lZCBieSB0aGUgY2FsbGVyLCBiZWNhdXNlIHRoZSBjYWxs
ZXIgY3JlYXRlZCBuZXcgYmxvY2tzLgotICAgICAgICAvLyBBc3NlcnQgdGhhdCB0aGlzIGFsbCBh
ZGRzIHVwLgotICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCBpbmxpbmVTdGFja0VudHJ5LT5t
X3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrID09IGJsb2NrKTsKLSAgICAgICAgQVNTRVJU
KGlubGluZVN0YWNrRW50cnktPm1fdW5saW5rZWRCbG9ja3MubGFzdCgpLm1fbmVlZHNOb3JtYWxM
aW5raW5nKTsKLSAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV91bmxpbmtlZEJsb2Nrcy5sYXN0
KCkubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxzZTsKLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBJdCdzIGRlZmluaXRlbHkgbm90IG93bmVkIGJ5IHRoZSBjYWxsZXIuIFRlbGwgdGhlIGNhbGxl
ciB0aGF0IGhlIGRvZXMgbm90Ci0gICAgICAgIC8vIG5lZWQgdG8gbGluayBoaXMgY2FsbHNpdGUg
YmxvY2sgaGVhZCwgYmVjYXVzZSB3ZSBkaWQgaXQgZm9yIGhpbS4KLSAgICAgICAgQVNTRVJUKGlu
bGluZVN0YWNrRW50cnktPm1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcpOwotICAgICAg
ICBBU1NFUlRfVU5VU0VEKGJsb2NrLCBpbmxpbmVTdGFja0VudHJ5LT5tX2NhbGxzaXRlQmxvY2tI
ZWFkID09IGJsb2NrKTsKLSAgICAgICAgaW5saW5lU3RhY2tFbnRyeS0+bV9jYWxsc2l0ZUJsb2Nr
SGVhZE5lZWRzTGlua2luZyA9IGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBCeXRlQ29kZVBhcnNl
cjo6YXR0ZW1wdFRvSW5saW5lQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9w
ZXJhbmQsIENhbGxWYXJpYW50IGNhbGxlZSwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIElubGluZUNhbGxGcmFt
ZTo6S2luZCBraW5kLCBDYWxsZXJMaW5rYWJpbGl0eSBjYWxsZXJMaW5rYWJpbGl0eSwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQmIGlubGluaW5nQmFsYW5jZSkKLXsKLSAgICBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGluZUNhbGxGcmFt
ZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwotICAgIAotICAgIGlmICghaW5saW5pbmdC
YWxhbmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKEludGVybmFsRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLmludGVybmFsRnVuY3Rpb24oKSkgewotICAgICAgICBp
ZiAoaGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9u
LCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0
aW9uS2luZCkpIHsKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5v
ZGUpOwotICAgICAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAg
ICAgaW5saW5pbmdCYWxhbmNlLS07Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIEludHJpbnNpYyBpbnRy
aW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7Ci0gICAgaWYg
KGludHJpbnNpYyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICBpZiAoaGFuZGxlSW50cmluc2lj
KHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFu
dG9tLCBjYWxsVGFyZ2V0Tm9kZSk7Ci0gICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhy
ZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9u
S2luZCk7Ci0gICAgICAgICAgICBpbmxpbmluZ0JhbGFuY2UtLTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0g
ICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcywgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICBpZiAobXlJbmxp
bmluZ0Nvc3QgPiBpbmxpbmluZ0JhbGFuY2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBpbmxpbmVDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsZWUsIHJl
Z2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbmV4dE9mZnNldCwga2lu
ZCwgY2FsbGVyTGlua2FiaWxpdHkpOwotICAgIGlubGluaW5nQmFsYW5jZSAtPSBteUlubGluaW5n
Q29zdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBD
YWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCB1bnNpZ25lZCBuZXh0T2Zmc2V0LCBOb2RlVHlwZSBj
YWxsT3AsIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uKQotewotICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIGlu
bGluaW5nLi4uXG4iKTsKLSAgICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3Jp
Z2luKCksICJcbiIpOwotICAgIH0KLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxp
emF0aW9uS2luZCA9IElubGluZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQp
OwotICAgIAotICAgIGlmICghY2FsbExpbmtTdGF0dXMuc2l6ZSgpKSB7Ci0gICAgICAgIGlmICh2
ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZy5cbiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGlubGluaW5nQmFs
YW5jZSA9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50KCk7Ci0gICAgaWYgKHNwZWNpYWxpemF0aW9uS2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KQotICAgICAgICBpbmxpbmluZ0JhbGFuY2UgPSBzdGQ6Om1pbihpbmxpbmluZ0JhbGFu
Y2UsIE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQoKSk7Ci0gICAgaWYgKGNhbGxMaW5rU3RhdHVzLmlzQ2xvc3VyZUNhbGwo
KSkKLSAgICAgICAgaW5saW5pbmdCYWxhbmNlID0gc3RkOjptaW4oaW5saW5pbmdCYWxhbmNlLCBP
cHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQoKSk7Ci0gICAgCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgd2UgY2FuIGF2b2lk
IGNyZWF0aW5nIGNvbnRyb2wgZmxvdy4gT3VyIGlubGluZXIgZG9lcyBzb21lIENGRwotICAgIC8v
IHNpbXBsaWZpY2F0aW9uIG9uIHRoZSBmbHkgYW5kIHRoaXMgaGVscHMgcmVkdWNlIGNvbXBpbGUg
dGltZXMsIGJ1dCB3ZSBjYW4gb25seSBsZXZlcmFnZQotICAgIC8vIHRoaXMgaW4gY2FzZXMgd2hl
cmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sgdGhlIGNhbGxl
ZS4KLSAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgJiYgY2FsbExp
bmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKAotICAg
ICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIGNhbGxUYXJnZXROb2RlLCByZWdp
c3Rlck9mZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBh
dHRlbXB0VG9JbmxpbmVDYWxsKAotICAgICAgICAgICAgY2FsbFRhcmdldE5vZGUsIHJlc3VsdE9w
ZXJhbmQsIGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpLCByZWdpc3Rlck9mZnNldCwKLSAgICAg
ICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBuZXh0T2Zmc2V0LCBraW5kLCBDYWxs
ZXJEb2VzTm9ybWFsTGlua2luZywgcHJlZGljdGlvbiwKLSAgICAgICAgICAgIGlubGluaW5nQmFs
YW5jZSk7Ci0gICAgICAgIGlmICghcmVzdWx0ICYmICFjYWxsTGlua1N0YXR1cy5pc1Byb3ZlZCgp
KQotICAgICAgICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxl
ZSgpKTsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIkRvbmUg
aW5saW5pbmcgKHNpbXBsZSkuXG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBj
dXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLSAgICAKLSAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBzb21lIGtpbmQgb2Yg
c3dpdGNoIG92ZXIgY2FsbGVlLiBGb3Igbm93IHdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBiZWxpZXZl
IHRoYXQKLSAgICAvLyB3ZSdyZSBpbiB0aGUgdG9wIHRpZXIuIFdlIGhhdmUgdHdvIHJlYXNvbnMg
Zm9yIHRoaXM6IGZpcnN0LCBpdCBwcm92aWRlcyB1cyBhbiBvcHBvcnR1bml0eSB0bwotICAgIC8v
IGRvIG1vcmUgZGV0YWlsZWQgcG9seXZhcmlhbnQvcG9seW1vcnBoaWMgcHJvZmlsaW5nOyBhbmQg
c2Vjb25kLCBpdCByZWR1Y2VzIGNvbXBpbGUgdGltZXMgaW4KLSAgICAvLyB0aGUgREZHLiBBbmQg
YnkgcG9seXZhcmlhbnQgcHJvZmlsaW5nIHdlIG1lYW4gcG9seXZhcmlhbnQgcHJvZmlsaW5nIG9m
ICp0aGlzKiBjYWxsLiBOb3RlIHRoYXQKLSAgICAvLyB3ZSBjb3VsZCBpbXByb3ZlIHRoYXQgYXNw
ZWN0IG9mIHRoaXMgYnkgZG9pbmcgcG9seW1vcnBoaWMgaW5saW5pbmcgYnV0IGhhdmluZyB0aGUg
cHJvZmlsaW5nCi0gICAgLy8gYWxzby4gQ3VycmVudGx5IHdlIG9wdCBhZ2FpbnN0IHRoaXMsIGJ1
dCBpdCBjb3VsZCBiZSBpbnRlcmVzdGluZy4gVGhhdCB3b3VsZCByZXF1aXJlIGhhdmluZyBhCi0g
ICAgLy8gc2VwYXJhdGUgbm9kZSBmb3IgY2FsbCBlZGdlIHByb2ZpbGluZy4KLSAgICAvLyBGSVhN
RTogSW50cm9kdWNlIHRoZSBub3Rpb24gb2YgYSBzZXBhcmF0ZSBjYWxsIGVkZ2UgcHJvZmlsaW5n
IG5vZGUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NjAzMwotICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgfHwgIU9wdGlvbnM6OmVu
YWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nKCkpIHsKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsK
LSAgICAgICAgICAgIGRhdGFMb2coIkJhaWxpbmcgaW5saW5pbmcgKGhhcmQpLlxuIik7Ci0gICAg
ICAgICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25l
ZCBvbGRPZmZzZXQgPSBtX2N1cnJlbnRJbmRleDsKLSAgICAKLSAgICBib29sIGFsbEFyZUNsb3N1
cmVDYWxscyA9IHRydWU7Ci0gICAgYm9vbCBhbGxBcmVEaXJlY3RDYWxscyA9IHRydWU7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IGlmIChjYWxsTGlua1N0YXR1c1tpXS5jYWxsZWUoKS5pc0Nsb3N1cmVDYWxsKCkpCi0gICAgICAg
ICAgICBhbGxBcmVEaXJlY3RDYWxscyA9IGZhbHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhbGxBcmVDbG9zdXJlQ2FsbHMgPSBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgTm9kZSogdGhp
bmdUb1N3aXRjaE9uOwotICAgIGlmIChhbGxBcmVEaXJlY3RDYWxscykKLSAgICAgICAgdGhpbmdU
b1N3aXRjaE9uID0gY2FsbFRhcmdldE5vZGU7Ci0gICAgZWxzZSBpZiAoYWxsQXJlQ2xvc3VyZUNh
bGxzKQotICAgICAgICB0aGluZ1RvU3dpdGNoT24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUs
IGNhbGxUYXJnZXROb2RlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlzIGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9u
J3Qga25vdyBvZiBjYXNlcwotICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFs
LiBBbHNvLCBDYWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtl
Ci0gICAgICAgIC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxs
cyAtIGV4Y2VwdCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgotICAgICAgICAvLyBT
byB0aGlzIHdpbGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0
aW9ucyBhbmQgb3RoZXJzIGFyZSBjbG9zdXJlcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAyMAotICAgICAgICBpZiAodmVyYm9zZSkgewot
ICAgICAgICAgICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAobWl4KS5cbiIpOwotICAgICAg
ICAgICAgZGF0YUxvZygiU3RhY2s6ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHZlcmJv
c2UpIHsKLSAgICAgICAgZGF0YUxvZygiRG9pbmcgaGFyZCBpbmxpbmluZy4uLlxuIik7Ci0gICAg
ICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKLSAgICB9
Ci0gICAgCi0gICAgLy8gVGhpcyBtYWtlcyBtZSB3aXNoIHRoYXQgd2Ugd2VyZSBpbiBTU0EgYWxs
IHRoZSB0aW1lLiBXZSBuZWVkIHRvIHBpY2sgYSB2YXJpYWJsZSBpbnRvIHdoaWNoIHRvCi0gICAg
Ly8gc3RvcmUgdGhlIGNhbGxlZSBzbyB0aGF0IGl0IHdpbGwgYmUgYWNjZXNzaWJsZSB0byBhbGwg
b2YgdGhlIGJsb2NrcyB3ZSdyZSBhYm91dCB0byBjcmVhdGUuIFdlCi0gICAgLy8gZ2V0IGF3YXkg
d2l0aCBkb2luZyBhbiBpbW1lZGlhdGUtc2V0IGhlcmUgYmVjYXVzZSB3ZSB3b3VsZG4ndCBoYXZl
IHBlcmZvcm1lZCBhbnkgc2lkZSBlZmZlY3RzCi0gICAgLy8geWV0LgotICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICBkYXRhTG9nKCJSZWdpc3RlciBvZmZzZXQ6ICIsIHJlZ2lzdGVyT2Zmc2V0KTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlUmVnKHJlZ2lzdGVyT2Zmc2V0ICsgSlNTdGFjazo6
Q2FsbGVlKTsKLSAgICBjYWxsZWVSZWcgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQo
Y2FsbGVlUmVnKTsKLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQ2FsbGVlIGlz
IGdvaW5nIHRvIGJlICIsIGNhbGxlZVJlZywgIlxuIik7Ci0gICAgc2V0RGlyZWN0KGNhbGxlZVJl
ZywgY2FsbFRhcmdldE5vZGUsIEltbWVkaWF0ZVNldFdpdGhGbHVzaCk7Ci0gICAgCi0gICAgU3dp
dGNoRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3dpdGNoRGF0YS5hZGQoKTsKLSAgICBkYXRhLmtp
bmQgPSBTd2l0Y2hDZWxsOwotICAgIGFkZFRvR3JhcGgoU3dpdGNoLCBPcEluZm8oJmRhdGEpLCB0
aGluZ1RvU3dpdGNoT24pOwotICAgIAotICAgIEJhc2ljQmxvY2sqIG9yaWdpbkJsb2NrID0gbV9j
dXJyZW50QmxvY2s7Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIk1hcmtpbmcg
IiwgUmF3UG9pbnRlcihvcmlnaW5CbG9jayksICIgYXMgbGlua2VkIChvcmlnaW4gb2YgcG9seSBp
bmxpbmUpXG4iKTsKLSAgICBvcmlnaW5CbG9jay0+ZGlkTGluaygpOwotICAgIGNhbmNlbExpbmtp
bmdGb3JCbG9jayhtX2lubGluZVN0YWNrVG9wLCBvcmlnaW5CbG9jayk7Ci0gICAgCi0gICAgLy8g
RWFjaCBpbmxpbmVkIGNhbGxlZSB3aWxsIGhhdmUgYSBsYW5kaW5nIGJsb2NrIHRoYXQgaXQgcmV0
dXJucyBhdC4gVGhleSBzaG91bGQgYWxsIGhhdmUganVtcHMKLSAgICAvLyB0byB0aGUgY29udGlu
dWF0aW9uIGJsb2NrLCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4KLSAgICBWZWN0b3I8QmFzaWNCbG9j
ayo+IGxhbmRpbmdCbG9ja3M7Ci0gICAgCi0gICAgLy8gV2UgbWFrZSBmb3JjZSB0aGlzIHRydWUg
aWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2VzLgotICAgIGJvb2wgY291
bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpOwotICAg
IAotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJBYm91dCB0byBsb29wIG92ZXIg
ZnVuY3Rpb25zIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKLSAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbExpbmtTdGF0dXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSBvbGRPZmZzZXQ7Ci0gICAgICAgIFJlZlB0cjxCYXNpY0Js
b2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3Vt
ZW50cywgbV9udW1Mb2NhbHMsIFBOYU4pKTsKLSAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9j
ay5nZXQoKTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhibG9jayk7Ci0gICAgICAgIHBy
ZXBhcmVUb1BhcnNlQmxvY2soKTsKLSAgICAgICAgCi0gICAgICAgIE5vZGUqIG15Q2FsbFRhcmdl
dE5vZGUgPSBnZXREaXJlY3QoY2FsbGVlUmVnKTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgaW5s
aW5pbmdSZXN1bHQgPSBhdHRlbXB0VG9JbmxpbmVDYWxsKAotICAgICAgICAgICAgbXlDYWxsVGFy
Z2V0Tm9kZSwgcmVzdWx0T3BlcmFuZCwgY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCksIHJlZ2lz
dGVyT2Zmc2V0LAotICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRP
ZmZzZXQsIGtpbmQsIENhbGxlckxpbmtzTWFudWFsbHksIHByZWRpY3Rpb24sCi0gICAgICAgICAg
ICBpbmxpbmluZ0JhbGFuY2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFpbmxpbmluZ1Jlc3Vs
dCkgewotICAgICAgICAgICAgLy8gVGhhdCBmYWlsZWQgc28gd2UgbGV0IHRoZSBibG9jayBkaWUu
IE5vdGhpbmcgaW50ZXJlc3Rpbmcgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0bwotICAgICAgICAg
ICAgLy8gdGhlIGJsb2NrLiBXZSBhbHNvIGdpdmUgdXAgb24gaW5saW5pbmcgYW55IG9mIHRoZSAo
bGVzcyBmcmVxdWVudCkgY2FsbGVlcy4KLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRCbG9j
ayA9PSBibG9jay5nZXQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Jsb2Nrcy5s
YXN0KCkgPT0gYmxvY2spOwotICAgICAgICAgICAgbV9ncmFwaC5raWxsQmxvY2tBbmRJdHNDb250
ZW50cyhibG9jay5nZXQoKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYmxvY2tzLnJlbW92ZUxh
c3QoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBpbmxpbmlu
ZyBmYWlsZWQgbWVhbnMgd2UgbmVlZCBhIHNsb3cgcGF0aC4KLSAgICAgICAgICAgIGNvdWxkVGFr
ZVNsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBKU0NlbGwqIHRoaW5nVG9DYXNlT247Ci0gICAgICAgIGlmIChhbGxBcmVEaXJl
Y3RDYWxscykKLSAgICAgICAgICAgIHRoaW5nVG9DYXNlT24gPSBjYWxsTGlua1N0YXR1c1tpXS5j
YWxsZWUoKS5ub25FeGVjdXRhYmxlQ2FsbGVlKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKGFsbEFyZUNsb3N1cmVDYWxscyk7Ci0gICAgICAgICAgICB0aGluZ1RvQ2FzZU9u
ID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuZXhlY3V0YWJsZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhpbmdU
b0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7Ci0gICAgICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9m
ZnNldDsKLSAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsgLy8gVGhpcyBvbmx5IGNvbWVz
IGludG8gcGxheSBmb3IgaW50cmluc2ljcywgc2luY2Ugbm9ybWFsIGlubGluZWQgY29kZSB3aWxs
IGxlYXZlIGFuIGVtcHR5IHF1ZXVlLgotICAgICAgICBhZGRUb0dyYXBoKEp1bXApOwotICAgICAg
ICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRl
cihtX2N1cnJlbnRCbG9jayksICIgYXMgbGlua2VkICh0YWlsIG9mIHBvbHkgaW5saW5lZSlcbiIp
OwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+ZGlkTGluaygpOwotICAgICAgICBsYW5kaW5nQmxv
Y2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7Ci0KLSAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICBkYXRhTG9nKCJGaW5pc2hlZCBpbmxpbmluZyAiLCBjYWxsTGlua1N0YXR1c1tpXS5j
YWxsZWUoKSwgIiBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiLlxuIik7Ci0gICAgfQotICAg
IAotICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBzbG93UGF0aEJsb2NrID0gYWRvcHRSZWYoCi0gICAg
ICAgIG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMs
IFBOYU4pKTsKLSAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKLSAgICBkYXRhLmZhbGxU
aHJvdWdoID0gQnJhbmNoVGFyZ2V0KHNsb3dQYXRoQmxvY2suZ2V0KCkpOwotICAgIG1fZ3JhcGgu
YXBwZW5kQmxvY2soc2xvd1BhdGhCbG9jayk7Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRh
dGFMb2coIk1hcmtpbmcgIiwgUmF3UG9pbnRlcihzbG93UGF0aEJsb2NrLmdldCgpKSwgIiBhcyBs
aW5rZWQgKHNsb3cgcGF0aCBibG9jaylcbiIpOwotICAgIHNsb3dQYXRoQmxvY2stPmRpZExpbmso
KTsKLSAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7Ci0gICAgbV9jdXJyZW50QmxvY2sgPSBzbG93
UGF0aEJsb2NrLmdldCgpOwotICAgIE5vZGUqIG15Q2FsbFRhcmdldE5vZGUgPSBnZXREaXJlY3Qo
Y2FsbGVlUmVnKTsKLSAgICBpZiAoY291bGRUYWtlU2xvd1BhdGgpIHsKLSAgICAgICAgYWRkQ2Fs
bCgKLSAgICAgICAgICAgIHJlc3VsdE9wZXJhbmQsIGNhbGxPcCwgT3BJbmZvKCksIG15Q2FsbFRh
cmdldE5vZGUsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLAotICAgICAgICAgICAgcmVnaXN0
ZXJPZmZzZXQsIHByZWRpY3Rpb24pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2tCYWRDZWxsKTsKLSAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBteUNhbGxUYXJnZXRO
b2RlKTsKLSAgICAgICAgZW1pdEFyZ3VtZW50UGhhbnRvbXMocmVnaXN0ZXJPZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBzcGVjaWFsaXphdGlvbktpbmQpOwotICAgICAgICAKLSAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChCb3R0
b21WYWx1ZSkpOwotICAgIH0KLQotICAgIG1fY3VycmVudEluZGV4ID0gbmV4dE9mZnNldDsKLSAg
ICBwcm9jZXNzU2V0TG9jYWxRdWV1ZSgpOwotICAgIGFkZFRvR3JhcGgoSnVtcCk7Ci0gICAgbGFu
ZGluZ0Jsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2spOwotICAgIAotICAgIFJlZlB0cjxCYXNp
Y0Jsb2NrPiBjb250aW51YXRpb25CbG9jayA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgQmFzaWNC
bG9jayhVSU5UX01BWCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCBQTmFOKSk7Ci0gICAg
bV9ncmFwaC5hcHBlbmRCbG9jayhjb250aW51YXRpb25CbG9jayk7Ci0gICAgaWYgKHZlcmJvc2Up
Ci0gICAgICAgIGRhdGFMb2coIkFkZGluZyB1bmxpbmtlZCBibG9jayAiLCBSYXdQb2ludGVyKGNv
bnRpbnVhdGlvbkJsb2NrLmdldCgpKSwgIiAoY29udGludWF0aW9uKVxuIik7Ci0gICAgbV9pbmxp
bmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhjb250aW51
YXRpb25CbG9jay5nZXQoKSkpOwotICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKLSAgICBtX2N1
cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbkJsb2NrLmdldCgpOwogICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IGxhbmRpbmdCbG9ja3Muc2l6ZSgpOyBpLS07KQotICAgICAgICBsYW5kaW5nQmxv
Y2tzW2ldLT5sYXN0KCktPnRhcmdldEJsb2NrKCkgPSBjb250aW51YXRpb25CbG9jay5nZXQoKTsK
LSAgICAKLSAgICBtX2N1cnJlbnRJbmRleCA9IG9sZE9mZnNldDsKLSAgICAKLSAgICBpZiAodmVy
Ym9zZSkgewotICAgICAgICBkYXRhTG9nKCJEb25lIGlubGluaW5nIChoYXJkKS5cbiIpOwotICAg
ICAgICBkYXRhTG9nKCJTdGFjazogIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7Ci0gICAg
fQorICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgcmV0dXJuIGFuZCBjb250aW51ZSB0byBnZW5lcmF0
ZSBjb2RlIGZvciB0aGUgY2FsbGVyLCBidXQKKyAgICAvLyBpbiB0aGUgbmV3IGJhc2ljIGJsb2Nr
LgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTE4LDcgKzE2NDUsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoCiAKIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICBpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIGludCByZWdpc3Rlck9mZnNldCwKLSAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICAvLyBJZiB3
ZSBldmVyIGZpbmQgdGhhdCB3ZSBoYXZlIGEgbG90IG9mIGludGVybmFsIGZ1bmN0aW9ucyB0aGF0
IHdlIHNwZWNpYWxpemUgZm9yLAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUg
c29tZSBzb3J0IG9mIGhhc2h0YWJsZSBkaXNwYXRjaCwgb3IgbWF5YmUgZXZlbgpAQCAtMTkyNyw2
ICsxNjU0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1
bmN0aW9uKAogICAgIC8vIHdlIGtub3cgYWJvdXQgaXMgc21hbGwgZW5vdWdoLCB0aGF0IGhhdmlu
ZyBqdXN0IGEgbGluZWFyIGNhc2NhZGUgb2YgaWYgc3RhdGVtZW50cwogICAgIC8vIGlzIGdvb2Qg
ZW5vdWdoLgogICAgIAorICAgIFVOVVNFRF9QQVJBTShwcmVkaWN0aW9uKTsgLy8gUmVtb3ZlIHRo
aXMgb25jZSB3ZSBkbyBtb3JlIHRoaW5ncy4KKyAgICAKICAgICBpZiAoZnVuY3Rpb24tPmNsYXNz
SW5mbygpID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkgewogICAgICAgICBpZiAoZnVuY3Rp
b24tPmdsb2JhbE9iamVjdCgpICE9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyOTEsMTIgKzIwMjAs
NiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogCiB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwcmVwYXJlVG9QYXJzZUJsb2NrKCkKIHsKLSAgICBjbGVhckNhY2hlcygpOwotICAg
IEFTU0VSVChtX3NldExvY2FsUXVldWUuaXNFbXB0eSgpKTsKLX0KLQotdm9pZCBCeXRlQ29kZVBh
cnNlcjo6Y2xlYXJDYWNoZXMoKQotewogICAgIG1fY29uc3RhbnRzLnJlc2l6ZSgwKTsKIH0KIApA
QCAtMjMzNiw3ICsyMDU5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwcm9jZXNz
U2V0TG9jYWxRdWV1ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZXRM
b2NhbFF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlW2ldLmV4
ZWN1dGUodGhpcyk7CisgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5yZXNpemUoMCk7CiAgICAgICAg
IAogICAgICAgICAvLyBEb24ndCBleHRlbmQgb3ZlciBqdW1wIGRlc3RpbmF0aW9ucy4KICAgICAg
ICAgaWYgKG1fY3VycmVudEluZGV4ID09IGxpbWl0KSB7CkBAIC0yNDgwLDEzICsyMjA1LDEzIEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
ICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUuanND
ZWxsLmdldCgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZWRGdW5jdGlvbiAKICAgICAgICAgICAg
ICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dD
YXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7Cisg
ICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkRnVuY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0KFZp
cnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZShjYWNo
ZWRGdW5jdGlvbik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhY2hlZEZ1bmN0aW9uLT5pbmhl
cml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBOb2RlKiBhY3R1YWxD
YWxsZWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKEpTU3RhY2s6OkNhbGxlZSkpOwotICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVuKSwgYWN0dWFsQ2FsbGVl
KTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhmcm96
ZW4pLCBhY3R1YWxDYWxsZWUpOwogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25zdGFudCwg
T3BJbmZvKGZyb3plbikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2dldF9jYWxsZWUpOwpAQCAtMzE2OCw3ICsyODkzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGFscmVhZHkgZ25h
cmx5IGVub3VnaCBhcyBpdCBpcy4KICAgICAgICAgICAgIEFTU0VSVChwb2ludGVySXNGdW5jdGlv
bihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcikpOwogICAgICAgICAgICAg
YWRkVG9HcmFwaCgKLSAgICAgICAgICAgICAgICBDaGVja0NlbGwsCisgICAgICAgICAgICAgICAg
Q2hlY2tGdW5jdGlvbiwKICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUoc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oYWN0dWFsUG9pbnRlckZvcigKICAgICAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2ssIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnNw
ZWNpYWxQb2ludGVyKSkpKSwKICAgICAgICAgICAgICAgICBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7CkBAIC0zNTkyLDE5ICszMzE3LDE1IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9jayhCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PEJhc2ljQmxvY2sqPiYgcG9zc2libGVUCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiTWFya2luZyAiLCBSYXdQb2ludGVyKGJs
b2NrKSwgIiBhcyBsaW5rZWQgKGFjdHVhbGx5IGRpZCBsaW5raW5nKVxuIik7Ci0gICAgYmxvY2st
PmRpZExpbmsoKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYmxvY2stPmlzTGlua2VkID0g
dHJ1ZTsKKyNlbmRpZgogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpsaW5rQmxvY2tzKFZlY3Rv
cjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9ja3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBv
c3NpYmxlVGFyZ2V0cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVubGlua2VkQmxv
Y2tzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0
YUxvZygiQXR0ZW1wdGluZyB0byBsaW5rICIsIFJhd1BvaW50ZXIodW5saW5rZWRCbG9ja3NbaV0u
bV9ibG9jayksICJcbiIpOwogICAgICAgICBpZiAodW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05v
cm1hbExpbmtpbmcpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBEb2VzIG5lZWQgbm9ybWFsIGxpbmtpbmcuXG4iKTsKICAgICAgICAgICAg
IGxpbmtCbG9jayh1bmxpbmtlZEJsb2Nrc1tpXS5tX2Jsb2NrLCBwb3NzaWJsZVRhcmdldHMpOwog
ICAgICAgICAgICAgdW5saW5rZWRCbG9ja3NbaV0ubV9uZWVkc05vcm1hbExpbmtpbmcgPSBmYWxz
ZTsKICAgICAgICAgfQpAQCAtMzc3MSw3ICszNDkyLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKCkKIHsKLSAgICBjbGVhckNhY2hlcygpOworICAgIHByZXBhcmVUb1BhcnNl
QmxvY2soKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrOwogICAgIApAQCAtMzgzNywxMiArMzU1OCw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgLy8gMikgSWYg
dGhlIGJ5dGVjb2RlQmVnaW4gaXMgZXF1YWwgdG8gdGhlIGN1cnJlbnRJbmRleCwgdGhlbiB3ZSBm
YWlsZWQgdG8gZG8KICAgICAgICAgICAgICAgICAgICAgLy8gICAgYSBwZWVwaG9sZSBjb2FsZXNj
aW5nIG9mIHRoaXMgYmxvY2sgaW4gdGhlIGlmIHN0YXRlbWVudCBhYm92ZS4gU28sIHdlJ3JlCiAg
ICAgICAgICAgICAgICAgICAgIC8vICAgIGdlbmVyYXRpbmcgc3Vib3B0aW1hbCBjb2RlIGFuZCBs
ZWF2aW5nIG1vcmUgd29yayBmb3IgdGhlIENGRyBzaW1wbGlmaWVyLgotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsYXN0QmVnaW4gPQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MubGFz
dCgpLm1fYmxvY2stPmJ5dGVjb2RlQmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCZWdpbiwgbGFzdEJl
Z2luID09IFVJTlRfTUFYIHx8IGxhc3RCZWdpbiA8IG1fY3VycmVudEluZGV4KTsKLSAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1Rv
cC0+bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxp
bmtlZEJsb2Nrcy5sYXN0KCkubV9ibG9jay0+Ynl0ZWNvZGVCZWdpbiA8IG1fY3VycmVudEluZGV4
KTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nr
cy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLmdl
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRl
bHkgYW4gT1NSIHRhcmdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmluZGV4IGI3ZWYwZDAxOTJiMWExOGI3YTNiY2Y0YWU3
ZjVhNDcyMmZmOWUzZDIuLjgwZDQ5YzFmNzMwMmEyOTAxYWFmMDNiMDJhZDMyMDRhY2VjNmI3YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcApAQCAtOTAsMTAgKzkwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y2hpbGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFub2RlLT5jaGlsZDEoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUt
PmNoaWxkMSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS0+
b3AoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIFBoaToKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBTZXRBcmd1bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKaW5kZXggOWEzN2U3M2QwZmIwMzU5N2I5ZjZlODM3NzhiNTEwYWI3YmRmMTQ0OS4uZmI3
MjNkMzVmOTMwYTVkYmNiMmVkYjg1NmMwMTVhMDRkNjI1NzgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE0NCw4ICsxNDQsNiBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBSZWFkRnVuY3RvciYgcmVhZCwgV3JpdGVG
dW5jdG9yJiB3cml0ZQogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgTWFrZVJvcGU6CiAg
ICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgY2FzZSBHZXRFeGVjdXRhYmxlOgotICAgIGNhc2Ug
Qm90dG9tVmFsdWU6CiAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIApAQCAtMjQxLDggKzIzOSwxMiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlLCBSZWFkRnVuY3RvciYgcmVhZCwgV3JpdGVGdW5jdG9yJiB3cml0
ZQogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0NlbGw6Ci0gICAgICAgIGRlZihQ
dXJlVmFsdWUoQ2hlY2tDZWxsLCBBZGphY2VuY3lMaXN0KEFkamFjZW5jeUxpc3Q6OkZpeGVkLCBu
b2RlLT5jaGlsZDEoKSksIG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKKyAgICBjYXNlIENoZWNrRnVu
Y3Rpb246CisgICAgICAgIGRlZihQdXJlVmFsdWUoQ2hlY2tGdW5jdGlvbiwgQWRqYWNlbmN5TGlz
dChBZGphY2VuY3lMaXN0OjpGaXhlZCwgbm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5mdW5jdGlvbigp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6
CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgpA
QCAtMjYxLDcgKzI2Myw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIFJlYWRGdW5jdG9yJiByZWFkLCBXcml0ZUZ1bmN0b3ImIHdyaXRlCiAgICAgY2FzZSBTd2l0
Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKLSAgICBjYXNlIENo
ZWNrQmFkQ2VsbDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CkBAIC0zNTcsOCArMzU4LDYgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgUmVhZEZ1bmN0b3ImIHJlYWQsIFdyaXRlRnVu
Y3RvciYgd3JpdGUKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNl
IENvbnN0cnVjdDoKLSAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKLSAgICBjYXNlIFByb2ZpbGVkQ29u
c3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoK
ICAgICBjYXNlIFRvUHJpbWl0aXZlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgK
aW5kZXggNjhlN2E0MTU1ZDk5ZDM2ZmM0ZDE1N2U4ZjhiODg5YWFkMDIxNDFhZC4uNDE3ZDdhYjU0
OTNkMTM1MDBhYjk1MDQyYmQ1Y2MwNWFiNDM0N2Q0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCkBAIC02MywxMyArNjMsNiBAQCBlbnVtIFJlZk5vZGVNb2RlIHsKICAgICBE
b250UmVmTm9kZQogfTsKIAotZW51bSBTd2l0Y2hLaW5kIHsKLSAgICBTd2l0Y2hJbW0sCi0gICAg
U3dpdGNoQ2hhciwKLSAgICBTd2l0Y2hTdHJpbmcsCi0gICAgU3dpdGNoQ2VsbAotfTsKLQogaW5s
aW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUgbW9kZSA9
IERGR01vZGUpCiB7CiAgICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpIHx8
IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYmIE9wdGlv
bnM6OnZlcmJvc2VGVExDb21waWxhdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYTc3NjE2MjdjOTc1
ZDY4ODIwOTRiNmMxNzE4NzUwNzE2ODRhNzA0MS4uZGRiZWNhMGEzNTZjNzg5MTkyM2FhNTE0NGQ1
YjEyNmJlOWNjMDhhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0Miw4ICsxNDIsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FzZSBDaGVja0NlbGw6IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkpCisgICAgICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKKyAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpICE9IG5vZGUt
PmZ1bmN0aW9uKCktPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKICAgICAgICAgICAgICAgICBlbGlt
aW5hdGVkID0gdHJ1ZTsKQEAgLTM4NCwxOSArMzg0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKLSAgICAgICAgICAgIGNhc2Ug
UHJvZmlsZWRDb25zdHJ1Y3Q6IHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3ZhbHVlKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3
ZXJlIGFibGUgdG8gcHJvdmUgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY29uc3RhbnQgdGhlbiB0aGUg
bm9ybWFsIGNhbGwKLSAgICAgICAgICAgICAgICAvLyBpbmxpbmUgY2FjaGUgd2lsbCByZWNvcmQg
dGhpcyBjYWxsZWUuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBuZWVkIHRvIGRvIGFueQot
ICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgcHJvZmlsaW5nLgotICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wKG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsID8gQ2FsbCA6IENvbnN0cnVj
dCk7Ci0gICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
OWQ2ZDRlMDZjYjczMzQ5YWY2YTE3ZTkyMWNmZTcwNTYyZGE0ZDU1MC4uMzExNGY2YWY3NjdjNTA2
MTAyYjQ5Y2NjYjYxNTU3ODU1Y2U2MmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0
OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgY2FzZSBHZXRFeGVjdXRhYmxlOgorICAg
IGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgIGNhc2Ug
Q2hlY2tBcnJheToKICAgICBjYXNlIEdldFNjb3BlOgpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoK
ICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNo
cG9pbnQ6Ci0gICAgY2FzZSBDaGVja0NlbGw6CisgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAg
IGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgIGNhc2UgUmVnRXhwRXhlYzoK
ICAgICBjYXNlIFJlZ0V4cFRlc3Q6CkBAIC0xMTksOCArMTE5LDYgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgTmF0
aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKLSAgICBjYXNlIFByb2ZpbGVkQ2Fs
bDoKLSAgICBjYXNlIFByb2ZpbGVkQ29uc3RydWN0OgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAg
ICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpAQCAtMTk3
LDggKzE5NSw2IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIEdldERpcmVjdFBuYW1lOgogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgQm9vbGVh
blRvTnVtYmVyOgotICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgotICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCAyNjAxNzM1N2ZkNDI0MzU1
MDM2MmU1ZTI5OTY4OThmY2M1M2RmNWNiLi4zMGI0ZjM4ODhlOTkxMDBiMGQyMzZhZmU2MTBiZGZm
NzFkNzJlM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCkBAIC04
OSw5ICs4OSw2IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKICAgICAg
ICAgdm0uZ2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dl
bmVyYXRvcik7CiAgICAgfQogICAgIAotICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkp
Ci0gICAgICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucHJvY2Vzc0xvZygpOwotICAgIAogICAg
IFJlZlB0cjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoCiAgICAgICAgIG5ldyBQbGFuKGNvZGVCbG9j
aywgcHJvZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVz
dEhhbmRsZVZhbHVlcykpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggNzhiMDhkN2U2YzhlYjY0ZWYyOWJjM2ZhYmE0YzM5ZjIwMjZlNjc1
OS4uNmJiMzVlNjY4M2I3ZjFmMzBkYWFkZmY3ZjIxMzBkNjEzYzk3MDQ4MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC03MzYsMTIgKzczNiw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN0cmluZygpKQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1Vz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBTd2l0Y2hDZWxsOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlQ2VsbCgpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICAvLyBlbHNlIGl0J3MgZmluZSBmb3Ig
dGhpcyB0byBoYXZlIFVudHlwZWRVc2U7IHdlIHdpbGwgaGFuZGxlIHRoaXMgYnkganVzdCBtYWtp
bmcKLSAgICAgICAgICAgICAgICAvLyBub24tY2VsbHMgdGFrZSB0aGUgZGVmYXVsdCBjYXNlLgot
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTkwMywxMyArODk3LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogeworICAgICAg
ICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewogICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICBjYXNlIENoZWNr
Q2VsbDoKKyAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENoZWNrSGFz
SW5zdGFuY2U6CiAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgY2FzZSBHZXRCdXR0
ZXJmbHk6IHsKQEAgLTExMjYsOCArMTEyMCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWxs
b2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNh
c2UgQ29uc3RydWN0OgotICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKLSAgICAgICAgY2FzZSBQ
cm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNl
IE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CkBAIC0xMTU3LDcgKzEx
NDksNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAg
ICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgICAgIGNhc2UgRm9yY2VPU1JFeGl0OgotICAg
ICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgY2FzZSBDaGVja1dhdGNoZG9nVGltZXI6
CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CkBAIC0xMTY4LDcgKzExNTksNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVk
QXJyYXlXYXRjaHBvaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9t
YmllSGludDoKLSAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgICAgIGJyZWFrOwog
I2Vsc2UKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggZDlhNWY0YjgwNzc2NjE1MjY5NGFmMjU1ODBjMWVhYWExNzA1MTYwOC4uMWZlZGZi
ZWI2ZTlmYmQyNWVkNmU5NGNjYzY4ZDc4NDgwMTMyZmFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTIyMiwyMyArMjIyLDI0IEBAIHZvaWQgR3JhcGg6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBOb2RlKiBub2RlLCBEdW1wQ29u
dGV4dCoKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVy
ZSgpLCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUtPmhhc1RyYW5zaXRpb24oKSkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCks
IGNvbnRleHQpKTsKLSAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgewotICAgICAgICBp
ZiAoIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkgfHwgIW5vZGUtPmNlbGxPcGVyYW5kKCkt
PnZhbHVlKCkuaXNDZWxsKCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpbnZhbGlk
IGNlbGwgb3BlcmFuZDogIiwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcChub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgpKSk7Ci0gICAgICAgICAgICBpZiAobm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSkgewotICAgICAgICAgICAgICAgIENhbGxW
YXJpYW50IHZhcmlhbnQobm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdmFyaWFudC5l
eGVjdXRhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9z
dEZ1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsICI8
aG9zdCBmdW5jdGlvbj4iKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wKGZ1bmN0aW9uRXhlY3V0YWJsZSkpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICI8bm9uLWZ1bmN0aW9uIGV4ZWN1dGFibGU+Iik7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaWYgKG5vZGUtPmhhc0Z1bmN0aW9uKCkpIHsK
KyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiZnVuY3Rpb24oIiwgcG9pbnRlckR1bXAobm9kZS0+
ZnVuY3Rpb24oKSksICIsICIpOworICAgICAgICBpZiAobm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUo
KS5pc0NlbGwoKQorICAgICAgICAgICAgJiYgbm9kZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0Nl
bGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgeworICAgICAgICAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG5vZGUtPmZ1bmN0aW9uKCktPnZh
bHVlKCkuYXNDZWxsKCkpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlv
bigpKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiPGhvc3QgZnVuY3Rpb24+Iik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0LnByaW50KEZ1bmN0aW9uRXhlY3V0YWJs
ZUR1bXAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgb3V0LnByaW50KCI8bm90IEpTRnVuY3Rpb24+Iik7CisgICAgICAgIG91dC5wcmludCgi
KSIpOworICAgIH0KKyAgICBpZiAobm9kZS0+aGFzRXhlY3V0YWJsZSgpKSB7CisgICAgICAgIGlm
IChub2RlLT5leGVjdXRhYmxlKCktPmluaGVyaXRzKEZ1bmN0aW9uRXhlY3V0YWJsZTo6aW5mbygp
KSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgImV4ZWN1dGFibGUoIiwgRnVuY3Rpb25F
eGVjdXRhYmxlRHVtcChqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obm9kZS0+ZXhlY3V0YWJs
ZSgpKSksICIpIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
ImV4ZWN1dGFibGUobm90IGZ1bmN0aW9uOiAiLCBSYXdQb2ludGVyKG5vZGUtPmV4ZWN1dGFibGUo
KSksICIpIik7CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNGdW5jdGlvbkRlY2xJbmRleCgpKSB7
CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1fY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSk7CkBAIC05ODQsNiArOTg1LDEw
IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgY2FzZSBDaGVj
a0V4ZWN1dGFibGU6CisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJl
YWRPbmx5UG9pbnRlcihub2RlLT5leGVjdXRhYmxlKCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXpl
KCk7IGktLTspCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRS
ZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBjZDI3YzdmYTljZmU2YzA1MTZj
YTE2M2Q3YWU3NmY3MjExNzhmZmNkLi4xODljZTQ4MmE1MjQwYTdmY2MxNGNlNWQ1ZWRmYjRkMWRj
NTViN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlE
ZWZhdWx0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBkYXRhLmNhc2VzLnNpemUoKTsgai0t
OykgewogICAgICAgICAgICAgU3dpdGNoQ2FzZSYgbXlDYXNlID0gZGF0YS5jYXNlc1tqXTsKLSAg
ICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbbXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVl
KGRhdGEua2luZCkgLSB0YWJsZS5taW5dID0KKyAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNb
bXlDYXNlLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkgLSB0YWJsZS5taW5dID0KICAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9ibG9ja0hlYWRzW215Q2FzZS50YXJnZXQu
YmxvY2stPmluZGV4XSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDYwMTE0OTBjOTdmNTJkZGZlNDMxMDEyN2Zk
MDgyY2U5NDY2ZDNhMTEuLjI0NGM3ZWQwZTgwMTUwZDI5NTVmZGU4MzIzODNhNzlmODFmMWIwOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC0x
MTMsMzYgKzExMyw2IEBAIFRyaVN0YXRlIExhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbChjb25zdCBM
YXp5SlNWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CiB9CiAK
LXVpbnRwdHJfdCBMYXp5SlNWYWx1ZTo6c3dpdGNoTG9va3VwVmFsdWUoU3dpdGNoS2luZCBraW5k
KSBjb25zdAotewotICAgIC8vIE5CLiBOb3QgZXZlcnkga2luZCBvZiBKU1ZhbHVlIHdpbGwgYmUg
YWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKLSAgICAvLyB2YWx1ZSwgYW5kIHRoaXMg
bWV0aG9kIHdpbGwgYXNzZXJ0LCBvciBkbyBiYWQgdGhpbmdzLCBpZiB5b3UgdXNlIGl0Ci0gICAg
Ly8gZm9yIGEga2luZCBvZiB2YWx1ZSB0aGF0IGNhbid0LgotICAgIHN3aXRjaCAobV9raW5kKSB7
Ci0gICAgY2FzZSBLbm93blZhbHVlOgotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAg
Y2FzZSBTd2l0Y2hJbW06Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUoKS0+dmFsdWUoKS5hc0lu
dDMyKCk7Ci0gICAgICAgIGNhc2UgU3dpdGNoQ2VsbDoKLSAgICAgICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSgpLT52YWx1ZSgpLmFzQ2VsbCgpKTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIGNhc2UgU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nOgotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgot
ICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlcigpOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCiB2b2lkIExhenlKU1ZhbHVl
OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmgKaW5kZXggYTEyMzFkYjA0ZjI1ZWM0ZTQ3ZWVmMDNkOWU4NGY0YWVm
ZjY2MTZjYi4uMGI4MTg3YmFiOTYwMTkxZWE0ZmE0Y2VhNDgwZTdlOWRiYzI5MDllNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuaApAQCAtMjgsNyArMjgsNiBA
QAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKLSNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNs
dWRlICJERkdGcm96ZW5WYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
IApAQCAtOTYsNyArOTUsMjEgQEAgcHVibGljOgogICAgIAogICAgIFRyaVN0YXRlIHN0cmljdEVx
dWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCi0gICAgdWludHB0cl90
IHN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQpIGNvbnN0OworICAgIHVuc2lnbmVkIHN3aXRj
aExvb2t1cFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIE5CLiBOb3QgZXZlcnkga2lu
ZCBvZiBKU1ZhbHVlIHdpbGwgYmUgYWJsZSB0byBnaXZlIHlvdSBhIHN3aXRjaCBsb29rdXAKKyAg
ICAgICAgLy8gdmFsdWUsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGFzc2VydCwgb3IgZG8gYmFkIHRo
aW5ncywgaWYgeW91IHVzZSBpdAorICAgICAgICAvLyBmb3IgYSBraW5kIG9mIHZhbHVlIHRoYXQg
Y2FuJ3QuCisgICAgICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgICAgIGNhc2UgS25vd25WYWx1
ZToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSgpLT52YWx1ZSgpLmFzSW50MzIoKTsKKyAgICAg
ICAgY2FzZSBTaW5nbGVDaGFyYWN0ZXJTdHJpbmc6CisgICAgICAgICAgICByZXR1cm4gY2hhcmFj
dGVyKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CiAgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuY3BwCmluZGV4IGU2YmI5Njk1N2E1MDAyODc3OTc2MzRjZmIwMTRhY2ZlYjEx
M2RlMjIuLmMyNzcyOTFmZGViYTNkNTA4MzE3Mzg0NWYyNDQyMjY3MmFjNjY0NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcApAQCAtMTEzLDkgKzExMyw2IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTd2l0Y2hLaW5kIGtpbmQpCiAgICAgY2FzZSBT
d2l0Y2hTdHJpbmc6CiAgICAgICAgIG91dC5wcmludCgiU3dpdGNoU3RyaW5nIik7CiAgICAgICAg
IHJldHVybjsKLSAgICBjYXNlIFN3aXRjaENlbGw6Ci0gICAgICAgIG91dC5wcmludCgiU3dpdGNo
Q2VsbCIpOwotICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGU0YjJiZWYx
NTA0NGFiZDJhZjJkY2EyZGY4MmIxMTI2MzE5ZDEzNjEuLjE0MjMzOTQzMDdjODJjMjRiYzJmMWMw
YjQ5OTgwYTgzY2QyYmMzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0x
NTcsNiArMTU3LDEyIEBAIHN0cnVjdCBTd2l0Y2hDYXNlIHsKICAgICBCcmFuY2hUYXJnZXQgdGFy
Z2V0OwogfTsKIAorZW51bSBTd2l0Y2hLaW5kIHsKKyAgICBTd2l0Y2hJbW0sCisgICAgU3dpdGNo
Q2hhciwKKyAgICBTd2l0Y2hTdHJpbmcKK307CisKIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICAv
LyBJbml0aWFsaXplcyBtb3N0IGZpZWxkcyB0byBvYnZpb3VzbHkgaW52YWxpZCB2YWx1ZXMuIEFu
eW9uZQogICAgIC8vIGNvbnN0cnVjdGluZyB0aGlzIHNob3VsZCBtYWtlIHN1cmUgdG8gaW5pdGlh
bGl6ZSBldmVyeXRoaW5nIHRoZXkKQEAgLTE3OSw3ICsxODUsNiBAQCBzdHJ1Y3QgU3dpdGNoRGF0
YSB7CiAvLyBkaXN0aW5ndWlzaGVzIGFuIGltbWVkaWF0ZSB2YWx1ZSAodHlwaWNhbGx5IGFuIGlu
ZGV4IGludG8gYSBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmUgLSAKIC8vIGEgY29uc3RhbnQgaW5k
ZXgsIGFyZ3VtZW50LCBvciBpZGVudGlmaWVyKSBmcm9tIGEgTm9kZSouCiBzdHJ1Y3QgT3BJbmZv
IHsKLSAgICBPcEluZm8oKSA6IG1fdmFsdWUoMCkgeyB9CiAgICAgZXhwbGljaXQgT3BJbmZvKGlu
dDMyX3QgdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkgeyB9
CiAgICAgZXhwbGljaXQgT3BJbmZvKHVpbnQzMl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nh
c3Q8dWludHB0cl90Pih2YWx1ZSkpIHsgfQogI2lmIE9TKERBUldJTikgfHwgVVNFKEpTVkFMVUU2
NCkKQEAgLTEwMDQsOCArMTAwOSw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxTYWZlOgogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29u
c3RydWN0OgotICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKLSAgICAgICAgY2FzZSBQcm9maWxl
ZENvbnN0cnVjdDoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNlIE5hdGl2
ZUNvbnN0cnVjdDoKICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKQEAgLTEwNDEsMTEgKzEwNDQs
OSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHByZWRpY3Rpb247CiAgICAg
fQogICAgIAotICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQorICAgIGJvb2wgY2FuQmVLbm93bkZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewotICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgY2FzZSBDaGVja0NlbGw6CiAgICAg
ICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTQsMTYgKzEwNTUsNTQgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICB9CiAgICAgfQogCi0gICAgRnJvemVuVmFsdWUqIGNlbGxPcGVyYW5kKCkKKyAg
ICBib29sIGhhc0tub3duRnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7
CisgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgorICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6
CisgICAgICAgICAgICByZXR1cm4gKGJvb2wpbV9vcEluZm87CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgSlNG
dW5jdGlvbioga25vd25GdW5jdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQoY2FuQmVLbm93
bkZ1bmN0aW9uKCkpOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTRnVuY3Rpb24qPiht
X29wSW5mbyk7CisgICAgfQorCisgICAgdm9pZCBnaXZlS25vd25GdW5jdGlvbihKU0Z1bmN0aW9u
KiBjYWxsRGF0YSkgCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQ2VsbE9wZXJhbmQoKSk7Cisg
ICAgICAgIEFTU0VSVChjYW5CZUtub3duRnVuY3Rpb24oKSk7CisgICAgICAgIG1fb3BJbmZvID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbERhdGEpOworICAgIH0KKworICAgIGJvb2wgaGFz
RnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2Ug
Q2hlY2tGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZyb3plblZhbHVlKiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRnVuY3Rpb24oKSk7CiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEZyb3plblZhbHVlKj4obV9vcEluZm8pOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIHNldENlbGxPcGVyYW5kKEZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICBib29s
IGhhc0V4ZWN1dGFibGUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0NlbGxPcGVyYW5kKCkp
OwotICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tFeGVjdXRhYmxlOworICAgIH0KKyAgICAKKyAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4ganNDYXN0
PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihtX29wSW5mbykpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzY0YTZiMDhmODFiZjY2YzU2YzQx
ZDk5Y2RlZTU4MDVjMjU3NGUyOS4uZmVkZThiNTk5OGM5OWY1Y2ZlNGUyZGFlNWVhNGE5ZGMyY2Zh
ZDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTUzLDcg
KzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRC
eUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKEdldEV4ZWN1dGFibGUsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKENoZWNrRXhlY3V0YWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1
dFN0cnVjdHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAgICBt
YWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdFN0b3JhZ2UpIFwKQEAgLTE4NSw4ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhDaGVja0NlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhD
aGVja0JhZENlbGwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhDaGVja0Z1bmN0aW9u
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTIxNSw4ICsyMTQsNiBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgLyogQ2FsbHMuICovXAogICAgIG1hY3JvKENhbGwsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCiAgICAgbWFjcm8oQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAotICAgIG1hY3Jv
KFByb2ZpbGVkQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNW
YXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKLSAgICBtYWNybyhQcm9maWxlZENvbnN0cnVj
dCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9k
ZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhOYXRpdmVDYWxsLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAog
ICAgIG1hY3JvKE5hdGl2ZUNvbnN0cnVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBcCkBAIC0yODks
MTEgKzI4Niw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBkaWZm
ZXJlbnQgY29tcGlsZXIuICovXAogICAgIG1hY3JvKEZvcmNlT1NSRXhpdCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIFwKLSAgICAvKiBWZW5kcyBhIGJvdHRvbSBKUyB2YWx1ZS4gSXQgaXMgaW52
YWxpZCB0byBldmVyIGV4ZWN1dGUgdGhpcy4gVXNlZnVsIGZvciBjYXNlcyAqL1wKLSAgICAvKiB3
aGVyZSB3ZSBrbm93IHRoYXQgd2Ugd291bGQgaGF2ZSBleGl0ZWQgYnV0IHdlJ2QgbGlrZSB0byBz
dGlsbCB0cmFjayB0aGUgY29udHJvbCAqL1wKLSAgICAvKiBmbG93LiAqL1wKLSAgICBtYWNybyhC
b3R0b21WYWx1ZSwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIC8qIENoZWNrcyB0aGUgd2F0
Y2hkb2cgdGltZXIuIElmIHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIE9TUiBleGl0IHRvIHRoZSAq
LyBcCiAgICAgLyogYmFzZWxpbmUgSklUIHRvIHJlZG8gdGhlIHdhdGNoZG9nIHRpbWVyIGNoZWNr
LCBhbmQgc2VydmljZSB0aGUgdGltZXIuICovIFwKICAgICBtYWNybyhDaGVja1dhdGNoZG9nVGlt
ZXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwCmluZGV4IGU1
ZDljMTBkMWVmYmE0MTQ2OTg0ZmJlMDhhOTVmYTc3MjkxYjM1MzAuLjU4NTA1ODJlMmZjNzZiNGJh
YWE4MGFmNTY5ZjFlZWU2MjEzZjM3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcApAQCAt
OTIsMTAgKzkyLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hp
bGRyZW4ucmVtb3ZlRWRnZShpLS0pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUo
bm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvQ2hlY2soKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAppbmRleCBhMmM2ZGY0ZDE1ZDg3
NjQ0OWIzODRhZGNjZTY0NTI1M2JkNmNlYjg5Li43M2Q2MmU4NzY2YTM2ZGY1MjY4YmMxZjMxNDQz
NjhiZmY2ZTU5NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21SZW1vdmFsUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKQEAgLTEyNSw3ICsxMjUsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hbGxvY2F0b3IuZnJlZShub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTE0Myw3ICsxNDIsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYWxsb2NhdG9yLmZyZWUobm9kZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNTEsMTAgKzE0OSw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkcmVuLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX2FsbG9jYXRvci5mcmVlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGRyZW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5k
ZXggZjljNmRjZDgxNmNjZDRlNWRiMzI2YWUwNDUzMGRjM2I0NjA3YmMzNS4uMTllMTczMzYzNzdh
MGU3YmUxOTlmNTI1ZjQ1NjhjZDZlMGMxYTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTE4OCw4ICsxODgsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgog
ICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgotICAgICAgICBjYXNl
IFByb2ZpbGVkQ2FsbDoKLSAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAg
Y2FzZSBOYXRpdmVDYWxsOgogICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDoKICAgICAgICAg
Y2FzZSBHZXRHbG9iYWxWYXI6CkBAIC0xOTgsOCArMTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHZXRHZXR0
ZXJTZXR0ZXJCeU9mZnNldDoKLSAgICAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CisgICAgICAg
IGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihTcGVjQ2VsbE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC02NDUsOCArNjQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmU6Ci0gICAgICAgIGNhc2UgQ2hlY2tDZWxsOgotICAgICAgICBjYXNlIENoZWNrQmFkQ2VsbDoK
KyAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2
YXRpb246CiAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKQEAgLTY2OCwxMCArNjY1LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBv
bmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KLSAgICAgICAgY2FzZSBCb3R0b21WYWx1
ZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0
cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgogICAgICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGRlOTdjODk0N2Q3MzRl
MDQ2MjY3MDVlZDQ1Y2Q1OTk0ZGVlNmI5ODkuLmM5ZjBlMWRkNmQ0Y2YwOGM3ZTNmNzAxMzFhMWM5
M2Q4NTM1Njk4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlJ
ZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgotICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKKyAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKICAg
ICBjYXNlIEdldEJ1dHRlcmZseToKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBBcnJh
eWlmeToKQEAgLTE3NCw4ICsxNzQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHbG9i
YWxWYXI6CiAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rp
b25XYXRjaHBvaW50OgotICAgIGNhc2UgQ2hlY2tDZWxsOgotICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgorICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgpAQCAt
MTg4LDggKzE4Nyw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3Rh
dGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToK
ICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6Ci0gICAgY2FzZSBQcm9maWxlZENh
bGw6Ci0gICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICBjYXNlIE5ld09iamVjdDoKICAg
ICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKQEAgLTI3NiwxMSAr
MjczLDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIFRPRE86IGFkZCBhIGNoZWNrIGZvciBhbHJlYWR5IGNoZWNrZWQu
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNzY5CiAKLSAgICBj
YXNlIEJvdHRvbVZhbHVlOgotICAgICAgICAvLyBJZiBpbiBkb3VidCwgYXNzdW1lIHRoYXQgdGhp
cyBpc24ndCBzYWZlIHRvIGV4ZWN1dGUsIGp1c3QgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBvZgot
ICAgICAgICAvLyBjb21waWxpbmcgdGhpcyBub2RlLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwNzI5Y2U4MjFiZWIwOGI4MGI4ODhmOGVjYjlm
MDA5YTIzMzNlNjFjLi4wMWIzMTNiNTVjZGNmNDFiNzMzZTJiZDY1NjkwMmJkN2VmYmUyMmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApA
QCAtNTM1NCwxMCArNTM1NCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2goTm9k
ZSogbm9kZSkKICAgICBjYXNlIFN3aXRjaFN0cmluZzogewogICAgICAgICBlbWl0U3dpdGNoU3Ry
aW5nKG5vZGUsIGRhdGEpOwogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgU3dpdGNo
Q2VsbDogewotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCBzd2l0
Y2gga2luZCIpOwotICAgICAgICByZXR1cm47CiAgICAgfSB9CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDlhNTJmNDU1NjhhYjhkYTBhYjlhZTYzYzUw
Zjk1YzJiNTExYzQzYWUuLjM2ZjI5MGU5NTVkZmI0YzMwYjU1NmUzM2NhYWFkZGJjMmRiMTcwNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtNjQwLDkgKzY0MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNaXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKIHsKLSAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbCB8
fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbDsKKyAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9w
KCkgPT0gQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKLSAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkg
PT0gQ29uc3RydWN0IHx8IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOworICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOwogCiAgICAgLy8gRm9yIGNvbnN0cnVj
dG9ycywgdGhlIHRoaXMgYXJndW1lbnQgaXMgbm90IHBhc3NlZCBidXQgd2UgaGF2ZSB0byBtYWtl
IHNwYWNlCiAgICAgLy8gZm9yIGl0LgpAQCAtNjg5LDEzICs2ODksNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogCiAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9y
aWdpbihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAotICAgIENhbGxMaW5rSW5mbyogaW5m
byA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKLQotICAgIGlmIChub2Rl
LT5vcCgpID09IFByb2ZpbGVkQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ29uc3RydWN0
KSB7Ci0gICAgICAgIG1faml0LnZtKCktPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKLSAgICAg
ICAgICAgIG1faml0LCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygp
KTsKLSAgICB9Ci0gICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVl
LmpzVmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0
VG9DaGVjaykpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Fs
bGVlUGF5bG9hZEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24sIG1fc2NvcGUpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CkBAIC03MjAsNiArNzEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVQYXlsb2FkR1BS
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIG1faml0Lm1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgfQorICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1faml0LmNvZGVC
bG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKGluZm8pLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgc2xvd0NhbGwgPSBtX2ppdC5uZWFyQ2FsbCgpOwogCkBAIC0zNjgxLDIxICszNjc1LDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAg
Y2FzZSBDaGVja0NlbGw6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ2VsbCwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpOworICAgIGNhc2UgQ2hlY2tGdW5jdGlv
bjogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRnVuY3Rpb24sIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGZ1bmN0aW9uLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0
LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9k
ZS0+ZnVuY3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSkpOwogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7Cisg
ICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
ZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7Ci0gICAgICAgIEdQUlJlZyBmdW5jdGlvbkdQUiA9
IGZ1bmN0aW9uLmdwcigpOwotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb25HUFIs
IFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdw
cigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRFeGVjdXRhYmxlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5n
cHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246
Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CisgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDE2NSw4
ICs0MTU2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAg
ICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgotICAgIGNhc2UgUHJvZmlsZWRDYWxs
OgotICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGVtaXRDYWxsKG5vZGUpOwog
ICAgICAgICBicmVhazsKIApAQCAtNDkxMyw4ICs0OTAyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBj
YXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6Ci0gICAgY2FzZSBDaGVj
a0JhZENlbGw6Ci0gICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWE4ZjAzMTNmYjc5
MDRhZGY4NTZmZDJjMTRjMTQ3OWRjNTYyNDEwMy4uNzE1ODM4NTJjMGM4YzBmZjZjYTk0YWRlZWI1
MzNjN2Q3ZjllYTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC02MjYsOSArNjI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIHsKLSAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkg
PT0gQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ2FsbDsKKworICAgIGJvb2wgaXNDYWxs
ID0gbm9kZS0+b3AoKSA9PSBDYWxsOwogICAgIGlmICghaXNDYWxsKQotICAgICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0IHx8IG5vZGUt
Pm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOworICAgICAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0KTsKICAgICAKICAgICAvLyBGb3Ig
Y29uc3RydWN0b3JzLCB0aGUgdGhpcyBhcmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZl
IHRvIG1ha2Ugc3BhY2UKICAgICAvLyBmb3IgaXQuCkBAIC02NjksMTMgKzY3MCw2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5lbWl0U3Rv
cmVDb2RlT3JpZ2luKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCi0gICAgQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7
Ci0gICAgCi0gICAgaWYgKG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxsIHx8IG5vZGUtPm9wKCkg
PT0gUHJvZmlsZWRDb25zdHJ1Y3QpIHsKLSAgICAgICAgbV9qaXQudm0oKS0+Y2FsbEVkZ2VMb2ct
PmVtaXRMb2dDb2RlKAotICAgICAgICAgICAgbV9qaXQsIGNhbGxMaW5rSW5mby0+Y2FsbEVkZ2VQ
cm9maWxlLCBKU1ZhbHVlUmVncyhjYWxsZWVHUFIpKTsKLSAgICB9Ci0KICAgICBzbG93UGF0aCA9
IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxl
ZUdQUiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOwog
CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIE9C
SkVDVF9PRkZTRVRPRihKU0Z1bmN0aW9uLCBtX3Njb3BlKSksIHJlc3VsdEdQUik7CkBAIC02ODgs
NiArNjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAg
ICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgCiAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIs
IEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCisgICAgQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJ
bmZvKCk7CiAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxs
TGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiBy
ZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsK
ICAgICAKQEAgLTM3NzMsMjEgKzM3NjgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrQ2VsbDogewotICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRDZWxsLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdw
cigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmFzQ2VsbCgp
KSk7CisgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRGdW5jdGlvbiwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3By
KCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIGZ1bmN0aW9uLmdwcigpLCBub2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgp
KSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIAotICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogeworICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxl
OiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgZnVuY3Rp
b24pOwotICAgICAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKLSAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgc3BlY3VsYXRlQ2Vs
bFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uR1BSLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rp
b25UeXBlKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5j
dGlvbkdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCByZXN1bHRHUFIpOwot
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHNwZWN1bGF0ZUNl
bGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1
bmN0aW9uVHlwZSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkRXhlY3V0YWJsZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwg
bV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSks
IG5vZGUtPmV4ZWN1dGFibGUoKSkpOworICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTQyMjcsMTEgKzQyMTksOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6Ci0gICAgY2FzZSBQcm9maWxlZENhbGw6Ci0gICAgY2FzZSBQcm9maWxlZENv
bnN0cnVjdDoKICAgICAgICAgZW1pdENhbGwobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKwogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogewogICAgICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsICFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
KTsKICAgICAgICAgCkBAIC00OTgwLDkgKzQ5NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2Ug
TXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKLSAgICBjYXNlIENoZWNrQmFk
Q2VsbDoKLSAgICBjYXNlIEJvdHRvbVZhbHVlOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3Jh
cGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOworICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgRlRMIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDBmMmUxNDZiZDkxOTI5MjljN2JmZWRl
ODYwZDZhNzMyMDE1NWJiNDQuLjQwOGVlNGNjMWQ2Yzk5MWE0ZmRmY2E4NmFiODJjZWZiODdmZTA4
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVy
U3RydWN0dXJlKG5vZGUtPmV4ZWN1dGFibGUoKS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZXMobm9k
ZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuY3BwCmluZGV4IGQxYjZlN2FkZDVhMWJkZmFmMjIxM2QzYjg4YjYxNTRkNDYzM2RlNWIu
LjA5YzIyYjhjMDRmZjk2YjFjMWU1MzBkZDY4ZGM5Y2JmZWIwMjdlYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcApAQCAtNTAsMTcgKzUwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VGVExKSVQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAg
ICAgIGlmIChtX2dyYXBoLm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24p
IHsKLSAgICAgICAgICAgIHJlbW92ZUZUTFByb2ZpbGluZygpOworICAgICAgICBpZiAobV9ncmFw
aC5tX3Byb2ZpbGVkQmxvY2stPm1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShGVExfSklUKQog
ICAgICAgICBGVEw6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29tcGlsZShtX2dy
YXBoKTsKLSAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAg
ICAgICAgcmVtb3ZlRlRMUHJvZmlsaW5nKCk7CisgICAgICAgIGlmIChsZXZlbCA9PSBGVEw6OkNh
bm5vdENvbXBpbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAg
ICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CkBAIC0xMjIsMzIgKzExOCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAg
IH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCi0gICAgewotICAg
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJs
b2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBQcm9m
aWxlZENhbGw6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
T3AoQ29uc3RydWN0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
IH07CiAKIGJvb2wgcGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggOGU5MGY2OTI0NmYw
NjQwZjgyMzMyZGU5YjMwYzE3N2M4NzIzNDA5ZC4uMzVkMWViYmUzNDcxNjhmNGZmOTdkMjRiMjgx
YWU2Y2I2YzM1MTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKQEAgLTIwMCw4ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbWF5RXhpdChtX2dyYXBoLCBub2RlKSB8fCBub2Rl
LT5vcmlnaW4uZm9yRXhpdC5pc1NldCgpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8IG5v
ZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpOwotICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgISFub2RlLT5jZWxsT3Bl
cmFuZCgpLT52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2Rl
LT5oYXNGdW5jdGlvbigpIHx8IG5vZGUtPmZ1bmN0aW9uKCktPnZhbHVlKCkuaXNGdW5jdGlvbigp
KTsKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCEobm9kZS0+ZmxhZ3Mo
KSAmIE5vZGVIYXNWYXJBcmdzKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBv
aW50Q29sbGVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0
Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKaW5kZXggMzlhZWE0MGY1YzM3ZjZkN2UwZjk3Nzg2
OTg3ZmFiMTI4NjcyNDViOC4uMGM0ODQ4OWEyNWJjMWFhMGNkN2Q0N2M5ZDFiMGQ0ODdjNGZjMjlm
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29s
bGVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNo
cG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
bV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkpOworICAgICAgICAgICAgYWRkTGF6aWx5KGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9u
b2RlLT5mdW5jdGlvbigpLT52YWx1ZSgpKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYXJp
YWJsZVdhdGNocG9pbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggMzNhM2FiNWU0MGQ2NDU4ZmZjNGVmNDhlOGUwN2QyZjE0NWY3NjJkMy4u
ZWUxMTkwNzc0NzRlNWYxODU1MjlkOWZmYzFjMmQzMzczOTI2MTUxNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTA0LDggKzEwNCw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgU3Ry
aW5nQ2hhckF0OgotICAgIGNhc2UgQ2hlY2tDZWxsOgotICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgor
ICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6CkBAIC0xMjcsNyArMTI2LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAg
IGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKLSAgICBjYXNlIEdldEV4ZWN1
dGFibGU6CisgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRTY29wZToKICAg
ICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICBjYXNlIENoZWNrQXJndW1l
bnRzTm90Q3JlYXRlZDoKQEAgLTE2NywxNCArMTY2LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZW5lcmljUHJvcGVydHlFbnVt
ZXJhdG9yOgogICAgIGNhc2UgR2V0RW51bWVyYXRvclBuYW1lOgogICAgIGNhc2UgVG9JbmRleFN0
cmluZzoKLSAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJvZmlsZWRDYWxsOgotICAgIGNhc2UgUHJvZmlsZWRD
b25zdHJ1Y3Q6Ci0gICAgICAgIC8vIFRoZXNlIGFyZSBPSyBub3QgYmVjYXVzZSB0aGUgRlRMIGNh
biBzdXBwb3J0IHRoZW0sIGJ1dCBiZWNhdXNlIGlmIHRoZSBERkcgc2VlcyBvbmUgb2YKLSAgICAg
ICAgLy8gdGhlc2UgdGhlbiB0aGUgRlRMIHdpbGwgc2VlIGEgbm9ybWFsIENhbGwvQ29uc3RydWN0
LgotICAgICAgICBicmVhazsKICAgICBjYXNlIElkZW50aXR5OgogICAgICAgICAvLyBObyBiYWNr
ZW5kIGhhbmRsZXMgdGhpcyBiZWNhdXNlIGl0IHdpbGwgYmUgb3B0aW1pemVkIG91dC4gQnV0IHdl
IG1heSBjaGVjawogICAgICAgICAvLyBmb3IgY2FwYWJpbGl0aWVzIGJlZm9yZSBvcHRpbWl6YXRp
b24uIEl0IHdvdWxkIGJlIGEgZGVlcCBlcnJvciB0byByZW1vdmUgdGhpcwpAQCAtMzMzLDcgKzMy
Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBzd2l0Y2ggKG5vZGUtPnN3aXRjaERhdGEoKS0+a2luZCkgewogICAgICAgICBjYXNlIFN3
aXRjaEltbToKICAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOgotICAgICAgICBjYXNlIFN3aXRjaENl
bGw6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBDYW5ub3RDb21waWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAppbmRleCAwMDgxZmNlZGUwMDNlNTFiNDg5N2YwNWIzNWU1ZWY1ZWI2
YWNiZGJhLi5lYjBkM2RmNjJlMDUwMjJhZTJmOWM0YzUxNWJkNThkYzI1ZTg2MTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtNjcs
NiArNjcsNyBAQCBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGZ0bFVucmVhY2hh
YmxlKCkKIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgZnRsVW5yZWFjaGFibGUo
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJbmRleCwgdW5zaWdu
ZWQgbm9kZUluZGV4KQogeworICAgIAogICAgIGRhdGFMb2coIkNyYXNoaW5nIGluIHRob3VnaHQt
dG8tYmUtdW5yZWFjaGFibGUgRlRMLWdlbmVyYXRlZCBjb2RlIGZvciAiLCBwb2ludGVyRHVtcChj
b2RlQmxvY2spLCAiIGF0IGJhc2ljIGJsb2NrICMiLCBibG9ja0luZGV4KTsKICAgICBpZiAobm9k
ZUluZGV4ICE9IFVJTlRfTUFYKQogICAgICAgICBkYXRhTG9nKCIsIG5vZGUgQCIsIG5vZGVJbmRl
eCk7CkBAIC0xNTIsMTcgKzE1MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQg
YmxvY2tJbmRleCA9IGRlcHRoRmlyc3Quc2l6ZSgpOyBibG9ja0luZGV4LS07ICkgewogICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBkZXB0aEZpcnN0W2Jsb2NrSW5kZXhdOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgt
LTsgKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OwotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgTmF0aXZlQ2FsbDoKLSAgICAgICAgICAgICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVjdDog
eworICAgICAgICAgICAgICAgIE5vZGUqIG1fbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwor
ICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmhhc0tub3duRnVuY3Rpb24oKSkgewogICAgICAg
ICAgICAgICAgICAgICBpbnQgbnVtQXJncyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG51bUFyZ3MgPiBtYXhOdW1iZXJPZkFyZ3VtZW50cykKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heE51bWJlck9mQXJndW1lbnRzID0gbnVtQXJnczsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDczLDE0ICs0NjgsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N0
cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2tDZWxsOgot
ICAgICAgICAgICAgY29tcGlsZUNoZWNrQ2VsbCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgotICAgICAgICAgICAgY29tcGlsZUNoZWNrQmFkQ2VsbCgp
OworICAgICAgICBjYXNlIENoZWNrRnVuY3Rpb246CisgICAgICAgICAgICBjb21waWxlQ2hlY2tG
dW5jdGlvbigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2V0RXhlY3V0YWJs
ZToKLSAgICAgICAgICAgIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCk7CisgICAgICAgIGNhc2UgQ2hl
Y2tFeGVjdXRhYmxlOgorICAgICAgICAgICAgY29tcGlsZUNoZWNrRXhlY3V0YWJsZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICAg
ICAgICAgIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKCk7CkBAIC0xNzUxLDI1ICsxNzQzLDI2
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVDaGVja0NlbGwoKQorICAgIHZvaWQg
Y29tcGlsZUNoZWNrRnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAotICAg
ICAgICAgICAgQmFkQ2VsbCwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNoaWxkMSgpLm5v
ZGUoKSwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKGNlbGwsIHdlYWtQb2ludGVyKG1fbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgICAgIEJhZEZ1
bmN0aW9uLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAorICAg
ICAgICAgICAgbV9vdXQubm90RXF1YWwoY2VsbCwgd2Vha1BvaW50ZXIobV9ub2RlLT5mdW5jdGlv
bigpLT52YWx1ZSgpLmFzQ2VsbCgpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVD
aGVja0JhZENlbGwoKQotICAgIHsKLSAgICAgICAgdGVybWluYXRlKEJhZENlbGwpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKKyAgICB2b2lkIGNvbXBpbGVD
aGVja0V4ZWN1dGFibGUoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9u
b2RlLT5jaGlsZDEoKSwgY2VsbCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihj
ZWxsLCBtX2hlYXBzLkpTRnVuY3Rpb25fZXhlY3V0YWJsZSkpOworICAgICAgICAKKyAgICAgICAg
c3BlY3VsYXRlKAorICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVlKGNlbGwp
LCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSwKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKAor
ICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4
ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fbm9kZS0+ZXhlY3V0YWJs
ZSgpKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJl
KCkKQEAgLTM2ODAsNyArMzY3Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBudW1QYXNzZWRB
cmdzID0gbV9ub2RlLT5udW1DaGlsZHJlbigpIC0gMTsKICAgICAgICAgaW50IG51bUFyZ3MgPSBu
dW1QYXNzZWRBcmdzICsgZHVtbXlUaGlzQXJndW1lbnQ7CiAKLSAgICAgICAgSlNGdW5jdGlvbiog
a25vd25GdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgp
LT52YWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbm9kZS0+aGFzS25vd25GdW5j
dGlvbigpKTsKKworICAgICAgICBKU0Z1bmN0aW9uKiBrbm93bkZ1bmN0aW9uID0gbV9ub2RlLT5r
bm93bkZ1bmN0aW9uKCk7CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uID0ga25vd25G
dW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKTsKIAogICAgICAgICBEbF9pbmZvIGluZm87CkBAIC0z
OTIzLDM3ICszOTE4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGNhc2UgU3dpdGNoU3RyaW5nOiB7CisgICAgICAgIGNhc2Ug
U3dpdGNoU3RyaW5nOgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVu
aW1wbGVtZW50ZWQiKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBTd2l0Y2hDZWxsOiB7Ci0gICAg
ICAgICAgICBMVmFsdWUgY2VsbDsKLSAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2VsbFVzZTogewotICAgICAgICAgICAg
ICAgIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENlbGwgY2VsbCBjYXNlIikpOwot
ICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgaXNDZWxs
KHZhbHVlKSwgdW5zdXJlKGNlbGxDYXNlKSwgdW5zdXJlKGxvd0Jsb2NrKGRhdGEtPmZhbGxUaHJv
dWdoLmJsb2NrKSkpOwotICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlKTsK
LSAgICAgICAgICAgICAgICBjZWxsID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBtX291dC5pbnRQdHIs
IGNlbGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IH0KICAgICAgICAgCiAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgc3dpdGNoIGtpbmQiKTsKICAgICB9
CkBAIC01MjE4LDcgKzUxODYsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8U3dpdGNoQ2Fz
ZT4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UoCi0gICAg
ICAgICAgICAgICAgY29uc3RJbnQodHlwZSwgZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3dpdGNoTG9v
a3VwVmFsdWUoZGF0YS0+a2luZCkpLAorICAgICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRh
dGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExvb2t1cFZhbHVlKCkpLAogICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChkYXRhLT5jYXNl
c1tpXS50YXJnZXQuY291bnQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCmluZGV4IGY3OTVjNzNmNjU5OTJmNGZhNGJlZjY2OGRjZDgyOWFhMTdm
MjZiNjguLmIzNWYzOWZmYWQ5NGI2YmM1NzI4ZDhiNDM4Yzc3NTIxMTBlYjc5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC05ODQsMTEgKzk4NCw2IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogICAgICAgICB2bSgpLT50eXBl
UHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIpKTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7Ci0gICAgICAgIERlZmVyR0NG
b3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKLSAgICAgICAgdm0oKS0+Y2FsbEVkZ2VMb2ctPnByb2Nl
c3NMb2coKTsKLSAgICB9Ci0gICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0
aCk7CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFk
RGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggOGY4NjYxYmU4NTkwNWM5Y2E1NTA3N2YxMTdhMzA3N2U3
MzUzYmE0My4uOWFhMzlmMmNhZGE1YzQzMTIwNTcxMWQyOTU3YTRhZThlMTVjYTI4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC04OCwzMSArODgs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZVZhbHVlKEpT
VmFsdWVSZWdzIHJlZ3MsIHZvaWQqIGFkZHJlc3MpCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIHN0b3JlNjQocmVncy5ncHIoKSwgYWRkcmVzcyk7Ci0jZWxzZQotICAgICAgICBz
dG9yZTMyKHJlZ3MucGF5bG9hZEdQUigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KGFkZHJlc3MpICsgUGF5bG9hZE9mZnNldCkpOwotICAgICAgICBzdG9yZTMy
KHJlZ3MudGFnR1BSKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oYWRkcmVzcykgKyBUYWdPZmZzZXQpKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAgICB2b2lk
IGxvYWRWYWx1ZShBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlZ3MpCi0gICAgewotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChhZGRyZXNzLCByZWdzLmdwcigpKTsKLSNl
bHNlCi0gICAgICAgIGlmIChhZGRyZXNzLmJhc2UgPT0gcmVncy5wYXlsb2FkR1BSKCkpIHsKLSAg
ICAgICAgICAgIGxvYWQzMihhZGRyZXNzLndpdGhPZmZzZXQoVGFnT2Zmc2V0KSwgcmVncy50YWdH
UFIoKSk7Ci0gICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZz
ZXQpLCByZWdzLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBs
b2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxvYWRPZmZzZXQpLCByZWdzLnBheWxvYWRHUFIo
KSk7Ci0gICAgICAgICAgICBsb2FkMzIoYWRkcmVzcy53aXRoT2Zmc2V0KFRhZ09mZnNldCksIHJl
Z3MudGFnR1BSKCkpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBt
b3ZlVHJ1c3RlZFZhbHVlKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWVSZWdzIHJlZ3MpCiAgICAgewog
I2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aAppbmRleCBjNThkYjZjNWVjMGMxZjQxZDYyMjhiOTJlNzYwYTFhODU3ZDE5MjMyLi4yZDNhZTg5
OTY4MjlhMzcyZmZhZmQ5OTQyZTNmYzg5YzQwNjNjODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTE2NjYsMTUgKzE2NjYsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICB9CiAjZW5kaWYKLSAg
ICAKLSAgICB2b2lkIHNldHVwQXJndW1lbnRzKEpTVmFsdWVSZWdzIGFyZzEpCi0gICAgewotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNldHVwQXJndW1lbnRzKGFyZzEuZ3ByKCkpOwotI2Vs
c2UKLSAgICAgICAgc2V0dXBBcmd1bWVudHMoYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BS
KCkpOwotI2VuZGlmCi0gICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RB
LCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRl
eCA0Yjc3MGE2YjVkNjc0MDU1ZDY3MzRjNjllYTAwMmZhOWI2YzVmN2Q4Li45MmExOGUyMDI2ZmM3
ZGRkMWE2OTQ0NjBlZmY3NTU1YWM0ODRjZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaApAQCAtNjAsOCArNjAsNiBAQCBwdWJsaWM6CiAgICAgR1BSUmVnIHRhZ0dQUigpIGNvbnN0
IHsgcmV0dXJuIEludmFsaWRHUFJSZWc7IH0KICAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0
IHsgcmV0dXJuIG1fZ3ByOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0
IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsgfQotICAgIAogcHJpdmF0ZToKICAgICBHUFJSZWcgbV9n
cHI7CiB9OwpAQCAtMTcxLDggKzE2OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRhZ0dQ
UigpOwogICAgIH0KIAotICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBjb25zdCB7IHJldHVybiBt
X3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsgfQotICAgIAogcHJpdmF0ZToK
ICAgICBpbnQ4X3QgbV90YWdHUFI7CiAgICAgaW50OF90IG1fcGF5bG9hZEdQUjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDZiM2JjOWE5Mjg3MGQ5OWY3ZWVmZWQ3ZWRj
NDMxN2U1OTc1ZGY3ZDkuLjE0MGUxNmNkMWQ3MmIwY2Y4ZjdjODgxOWE5NWZiNWY2MTc0NTRhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjEyLDEyICsyMTIsNiBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2Fs
bGVlLCByZWdUMCk7IC8vIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0b3JlNjQocmVnVDAs
IEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsK
LSAgICAKLSAgICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2NvZGVCbG9jay0+YWRkQ2FsbExpbmtJ
bmZvKCk7Ci0KLSAgICBpZiAoQ2FsbEVkZ2VMb2c6OmlzRW5hYmxlZCgpICYmIHNob3VsZEVtaXRQ
cm9maWxpbmcoKQotICAgICAgICAmJiBPcHRpb25zOjpiYXNlbGluZURvZXNDYWxsRWRnZVByb2Zp
bGluZygpKQotICAgICAgICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygpLmVtaXRMb2dDb2RlKCp0
aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKSB7CiAgICAgICAgIGNvbXBpbGVDYWxsRXZhbChp
bnN0cnVjdGlvbik7CkBAIC0yMjksNiArMjIzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2EK
ICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGlsYXRp
b25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7CisgICAgQ2FsbExpbmtJbmZvKiBp
bmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxUeXBl
ID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29kZU9y
aWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVlR1BS
ID0gcmVnVDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5k
ZXggZjY3NjBhOTNmMGM4YmFhMDllNjVmOTRlOTdkYmMwODZiOTJhOGNjOC4uZjY3MTYyZDc4ZjA4
YzQ2NzIzZTE5ZGQzZmU1ZDA2MTZjNDM5OWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzAwLDE0ICszMDAsNiBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNp
Z25lZCBjYQogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IEpTU3RhY2s6OkNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQ
YXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgc3RvcmUzMihy
ZWdUMSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgSlNTdGFjazo6Q2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogCi0gICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9jb2RlQmxvY2st
PmFkZENhbGxMaW5rSW5mbygpOwotCi0gICAgaWYgKENhbGxFZGdlTG9nOjppc0VuYWJsZWQoKSAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkKLSAgICAgICAgJiYgT3B0aW9uczo6YmFzZWxpbmVEb2Vz
Q2FsbEVkZ2VQcm9maWxpbmcoKSkgewotICAgICAgICBtX3ZtLT5lbnN1cmVDYWxsRWRnZUxvZygp
LmVtaXRMb2dDb2RlKAotICAgICAgICAgICAgKnRoaXMsIGluZm8tPmNhbGxFZGdlUHJvZmlsZSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Ci0gICAgfQotCiAgICAgaWYgKG9wY29kZUlEID09
IG9wX2NhbGxfZXZhbCkgewogICAgICAgICBjb21waWxlQ2FsbEV2YWwoaW5zdHJ1Y3Rpb24pOwog
ICAgICAgICByZXR1cm47CkBAIC0zMjEsNiArMzEzLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQg
Y2EKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZSk7CiAKICAgICBBU1NFUlQobV9jYWxsQ29tcGls
YXRpb25JbmZvLnNpemUoKSA9PSBjYWxsTGlua0luZm9JbmRleCk7CisgICAgQ2FsbExpbmtJbmZv
KiBpbmZvID0gbV9jb2RlQmxvY2stPmFkZENhbGxMaW5rSW5mbygpOwogICAgIGluZm8tPmNhbGxU
eXBlID0gQ2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcihvcGNvZGVJRCk7CiAgICAgaW5mby0+Y29k
ZU9yaWdpbiA9IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCk7CiAgICAgaW5mby0+Y2FsbGVl
R1BSID0gcmVnVDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXgg
YWM3YTJmNDBmNTY5MTA1YmYxODg5YjQ0MWZlMjc2MWQ4ZDAyZDUzYi4uZGQ2ZjE3MDY0ODYxNzg1
NTk5NzIwMDE2ZTY0Mzk1ZDhjOGQ2Yzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaApAQCAtMTY3LDEzICsxNjcsNiBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlv
blN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUFjY2Vzc0lubGluaW5nLCB0cnVlKSBcCiAgICAg
dihib29sLCBlbmFibGVQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUpIFwKICAgICB2
KGJvb2wsIGVuYWJsZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUpIFwKLSAgICB2KGJv
b2wsIGVuYWJsZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlKSBcCi0gICAgdihib29sLCBj
YWxsU3RhdHVzU2hvdWxkVXNlQ2FsbEVkZ2VQcm9maWxlLCB0cnVlKSBcCi0gICAgdihib29sLCBj
YWxsRWRnZVByb2ZpbGVSZWFsbHlQcm9jZXNzZXNMb2csIHRydWUpIFwKLSAgICB2KGJvb2wsIGJh
c2VsaW5lRG9lc0NhbGxFZGdlUHJvZmlsaW5nLCBmYWxzZSkgXAotICAgIHYoYm9vbCwgZGZnRG9l
c0NhbGxFZGdlUHJvZmlsaW5nLCB0cnVlKSBcCi0gICAgdihib29sLCBlbmFibGVDYWxsRWRnZVBy
b2ZpbGluZywgdHJ1ZSkgXAotICAgIHYodW5zaWduZWQsIGZyZXF1ZW50Q2FsbFRocmVzaG9sZCwg
MikgXAogICAgIHYoYm9vbCwgb3B0aW1pemVOYXRpdmVDYWxscywgZmFsc2UpIFwKICAgICBcCiAg
ICAgdihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0cnVlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggNTVlNzgxMzRkNjM2NzAxODk2OTI5OWRiYTI0YmJjYTY5MWRl
ZmYzYy4uNjY2NzkyYTlkNTllYTg4MTVkZDg1ZjQ5Mjk4OWQ2ZTJkMGNiMjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzczLDEzICszNzMsNiBAQCBWTSomIFZNOjpz
aGFyZWRJbnN0YW5jZUludGVybmFsKCkKICAgICByZXR1cm4gc2hhcmVkSW5zdGFuY2U7CiB9CiAK
LUNhbGxFZGdlTG9nJiBWTTo6ZW5zdXJlQ2FsbEVkZ2VMb2coKQotewotICAgIGlmICghY2FsbEVk
Z2VMb2cpCi0gICAgICAgIGNhbGxFZGdlTG9nID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRWRnZUxv
Zz4oKTsKLSAgICByZXR1cm4gKmNhbGxFZGdlTG9nOwotfQotCiAjaWYgRU5BQkxFKEpJVCkKIHN0
YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhJbnRyaW5zaWMg
aW50cmluc2ljKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZmE4Y2IzZTlm
ZTNlMTk1MTkzYTE4MDc5OWRlYWQ1MWFmMGMxNWJjNC4uNTUyYzMxMWE5OWViZDA4NWU3NDUxZGQ4
ZTJmMTk5NzNhNWNjOTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC03Miw3
ICs3Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3M7CiAgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwotICAgIGNsYXNzIENhbGxF
ZGdlTG9nOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAg
Y2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC0yMzQsOSArMjMzLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIE93blB0cjxERkc6OkxvbmdMaXZlZFN0
YXRlPiBkZmdTdGF0ZTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRWRnZUxvZz4gY2FsbEVkZ2VMb2c7Ci0gICAgICAgIENh
bGxFZGdlTG9nJiBlbnN1cmVDYWxsRWRnZUxvZygpOwogCiAgICAgICAgIFZNVHlwZSB2bVR5cGU7
CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVudERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS10aGVuLWV4aXQuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOGE2OTAxZTg0Zjc3YmE1NTlkZjM3ZDA4MDhmZWE1
NGViZWU4MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktdGhlbi1leGl0Lmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotZnVuY3Rpb24gZm9vKGYpIHsKLSAgICBy
ZXR1cm4gbmV3IGYoKTsKLX0KLQotbm9JbmxpbmUoZm9vKTsKLQotZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKQotICAgIGZvbyhBcnJheSk7Ci0KLXZhciBkaWRDYWxsID0gZmFsc2U7Ci1m
b28oZnVuY3Rpb24oKSB7IGRpZENhbGwgPSB0cnVlOyB9KTsKLQotaWYgKCFkaWRDYWxsKQotICAg
IHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwgbXkgZnVuY3Rpb24uIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1jYWxsLWV4aXQtdGhpcy5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2YWYzZTMzZTFhMjMzMTg4NWY3ZGI0
ODI0YThiOWJlMjZhZDc0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BvbHktY2FsbC1leGl0
LXRoaXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0g
ICAgZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIDEgKyB0aGlzLmY7IH0KLSAgICBmdW5jdGlvbiBi
YXIoeCkgeyByZXR1cm4geCArIHRoaXMuZjsgfQotICAgIGZ1bmN0aW9uIGJheih4KSB7IHJldHVy
biB4ICsgMSArIHRoaXMuZjsgfQotICAgIAotICAgIHZhciBuID0gMTAwMDAwMDsKLSAgICAKLSAg
ICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKG8pIHsKLSAgICAgICAgdmFyIGYgPSB7ZnVuOmZvbywg
ZjoxfTsKLSAgICAgICAgdmFyIGcgPSB7ZnVuOmJhciwgZjoyfTsKLSAgICAgICAgdmFyIGggPSB7
ZnVuOmJheiwgZjozfTsKLSAgICAgICAgCi0gICAgICAgIHZhciByZXN1bHQgPSAwOwotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgaWYgKGkgPT0gbiAt
IDEpCi0gICAgICAgICAgICAgICAgZiA9IGg7Ci0gICAgICAgICAgICByZXN1bHQgKz0gZi5mdW4o
by5mKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFyIHRtcCA9IGY7Ci0gICAgICAgICAg
ICBmID0gZzsKLSAgICAgICAgICAgIGcgPSB0bXA7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSkoe2Y6NDJ9KTsKLSAgICAKLSAgICBpZiAocmVzdWx0
ICE9ICgobiAvIDIgLSAxKSAqICg0MiArIDIpKSArIChuIC8gMiAqICgxICsgMSkgKyAoNDIgKyAx
ICsgMykpKQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Ci19
KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5
LWNhbGwtZXhpdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcG9seS1j
YWxsLWV4aXQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZGQxNmFjNGNmMDk2
ODAxNTY0NWIzOWEwZTEwYjJkNDNlMTI1MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wb2x5
LWNhbGwtZXhpdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLShmdW5jdGlvbigp
IHsKLSAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQotICAgIGZ1bmN0aW9uIGJhcih4
KSB7IHJldHVybiB4OyB9Ci0gICAgZnVuY3Rpb24gYmF6KHgpIHsgcmV0dXJuIHggKyAxOyB9Ci0g
ICAgCi0gICAgdmFyIG4gPSAxMDAwMDAwOwotICAgIAotICAgIHZhciByZXN1bHQgPSAoZnVuY3Rp
b24obykgewotICAgICAgICB2YXIgZiA9IGZvbzsKLSAgICAgICAgdmFyIGcgPSBiYXI7Ci0gICAg
ICAgIHZhciBoID0gYmF6OwotICAgICAgICAKLSAgICAgICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaSA9PSBu
IC0gMSkKLSAgICAgICAgICAgICAgICBmID0gaDsKLSAgICAgICAgICAgIHJlc3VsdCArPSBmKG8u
Zik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhciB0bXAgPSBmOwotICAgICAgICAgICAg
ZiA9IGc7Ci0gICAgICAgICAgICBnID0gdG1wOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0pKHtmOjQyfSk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCAh
PSAoKG4gLyAyIC0gMSkgKiA0MikgKyAobiAvIDIgKiAxKSArICg0MiArIDEpKQotICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Ci19KSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvT3duUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaAppbmRleCBm
YTM1YjcxZTBmOWIzMjdkMzVlZWUxMzVjNzc5YjljY2FhMjI3OTkxLi40OGQwZTY4Y2VkMjg0Zjhi
NzkwM2MzMDE5M2M0M2E1Y2M2YmZlODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25Q
dHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZpbmUgV1RGX093blB0cl9oCiAK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ckNvbW1vbi5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTczLDE3ICs3Miw2IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25QdHImIG9wZXJhdG9yPShPd25QdHI8
VT4mJik7CiAKICAgICAgICAgdm9pZCBzd2FwKE93blB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIs
IG8ubV9wdHIpOyB9Ci0gICAgICAgIAotICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gb2JqZWN0IHRv
IHN0b3JlIGludG8gdGhpcyBPd25QdHIsIGJ1dCBvbmx5IHNvIGxvbmcgYXMgdGhpcyBPd25QdHIK
LSAgICAgICAgLy8gZG9lc24ndCBhbHJlYWR5IHBvaW50IHRvIGFuIG9iamVjdC4gVGhpcyB3aWxs
IGVuc3VyZSB0aGF0IGFmdGVyIHlvdSBjYWxsIHRoaXMsCi0gICAgICAgIC8vIHRoZSBPd25QdHIg
d2lsbCBwb2ludCB0byBhbiBpbnN0YW5jZSBvZiBULCBldmVuIGlmIGNhbGxlZCBjb25jdXJyZW50
bHkuIFRoaXMKLSAgICAgICAgLy8gaW5zdGFuY2UgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIGNy
ZWF0ZWQgYnkgdGhpcyBjYWxsLiBNb3Jlb3ZlciwgdGhpcyBjYWxsIHVzZXMKLSAgICAgICAgLy8g
YW4gb3Bwb3J0dW5pc3RpYyB0cmFuc2FjdGlvbiwgaW4gdGhhdCB3ZSBtYXkgY3JlYXRlIGFuIGlu
c3RhbmNlIG9mIFQgYW5kIHRoZW4KLSAgICAgICAgLy8gaW1tZWRpYXRlbHkgdGhyb3cgaXQgYXdh
eSwgaWYgaW4gdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgdGhhdCBpbnN0YW5jZSBzb21lCi0gICAg
ICAgIC8vIG90aGVyIHRocmVhZCB3YXMgZG9pbmcgdGhlIHNhbWUgdGhpbmcgYW5kIHN0b3JlZCBp
dHMgaW5zdGFuY2UgaW50byB0aGlzIHBvaW50ZXIKLSAgICAgICAgLy8gYmVmb3JlIHdlIGhhZCBh
IGNoYW5jZSB0byBkbyBzby4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAg
ICAgICAgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBleHBsaWNpdCBPd25QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIocHRyKSB7IH0K
QEAgLTE5OCwyOCArMTg2LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBwLmdl
dCgpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IGlubGluZSB2b2lkIE93blB0cjxUPjo6Y3JlYXRlVHJhbnNhY3Rpb25hbGx5KEFy
Z3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIGlmIChtX3B0cikgewotICAgICAgICAgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIFQqIG5ld09iamVjdCA9IG5ldyBUKGFyZ3MuLi4pOwotICAgICAgICBXVEY6
OnN0b3JlU3RvcmVGZW5jZSgpOwotI2lmIEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBpZiAobV9wdHIpIHsKLSAgICAgICAgICAgICAgICBkZWxldGUg
bmV3T2JqZWN0OwotICAgICAgICAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAoIVdURjo6
d2Vha0NvbXBhcmVBbmRTd2FwKGJpdHdpc2VfY2FzdDx2b2lkKnZvbGF0aWxlKj4oJm1fcHRyKSwg
bnVsbHB0ciwgbmV3T2JqZWN0KSk7Ci0jZWxzZQotICAgICAgICBtX3B0ciA9IG5ld09iamVjdDsK
LSNlbmRpZgotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T3duUHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1NwZWN0cnVtLmgKaW5kZXggMDM3MDg4NDU4ZmNkY2UyMjY4ODAwNGQwYWRmYmE3YjI5ZGU4MzJh
NS4uM2U2ZmE0YTYzM2ZhZDQyZGViNGRjNDgzMzI1OTIzNDFlODRiM2EwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiwzMSArMzIsMjIgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIENvdW50ZXJUeXBlID0gdW5zaWduZWQ+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogY2xhc3MgU3BlY3RydW0gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1h
cDxULCBDb3VudGVyVHlwZT46Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5h
bWUgSGFzaE1hcDxULCBDb3VudGVyVHlwZT46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9y
OworICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6aXRlcmF0
b3IgaXRlcmF0b3I7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxv
bmc+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKICAgICAKICAgICBTcGVjdHJ1bSgp
IHsgfQogICAgIAotICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgQ291bnRlclR5cGUgY291bnQg
PSAxKQorICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEp
CiAgICAgewotICAgICAgICBpZiAoIWNvdW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0eXBlbmFtZSBIYXNoTWFwPFQsIENvdW50ZXJUeXBlPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
bWFwLmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25l
ZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgKz0gY291bnQ7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0g
ICAgdm9pZCBhZGRBbGwoY29uc3QgU3BlY3RydW08VCwgVT4mIG90aGVyU3BlY3RydW0pCi0gICAg
ewotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogb3RoZXJTcGVjdHJ1bSkKLSAgICAgICAgICAg
IGFkZChlbnRyeS5rZXksIGVudHJ5LmNvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgQ291bnRlclR5
cGUgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKKyAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBU
JiBrZXkpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAu
ZmluZChrZXkpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKQEAgLTY0LDggKzU1
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgfQogICAgIAot
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9Ci0gICAgCiAg
ICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgaXRlcmF0
b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KQEAgLTc0LDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBLZXlBbmRDb3VudCB7CiAgICAgICAgIEtleUFuZENvdW50KCkgeyB9
CiAgICAgICAgIAotICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIENvdW50ZXJUeXBl
IGNvdW50KQorICAgICAgICBLZXlBbmRDb3VudChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcg
Y291bnQpCiAgICAgICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICAgICAsIGNvdW50KGNvdW50
KQogICAgICAgICB7CkBAIC05MSw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAg
ICAgIFQga2V5OwotICAgICAgICBDb3VudGVyVHlwZSBjb3VudDsKKyAgICAgICAgdW5zaWduZWQg
bG9uZyBjb3VudDsKICAgICB9OwogICAgIAogICAgIC8vIFJldHVybnMgYSBsaXN0IG9yZGVyZWQg
ZnJvbSBsb3dlc3QtY291bnQgdG8gaGlnaGVzdC1jb3VudC4KQEAgLTEwNSwxOCArOTQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICAKLSAgICB2b2lkIGNsZWFy
KCkgeyBtX21hcC5jbGVhcigpOyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KLSAgICB2b2lkIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCi0gICAgewotICAg
ICAgICBtX21hcC5yZW1vdmVJZihbZnVuY3Rvcl0gKHR5cGVuYW1lIEhhc2hNYXA8VCwgQ291bnRl
clR5cGU+OjpLZXlWYWx1ZVBhaXJUeXBlJiBwYWlyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0b3IoS2V5QW5kQ291bnQocGFpci5rZXksIHBhaXIudmFsdWUpKTsKLSAgICAgICAgICAg
IH0pOwotICAgIH0KLSAgICAKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDxULCBDb3VudGVyVHlwZT4g
bV9tYXA7CisgICAgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPiBtX21hcDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAxZTRlYzdmYjJlOWUwNTNkOWRjNjE4ZTlhYWU1OWI1MDhl
YzI2NDguLjE4ZmY2MWM0Mjg1ZTkzNzYzMmRiNjhhZjcxZjVlNWFiN2E1MTQyM2MgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxNC0wOC0yNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3Mjk0MC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjI1NgorCisg
ICAgICAgIENhdXNlZCBhc3NlcnRpb25zIG9uIGZhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC0KKyAgICAgICAgdmFsdWUuaHRtbCwgYW5kIHBvc3NpYmx5IGZsYWtpbmVzcyBvbiBtb3JlIHRl
c3RzIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgYXAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2
ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJGVEwgc2hvdWxkIGJlIGFibGUgdG8gZG8gcG9s
eW1vcnBoaWMgY2FsbCBpbmxpbmluZyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTE0NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNzI5NDAKKwogMjAxNC0wOC0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgYmUgYWJsZSB0byBkbyBwb2x5bW9ycGhpYyBjYWxs
IGlubGluaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiNTdlN2QwYTc5OWIzNzQ3YmQ5YjJjOWFjY2Y0NzE0ODU1Y2JkYWYzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMjUgKzAsMCBAQAotKGZ1bmN0aW9uKCkgewotICAgIGZ1bmN0aW9uIGZvbyh4
KSB7IHJldHVybiAxOyB9Ci0gICAgZnVuY3Rpb24gYmFyKHgpIHsgcmV0dXJuIHg7IH0KLSAgICAK
LSAgICB2YXIgbiA9IDEwMDAwMDA7Ci0gICAgCi0gICAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbigp
IHsKLSAgICAgICAgdmFyIGYgPSBmb287Ci0gICAgICAgIHZhciBnID0gYmFyOwotICAgICAgICAK
LSAgICAgICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsg
KytpKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gZig0Mik7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIHZhciB0bXAgPSBmOwotICAgICAgICAgICAgZiA9IGc7Ci0gICAgICAgICAgICBnID0g
dG1wOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0p
KCk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCAhPSBuIC8gMiAqIDQyICsgbiAvIDIgKiAxKQotICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Ci19KSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2Fs
bC5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3NpbXBsZS1wb2x5LWNh
bGwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZGZlZjVjNDdiYzhmNjBhNWFk
MDZlOGQ4MDI0NzFkZDFhNjI1NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc2ltcGxlLXBv
bHktY2FsbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLShmdW5jdGlvbigpIHsK
LSAgICBmdW5jdGlvbiBmb28oeCkgeyByZXR1cm4gMTsgfQotICAgIGZ1bmN0aW9uIGJhcih4KSB7
IHJldHVybiB4OyB9Ci0gICAgCi0gICAgdmFyIGYgPSBmb287Ci0gICAgdmFyIGcgPSBiYXI7Ci0g
ICAgCi0gICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAgdmFyIG4gPSAxMDAwMDA7Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgcmVzdWx0ICs9IGYoNDIpOwotICAgICAg
ICAKLSAgICAgICAgdmFyIHRtcCA9IGY7Ci0gICAgICAgIGYgPSBnOwotICAgICAgICBnID0gdG1w
OwotICAgIH0KLSAgICAKLSAgICBpZiAocmVzdWx0ICE9IG4gLyAyICogNDIgKyBuIC8gMiAqIDEp
Ci0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLX0pKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9seS1jYWxsLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyZWViZTY0NzgyYzllZTRjYWVh
NWM2MDk2NGQ4MTc3NDRmZGQwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotSlNSZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2Fs
bC1uZXN0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zaW1wbGUtcG9s
eS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDY4NGRkZmM0MDI5MmQ2NGE3MDc1ZDk0M2JhMjZkM2MxOWM5ZGJkYzYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
aW1wbGUtcG9seS1jYWxsLW5lc3RlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi1KU1JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQKLQotT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgotUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmE5OGU4MWE5OThiZTdmYzMyMzhiMTY5YWQxNWVkZjEwN2Fm
Yzk1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1wb2x5LWNhbGwtbmVzdGVkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zaW1wbGUtcG9seS1jYWxsLW5lc3RlZC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NpbXBsZS1w
b2x5LWNhbGwuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Mzg5MzIwNGQxYTM4OThhMDA0NDY2
OTg1ZGYwZDM3OGEyZDQzNmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2ltcGxlLXBvbHktY2FsbC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvc2ltcGxlLXBvbHktY2FsbC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>