<?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>204553</bug_id>
          
          <creation_ts>2019-11-23 18:28:48 -0800</creation_ts>
          <short_desc>REGRESSION(r252805): Caused test failures and ASan crashes (Requested by ap on #webkit).</short_desc>
          <delta_ts>2019-11-23 19:04:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>203971</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1593251</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 18:28:48 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/252805 broke the build:
Caused test failures and ASan crashes (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>1593253</commentid>
    <comment_count>1</comment_count>
      <attachid>384247</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 18:29:01 -0800</bug_when>
    <thetext>Created attachment 384247
ROLLOUT of r252805

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>1593255</commentid>
    <comment_count>2</comment_count>
      <attachid>384247</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 19:03:34 -0800</bug_when>
    <thetext>Comment on attachment 384247
ROLLOUT of r252805

Clearing flags on attachment: 384247

Committed r252839: &lt;https://trac.webkit.org/changeset/252839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593256</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-23 19:03:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593257</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-23 19:04:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/57456211&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384247</attachid>
            <date>2019-11-23 18:29:01 -0800</date>
            <delta_ts>2019-11-23 19:03:34 -0800</delta_ts>
            <desc>ROLLOUT of r252805</desc>
            <filename>bug-204553-20191123182900.patch</filename>
            <type>text/plain</type>
            <size>152647</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwNDI3MWFkYmI5OWQ1
NjQ4ODQ3ZWZiZjhkYTE0MjI0ZjY5MmYzMC4uNzk2OTFjMWZhNmIzODc2ZmJmZDMyMGVjM2M2MWI3
NDUyZTEwM2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTExLTIzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjUyODA1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA0NTUzCisKKyAgICAgICAgQ2F1c2VkIHRlc3QgZmFpbHVyZXMgYW5k
IEFTYW4gY3Jhc2hlcyAoUmVxdWVzdGVkIGJ5IGFwIG9uCisgICAgICAgICN3ZWJraXQpLgorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3Jvc3MtdGhyZWFkIHZlcnNp
b24gU3RvcmFnZVF1b3RhTWFuYWdlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzk3MQorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjUyODA1CisKIDIwMTktMTEtMjMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlcGxhY2UgcmVkdW5kYW50IExpbmU6OmlzVmlz
dWFsbHlFbXB0eSgpIHdpdGggTGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBiOTVlMzlkN2ZlNGJhZmRiYWExZDI4OGU4ZDdkNWU4NjY1YTczMGJjLi5mY2FiYjkyMDY0MzAy
NGI5MjQ0Zjk0ZmY1ZGU4NDY1MTBkOWQ4ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTExLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjUyODA1LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTUzCisKKyAgICAgICAgQ2F1c2VkIHRl
c3QgZmFpbHVyZXMgYW5kIEFTYW4gY3Jhc2hlcyAoUmVxdWVzdGVkIGJ5IGFwIG9uCisgICAgICAg
ICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3Jv
c3MtdGhyZWFkIHZlcnNpb24gU3RvcmFnZVF1b3RhTWFuYWdlciIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzk3MQorICAgICAgICBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjUyODA1CisKIDIwMTktMTEtMjIgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjUyNzk2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMGVjODA1MTEzMzhhZjQy
N2UwYjU4OGM0YTFjM2UyNGExY2Y2NTZjOC4uZWZjMjc1ZjZkYThjMmMxMDU2YmYwMGQ1OWNmNWE1
ZjliOWY1ZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzgxLDYgKzEzODEsNyBAQCBzZXQo
V2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlLmgKICAgICBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCiAgICAgc3Rv
cmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmgKKyAgICBzdG9yYWdlL1N0b3JhZ2VRdW90YVVzZXIu
aAogICAgIHN0b3JhZ2UvU3RvcmFnZVR5cGUuaAogCiAgICAgc3R5bGUvU3R5bGVDaGFuZ2UuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAppbmRleCBiYmE2NjIzNDZkZGEzYmUyMzVmZDU3NTcwNjVkYjhjY2Y3ZTc1ZjdmLi42
MzFjNGNlNDVkNzVmN2E3OTIzYTMxOWQ5ZjI3ZjM0ODEyNTU2ZThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAt
NDYsMjggKzQ2LDI4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVy
IHsKIAotUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBxdW90YU1hbmFnZXJH
ZXR0ZXIpCitSZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlcikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoc2Vzc2lvbklELCBXVEZNb3ZlKHF1b3Rh
TWFuYWdlckdldHRlcikpKTsKIH0KIAotUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgcXVvdGFNYW5hZ2VyR2V0
dGVyKQorUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgUXVvdGFNYW5hZ2Vy
R2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IElEQlNlcnZlcihzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgV1RGTW92ZShxdW90
YU1hbmFnZXJHZXR0ZXIpKSk7CiB9CiAKLUlEQlNlcnZlcjo6SURCU2VydmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyJiYgc3BhY2VS
ZXF1ZXN0ZXIpCitJREJTZXJ2ZXI6OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlcikKICAgICA6IENyb3NzVGhy
ZWFkVGFza0hhbmRsZXIoIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiLCBBdXRvZHJhaW5lZFBvb2xG
b3JSdW5Mb29wOjpVc2UpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3Nw
YWNlUmVxdWVzdGVyKFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKQorICAgICwgbV9xdW90YU1hbmFn
ZXJHZXR0ZXIoV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpKQogewogfQogCi1JREJTZXJ2ZXI6
OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBTdG9yYWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJiBzcGFj
ZVJlcXVlc3RlcikKK0lEQlNlcnZlcjo6SURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIFF1b3RhTWFuYWdlckdldHRl
ciYmIHF1b3RhTWFuYWdlckdldHRlcikKICAgICA6IENyb3NzVGhyZWFkVGFza0hhbmRsZXIoIklu
ZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiLCBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2UpCiAg
ICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0
aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpCi0gICAgLCBtX3NwYWNlUmVxdWVzdGVyKFdURk1vdmUo
c3BhY2VSZXF1ZXN0ZXIpKQorICAgICwgbV9xdW90YU1hbmFnZXJHZXR0ZXIoV1RGTW92ZShxdW90
YU1hbmFnZXJHZXR0ZXIpKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXIgY3JlYXRl
ZCBhdCBwYXRoICVzIiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmSURCU2VydmVy
Ojp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSkpOwpAQCAtNjgzLDI0ICs2ODMsMTU3IEBAIHZvaWQg
SURCU2VydmVyOjpwZXJmb3JtQ2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0
IFZlY3RvcjxTZWN1cml0eU9yCiAKIHZvaWQgSURCU2VydmVyOjpkaWRQZXJmb3JtQ2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXModWludDY0X3QgY2FsbGJhY2tJRCkKIHsKKyAgICBmb3IgKGF1dG8mIHVz
ZXIgOiBtX3F1b3RhVXNlcnMudmFsdWVzKCkpCisgICAgICAgIHVzZXItPnJlc2V0U3BhY2VVc2Vk
KCk7CisKICAgICBhdXRvIGNhbGxiYWNrID0gbV9kZWxldGVEYXRhYmFzZUNvbXBsZXRpb25IYW5k
bGVycy50YWtlKGNhbGxiYWNrSUQpOwogICAgIEFTU0VSVChjYWxsYmFjayk7CiAgICAgY2FsbGJh
Y2soKTsKIH0KIAotU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gSURCU2VydmVyOjpyZXF1
ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHRhc2tTaXplKQor
SURCU2VydmVyOjpRdW90YVVzZXI6OlF1b3RhVXNlcihJREJTZXJ2ZXImIHNlcnZlciwgU3RvcmFn
ZVF1b3RhTWFuYWdlciogbWFuYWdlciwgQ2xpZW50T3JpZ2luJiYgb3JpZ2luKQorICAgIDogbV9z
ZXJ2ZXIoc2VydmVyKQorICAgICwgbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQorICAg
ICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQorICAgICwgbV9pc0luaXRpYWxpemVkKG1fc2Vy
dmVyLm1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7Ci0gICAgcmV0dXJuIG1fc3BhY2VSZXF1ZXN0ZXIob3JpZ2luLCB0YXNrU2l6ZSk7Cisg
ICAgaWYgKG1hbmFnZXIpCisgICAgICAgIG1hbmFnZXItPmFkZFVzZXIoKnRoaXMpOworfQorCitJ
REJTZXJ2ZXI6OlF1b3RhVXNlcjo6flF1b3RhVXNlcigpCit7CisgICAgaWYgKG1fbWFuYWdlcikK
KyAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVVc2VyKCp0aGlzKTsKK30KKwordm9pZCBJREJTZXJ2
ZXI6OlF1b3RhVXNlcjo6cmVzZXRTcGFjZVVzZWQoKQoreworICAgIG1fc3BhY2VVc2VkID0gMDsK
KworICAgIGlmICghbV9tYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zZXJ2
ZXIubV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9pbml0
aWFsaXphdGlvbkNhbGxiYWNrKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworCisg
ICAgLy8gRG8gYWRkL3JlbW92ZSB0byB0cmlnZ2VyIGNhbGwgdG8gd2hlbkluaXRpYWxpemVkLgor
ICAgIG1fbWFuYWdlci0+cmVtb3ZlVXNlcigqdGhpcyk7CisgICAgbV9tYW5hZ2VyLT5hZGRVc2Vy
KCp0aGlzKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6Y29tcHV0ZVNwYWNlVXNl
ZCgpCit7CisgICAgcmVzZXRTcGFjZVVzZWQoKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OlF1b3Rh
VXNlcjo6aW5jcmVhc2VTcGFjZVVzZWQodWludDY0X3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3NwYWNlVXNlZCArIHNp
emUgPiBtX3NwYWNlVXNlZCk7CisgICAgbV9zcGFjZVVzZWQgKz0gc2l6ZTsKK30KK3ZvaWQgSURC
U2VydmVyOjpRdW90YVVzZXI6OmRlY3JlYXNlU3BhY2VVc2VkKHVpbnQ2NF90IHNpemUpCit7Cisg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9z
cGFjZVVzZWQgPj0gc2l6ZSk7CisgICAgbV9zcGFjZVVzZWQgLT0gc2l6ZTsKK30KKwordm9pZCBJ
REJTZXJ2ZXI6OlF1b3RhVXNlcjo6d2hlbkluaXRpYWxpemVkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKSB7CisgICAgICAg
IGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9pbml0aWFsaXphdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIuc3RhcnRDb21wdXRp
bmdTcGFjZVVzZWRGb3JPcmlnaW4obV9vcmlnaW4pOworfQorCit2b2lkIElEQlNlcnZlcjo6UXVv
dGFVc2VyOjppbml0aWFsaXplU3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKK3sKKyAgICBB
U1NFUlQobV9pc0luaXRpYWxpemVkIHx8ICFtX2VzdGltYXRlZFNwYWNlSW5jcmVhc2UpOworICAg
IG1fc3BhY2VVc2VkID0gc3BhY2VVc2VkOworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CisK
KyAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9pbml0aWFsaXphdGlvbkNhbGxiYWNr
KSkKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKworSURCU2VydmVyOjpRdW90YVVzZXImIElEQlNl
cnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAg
IHJldHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2Vy
R2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7Cisg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi11aW50NjRfdCBJREJTZXJ2ZXI6OmRpc2tVc2Fn
ZShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQordm9pZCBJREJTZXJ2ZXI6OnN0YXJ0Q29tcHV0aW5nU3BhY2VVc2VkRm9yT3JpZ2luKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZJREJTZXJ2ZXI6OmNvbXB1dGVTcGFjZVVzZWRGb3JPcmlnaW4sIG9yaWdpbikpOworfQor
Cit2b2lkIElEQlNlcnZlcjo6Y29tcHV0ZVNwYWNlVXNlZEZvck9yaWdpbihjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1
dG8gb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4uY2xp
ZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiX3N0cik7Ci0gICAgYXV0byBuZXdWZXJzaW9u
T3JpZ2luRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJv
b3REaXJlY3RvcnksICJ2MSJfc3RyKTsKLSAgICByZXR1cm4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkpICsg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG5ld1ZlcnNp
b25PcmlnaW5EaXJlY3RvcnkpOworICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gdGhp
cy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0byBvbGRWZXJz
aW9uT3JpZ2luRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4s
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYwIik7CisgICAgYXV0byBuZXdWZXJzaW9uT3JpZ2lu
RGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0
aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgInYxIik7CisgICAgYXV0byBzaXplID0gU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG9sZFZlcnNpb25PcmlnaW5EaXJlY3Rvcnkp
ICsgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG5ld1Zl
cnNpb25PcmlnaW5EaXJlY3RvcnkpOworCisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJklEQlNlcnZlcjo6ZmluaXNoQ29tcHV0aW5nU3BhY2VV
c2VkRm9yT3JpZ2luLCBvcmlnaW4sIHNpemUpKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmZpbmlz
aENvbXB1dGluZ1NwYWNlVXNlZEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3Qgc3BhY2VVc2VkKQoreworICAgIGVuc3VyZVF1b3RhVXNlcihvcmlnaW4pLmluaXRp
YWxpemVTcGFjZVVzZWQoc3BhY2VVc2VkKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OnJlcXVlc3RT
cGFjZShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdGFza1NpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmIGNhbGxi
YWNrKQoreworICAgIGF1dG8qIHF1b3RhTWFuYWdlciA9IGVuc3VyZVF1b3RhVXNlcihvcmlnaW4p
Lm1hbmFnZXIoKTsKKyAgICBpZiAoIXF1b3RhTWFuYWdlcikgeworICAgICAgICBjYWxsYmFjayhT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBxdW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZSh0YXNrU2l6ZSwgV1RGTW92ZShj
YWxsYmFjaykpOworfQorCit2b2lkIElEQlNlcnZlcjo6cmVzZXRTcGFjZVVzZWQoY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIHVzZXIgPSBtX3F1b3RhVXNlcnMu
Z2V0KG9yaWdpbikpCisgICAgICAgIHVzZXItPnJlc2V0U3BhY2VVc2VkKCk7Cit9CisKK3ZvaWQg
SURCU2VydmVyOjppbmNyZWFzZVNwYWNlVXNlZChjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3Qgc2l6ZSkKK3sKKyAgICBlbnN1cmVRdW90YVVzZXIob3JpZ2luKS5pbmNyZWFzZVNw
YWNlVXNlZChzaXplKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmRlY3JlYXNlU3BhY2VVc2VkKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzaXplKQoreworICAgIGVuc3VyZVF1
b3RhVXNlcihvcmlnaW4pLmRlY3JlYXNlU3BhY2VVc2VkKHNpemUpOworfQorCit2b2lkIElEQlNl
cnZlcjo6aW5jcmVhc2VQb3RlbnRpYWxTcGFjZVVzZWQoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IHRhc2tTaXplKQoreworICAgIGVuc3VyZVF1b3RhVXNlcihvcmlnaW4pLmlu
Y3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKHRhc2tTaXplKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6
OmRlY3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1
aW50NjRfdCBzcGFjZVVzZWQpCit7CisgICAgZW5zdXJlUXVvdGFVc2VyKG9yaWdpbikuZGVjcmVh
c2VQb3RlbnRpYWxTcGFjZVVzZWQoc3BhY2VVc2VkKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6OnVw
Z3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBmYzE2MDRmNzY1YWUyNWM2M2EwOWE0
YTkzMWQ1MDA0Y2VjMDUwYWMxLi4zODc3YTA1MzJhNGRkYmZlODgwMTU3MmE2Y2JkMWQ0NDY0ZGZl
ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRv
Q2xpZW50LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVF1b3RhTWFuYWdlci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VRdW90YVVzZXIuaCIKICNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KQEAgLTU3
LDkgKzU4LDkgQEAgZW51bSBjbGFzcyBTaG91bGRGb3JjZVN0b3AgOiBib29sIHsgTm8sIFllcyB9
OwogCiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2ZXI+LCBwdWJs
aWMgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPElEQlNlcnZl
cj4gewogcHVibGljOgotICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rl
ciA9IEZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9y
aWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKT47Ci0gICAgc3RhdGljIFJlZjxJREJTZXJ2
ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVz
dGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBTdG9y
YWdlUXVvdGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXImJik7CisgICAgdXNpbmcgUXVvdGFNYW5hZ2Vy
R2V0dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyKihQQUw6OlNlc3Npb25J
RCwgY29uc3QgQ2xpZW50T3JpZ2luJik+OworICAgIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVh
dGUoUEFMOjpTZXNzaW9uSUQsIFF1b3RhTWFuYWdlckdldHRlciYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRv
Q2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihJ
REJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTExMCw4ICsxMTEsMTQgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNl
KFdhbGxUaW1lLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogCi0gICAgU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24gcmVxdWVz
dFNwYWNlKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHRhc2tTaXplKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdERp
cmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29u
c3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb24pPiYmKTsKKyAgICB2b2lkIGluY3JlYXNl
UG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHRhc2tTaXpl
KTsKKyAgICB2b2lkIGRlY3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdp
biYsIHVpbnQ2NF90IHRhc2tTaXplKTsKKyAgICB2b2lkIGluY3JlYXNlU3BhY2VVc2VkKGNvbnN0
IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUpOworICAgIHZvaWQgZGVjcmVhc2VTcGFjZVVz
ZWQoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSk7CisgICAgdm9pZCByZXNldFNw
YWNlVXNlZChjb25zdCBDbGllbnRPcmlnaW4mKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3Rh
VXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikgeyBlbnN1cmVRdW90YVVzZXIob3JpZ2lu
KTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlTdG9wKFNob3VsZEZvcmNlU3RvcCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWUoKTsKQEAgLTEyMCw4ICsxMjcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZShVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJh
c2UpIHsgbV9hbGxVbmlxdWVJREJEYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlKTsgfQogCiBwcml2
YXRlOgotICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgU3RvcmFnZVF1b3RhTWFuYWdlclNw
YWNlUmVxdWVzdGVyJiYpOwotICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVl
c3RlciYmKTsKKyAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIFF1b3RhTWFuYWdlckdldHRl
ciYmKTsKKyAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CiAKICAgICBVbmlxdWVJREJE
YXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKICAgICAKQEAgLTEzOCw2ICsxNDUsNTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihj
b25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIGNvbnN0IFN0cmluZyYpOwogCisgICAg
Y2xhc3MgUXVvdGFVc2VyIGZpbmFsIDogcHVibGljIFN0b3JhZ2VRdW90YVVzZXIgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFF1b3RhVXNl
cihJREJTZXJ2ZXImLCBTdG9yYWdlUXVvdGFNYW5hZ2VyKiwgQ2xpZW50T3JpZ2luJiYpOworICAg
ICAgICB+UXVvdGFVc2VyKCk7CisKKyAgICAgICAgU3RvcmFnZVF1b3RhTWFuYWdlciogbWFuYWdl
cigpIHsgcmV0dXJuIG1fbWFuYWdlci5nZXQoKTsgfQorCisgICAgICAgIHZvaWQgc2V0U3BhY2VV
c2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkgeyBtX3NwYWNlVXNlZCA9IHNwYWNlVXNlZDsgfQorICAg
ICAgICB2b2lkIHJlc2V0U3BhY2VVc2VkKCk7CisKKyAgICAgICAgdm9pZCBpbmNyZWFzZVBvdGVu
dGlhbFNwYWNlVXNlZCh1aW50NjRfdCBpbmNyZWFzZSkgeyBtX2VzdGltYXRlZFNwYWNlSW5jcmVh
c2UgKz0gaW5jcmVhc2U7IH0KKyAgICAgICAgdm9pZCBkZWNyZWFzZVBvdGVudGlhbFNwYWNlVXNl
ZCh1aW50NjRfdCBkZWNyZWFzZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fZXN0
aW1hdGVkU3BhY2VJbmNyZWFzZSA+PSBkZWNyZWFzZSk7CisgICAgICAgICAgICBtX2VzdGltYXRl
ZFNwYWNlSW5jcmVhc2UgLT0gZGVjcmVhc2U7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBpbmNy
ZWFzZVNwYWNlVXNlZCh1aW50NjRfdCBzaXplKTsKKyAgICAgICAgdm9pZCBkZWNyZWFzZVNwYWNl
VXNlZCh1aW50NjRfdCBzaXplKTsKKworICAgICAgICB2b2lkIGluaXRpYWxpemVTcGFjZVVzZWQo
dWludDY0X3Qgc3BhY2VVc2VkKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHVpbnQ2NF90IHNw
YWNlVXNlZCgpIGNvbnN0IGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2lz
SW5pdGlhbGl6ZWQpOworICAgICAgICAgICAgcmV0dXJuIG1fc3BhY2VVc2VkICsgbV9lc3RpbWF0
ZWRTcGFjZUluY3JlYXNlOworICAgICAgICB9CisgICAgICAgIHZvaWQgY29tcHV0ZVNwYWNlVXNl
ZCgpIGZpbmFsOworICAgICAgICB2b2lkIHdoZW5Jbml0aWFsaXplZChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpIGZpbmFsOworCisgICAgICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CisgICAg
ICAgIFdlYWtQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gbV9tYW5hZ2VyOworICAgICAgICBDbGll
bnRPcmlnaW4gbV9vcmlnaW47CisgICAgICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2Ug
fTsKKyAgICAgICAgdWludDY0X3QgbV9zcGFjZVVzZWQgeyAwIH07CisgICAgICAgIHVpbnQ2NF90
IG1fZXN0aW1hdGVkU3BhY2VJbmNyZWFzZSB7IDAgfTsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiBtX2luaXRpYWxpemF0aW9uQ2FsbGJhY2s7CisgICAgfTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIFF1b3RhVXNlciYgZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYp
OworICAgIHZvaWQgc3RhcnRDb21wdXRpbmdTcGFjZVVzZWRGb3JPcmlnaW4oY29uc3QgQ2xpZW50
T3JpZ2luJik7CisgICAgdm9pZCBjb21wdXRlU3BhY2VVc2VkRm9yT3JpZ2luKGNvbnN0IENsaWVu
dE9yaWdpbiYpOworICAgIHZvaWQgZmluaXNoQ29tcHV0aW5nU3BhY2VVc2VkRm9yT3JpZ2luKGNv
bnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlVXNlZCk7CisKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBIYXNoTWFwPElEQkNvbm5lY3Rpb25JZGVudGlmaWVyLCBS
ZWZQdHI8SURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV9jb25uZWN0aW9uTWFwOwogICAgIEhhc2hN
YXA8SURCRGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJh
c2U+PiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwOwpAQCAtMTUwLDcgKzIwMiw4IEBAIHByaXZhdGU6
CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGg7CiAKLSAgICBTdG9yYWdlUXVv
dGFNYW5hZ2VyU3BhY2VSZXF1ZXN0ZXIgbV9zcGFjZVJlcXVlc3RlcjsKKyAgICBIYXNoTWFwPENs
aWVudE9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFF1b3RhVXNlcj4+IG1fcXVvdGFVc2VyczsKKyAg
ICBRdW90YU1hbmFnZXJHZXR0ZXIgbV9xdW90YU1hbmFnZXJHZXR0ZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGZmOGFkOGE4
MDYwMzYxMDkwM2NiODFmNDdlMjdkZjA1Njc5NTFlYjIuLjgyNDM0MjI5MGVhZDhjM2UzYzU3MWY2
OTVjMjgzNTc3ZDM3YzJlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTg5LDYg
KzE4OSw1NiBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBxdW90YUVycm9yTWVzc2FnZU5hbWUoY29u
c3QgY2hhciogdGFza05hbWUpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byAiLCB0
YXNrTmFtZSwgIiBpbiBkYXRhYmFzZSBiZWNhdXNlIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGRvbWFp
biIpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXF1ZXN0U3BhY2UoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IHRhc2tTaXplLCBjb25z
dCBjaGFyKiB0YXNrTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJFcnJvciYmKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBtX3NlcnZlci0+cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmln
aW4oKSwgdGFza1NpemUsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCB3ZWFr
VHJhbnNhY3Rpb24gPSBtYWtlV2Vha1B0cih0cmFuc2FjdGlvbiksIHRhc2tOYW1lLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtub3du
RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXdlYWtUcmFuc2FjdGlvbikgeworICAgICAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG1fb3duaW5nUG9pbnRlckZvckNsb3NlKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgY2xvc2lu
ZyB0aGUgZGF0YWJhc2UsIHRoZXJlIGlzIG5vIHBvaW50IGluIHRyeWluZyB0byBtb2RpZnkgdGhl
IGRhdGFiYXNlIGF0IHRoYXQgcG9pbnQuCisgICAgICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7
IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKKyAgICAgICAgY2FzZSBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbjo6RGVueToKKyAgICAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFF
eGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUodGFza05hbWUpIH0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9u
OjpHcmFudDoKKyAgICAgICAgICAgIGNhbGxiYWNrKElEQkVycm9yIHsgfSk7CisgICAgICAgIH07
CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OndhaXRGb3JSZXF1ZXN0U3Bh
Y2VDb21wbGV0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmIGNhbGxiYWNrKQoreworICAgIHJl
cXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgMCwgIiIsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c3RhcnRTcGFjZUluY3JlYXNlVGFzayh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrU2l6ZSkKK3sKKyAgICBtX3NlcnZlci0+aW5jcmVhc2VQ
b3RlbnRpYWxTcGFjZVVzZWQobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSk7CisgICAg
QVNTRVJUKCFtX3BlbmRpbmdTcGFjZUluY3JlYXNlVGFza3MuY29udGFpbnMoaWRlbnRpZmllcikp
OworICAgIG1fcGVuZGluZ1NwYWNlSW5jcmVhc2VUYXNrcy5hZGQoaWRlbnRpZmllciwgdGFza1Np
emUpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpmaW5pc2hTcGFjZUluY3JlYXNlVGFz
ayh1aW50NjRfdCBpZGVudGlmaWVyLCBib29sIGlzVGFza1N1Y2Nlc3NmdWwpCit7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fcGVuZGluZ1NwYWNlSW5jcmVhc2VUYXNrcy5maW5kKGlkZW50aWZpZXIp
OworICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3BlbmRpbmdTcGFjZUluY3JlYXNlVGFza3MuZW5k
KCkpOworICAgIG1fc2VydmVyLT5kZWNyZWFzZVBvdGVudGlhbFNwYWNlVXNlZChtX2lkZW50aWZp
ZXIub3JpZ2luKCksIGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgaWYgKGlzVGFza1N1Y2Nlc3NmdWwp
CisgICAgICAgIG1fc2VydmVyLT5pbmNyZWFzZVNwYWNlVXNlZChtX2lkZW50aWZpZXIub3JpZ2lu
KCksIGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgbV9wZW5kaW5nU3BhY2VJbmNyZWFzZVRhc2tzLnJl
bW92ZShpdGVyYXRvcik7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJy
ZW50T3Blbk9wZXJhdGlvbigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRPcGVuT3BlcmF0aW9uICglcCkiLCB0aGlzKTsKQEAg
LTE5OSw3ICsyNDksMjkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnRP
cGVuT3BlcmF0aW9uKCkKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKSB7CiAgICAgICAgIGlmICgh
bV9pc09wZW5pbmdCYWNraW5nU3RvcmUpIHsKICAgICAgICAgICAgIG1faXNPcGVuaW5nQmFja2lu
Z1N0b3JlID0gdHJ1ZTsKLSAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmUsIG1f
aWRlbnRpZmllcikpOworICAgICAgICAgICAgLy8gV2UgZG8gbm90IGtub3cgd2hldGhlciB0aGlz
IGlzIGFuIGV4aXN0aW5nIG9yIGEgbmV3IGRhdGFiYXNlLgorICAgICAgICAgICAgLy8gV2Ugc2V0
IGEgc21hbGwgY29zdCBzbyB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBvcGVuIGFuIGluZmlu
aXRlIG51bWJlciBvZiBkYXRhYmFzZS4KKyAgICAgICAgICAgIG1fc2VydmVyLT5yZXF1ZXN0U3Bh
Y2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0LCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byBkZWNpc2lvbikgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgaWYgKG1fb3duaW5nUG9pbnRlckZvckNsb3NlKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlY2lz
aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lv
bjo6RGVueTogeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERh
dGE6OmVycm9yKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPnJlcXVlc3REYXRhKCkucmVxdWVzdElk
ZW50aWZpZXIoKSwgSURCRXJyb3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNz
YWdlTmFtZSgib3BlbkRhdGFiYXNlIikgfSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdCA9IG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgICAgIG1faXNPcGVuaW5nQmFja2luZ1N0b3JlID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudDoKKyAgICAgICAgICAgICAg
ICAgICAgYXV0byBjYWxsYmFja0lEID0gdGhpcy0+Z2VuZXJhdGVVbmlxdWVDYWxsYmFja0lkZW50
aWZpZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRTcGFjZUluY3JlYXNlVGFzayhjYWxs
YmFja0lELCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy0+cG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSwgbV9pZGVudGlmaWVyLCBjYWxsYmFja0lE
KSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03NjMsMjEgKzgzNSwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKFJlZjxVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3RpbwogICAgIG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuYWRkKGFkb3B0UmVmKGNvbm5l
Y3Rpb24ubGVha1JlZigpKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNr
aW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRh
dGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlICglcCkiLCB0aGlzKTsKIAotICAgIElEQkRhdGFiYXNl
SW5mbyBkYXRhYmFzZUluZm87Ci0gICAgbV9vcmlnaW4gPSBpZGVudGlmaWVyLm9yaWdpbigpOwot
ICAgIC8vIFF1b3RhIGNoZWNrLgotICAgIGF1dG8gZGVjaXNpb24gPSBtX3NlcnZlci0+cmVxdWVz
dFNwYWNlKG1fb3JpZ2luLCBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0KTsKLSAgICBpZiAoZGVj
aXNpb24gPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAg
cG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlLCBkYXRhYmFzZUluZm8sIElEQkVycm9y
KFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJPcGVuQmFja2luZ1N0
b3JlIikpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoIW1fYmFja2lu
Z1N0b3JlKTsKKworICAgIElEQkRhdGFiYXNlSW5mbyBkYXRhYmFzZUluZm87CiAgICAgSURCRXJy
b3IgZXJyb3I7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2JhY2tpbmdTdG9y
ZUxvY2spOwpAQCAtNzg3LDEwICs4NTIsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3Bl
bkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIKICAg
ICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
ZGF0YWJhc2VJbmZvLCBsb2NrZXIpOwogICAgIH0KIAotICAgIHBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3Bl
bkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvLCBlcnJvcikpOworICAgIHBvc3REYXRhYmFzZVRh
c2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkT3BlbkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvLCBlcnJvciwgIHRhc2tJZGVudGlmaWVy
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbywgY29uc3QgSURCRXJyb3ImIGVycm9yLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFp
bikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUiKTsKQEAgLTgwMSw2ICs4
NjYsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0
IElEQkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFTU0VSVChtX2lzT3BlbmluZ0Jh
Y2tpbmdTdG9yZSk7CiAgICAgbV9pc09wZW5pbmdCYWNraW5nU3RvcmUgPSBmYWxzZTsKIAorICAg
IGZpbmlzaFNwYWNlSW5jcmVhc2VUYXNrKHRhc2tJZGVudGlmaWVyLCBlcnJvci5pc051bGwoKSk7
CisKICAgICBpZiAobV9oYXJkQ2xvc2VkRm9yVXNlckRlbGV0ZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC04MTIsMjIgKzg3OSwzMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIGF1dG8gdGFza1NpemUgPSBkZWZh
dWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOworICAgIHJlcXVlc3RT
cGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJjcmVhdGVPYmplY3RTdG9yZSIsIFt0aGlzLCB0
YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBpbmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSAmJiAq
ZXJyb3IuY29kZSgpICE9IFF1b3RhRXhjZWVkZWRFcnJvcikgeworICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShlcnJvcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIHRoaXMtPmNyZWF0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCB0cmFu
c2FjdGlvbiwgaW5mbywgV1RGTW92ZShjYWxsYmFjayksIGVycm9yKTsKKyAgICB9KTsKK30KKwor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2so
dWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQorewogICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGlm
ICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNy
ZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLCBpbmZvKSk7CisgICAgc3RhcnRTcGFjZUluY3JlYXNlVGFzayhjYWxsYmFja0lELCB0YXNr
U2l6ZSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lE
LCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvLCAgcXVvdGFFcnJvcikpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCRXJy
b3ImIHF1b3RhRXJyb3IpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgTE9H
KEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVhdGVPYmplY3RT
dG9yZSIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1
bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5mbyk7Ci0gICAgaWYgKG1fc2Vy
dmVyLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1D
cmVhdGVPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlmaWVyLCBJREJFcnJvcihRdW90YUV4Y2Vl
ZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiQ3JlYXRlT2JqZWN0U3RvcmUiKSksIGlu
Zm8pKTsKKyAgICBpZiAoIXF1b3RhRXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgcG9zdERhdGFi
YXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSWRlbnRpZmllciwgcXVv
dGFFcnJvciwgaW5mbykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NDYsNiArOTI0
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZU9iamVjdFN0b3Jl
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZv
cm1DcmVhdGVPYmplY3RTdG9yZSIpOwogCisgICAgZmluaXNoU3BhY2VJbmNyZWFzZVRhc2soY2Fs
bGJhY2tJZGVudGlmaWVyLCBlcnJvci5pc051bGwoKSk7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgp
KQogICAgICAgICBtX2RhdGFiYXNlSW5mby0+YWRkRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvKTsK
IApAQCAtODU3LDYgKzkzNiwxNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmpl
Y3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIHdhaXRGb3JSZXF1ZXN0U3BhY2VD
b21wbGV0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU5h
bWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLT5kZWxldGVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0
U3RvcmVOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3sKICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBpZiAo
IWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKQEAgLTkwMSwxNSArOTkxLDI4IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0co
SW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSIp
OwogCisgICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdO
YW1lLnNpemVJbkJ5dGVzKCk7CisgICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCB0YXNrU2l6
ZSwgInJlbmFtZU9iamVjdFN0b3JlIiwgW3RoaXMsIHRhc2tTaXplLCAmdHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYg
KmVycm9yLmNvZGUoKSAhPSBRdW90YUV4Y2VlZGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLT5yZW5hbWVPYmplY3RTdG9yZUFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJh
bnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSwgV1RGTW92ZShjYWxsYmFj
ayksIGVycm9yKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1l
T2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29u
c3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCit7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0
b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgaWYgKCFjYWxs
YmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBJREJFcnJvciBlcnJvcjsKKyAgICBJREJF
cnJvciBlcnJvciA9IHF1b3RhRXJyb3I7CiAgICAgYXV0byogaW5mbyA9IG1fZGF0YWJhc2VJbmZv
LT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAg
IGlmICghaW5mbykKICAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gcmVuYW1lIG5vbi1leGlzdGFudCBvYmplY3Qgc3RvcmUiX3MgfTsKIAorICAgIHN0
YXJ0U3BhY2VJbmNyZWFzZVRhc2soY2FsbGJhY2tJRCwgdGFza1NpemUpOwogICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygp
LmlkZW50aWZpZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lLCBlcnJvcikpOwog
fQogCkBAIC05MTgsMTAgKzEwMjEsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
UmVuYW1lT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUiKTsKIAotICAgIC8vIFF1b3RhIGNo
ZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3
TmFtZS5zaXplSW5CeXRlcygpOwotICAgIGlmIChtX3NlcnZlci0+cmVxdWVzdFNwYWNlKG1fb3Jp
Z2luLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsK
LSAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUmVuYW1lT2JqZWN0U3RvcmUsIGNhbGxi
YWNrSWRlbnRpZmllciwgSURCRXJyb3IoUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVz
c2FnZU5hbWUoIlJlbmFtZU9iamVjdFN0b3JlIikpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5l
d05hbWUpKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFz
ZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkUGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9y
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTM5LDYgKzEwNDAsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJm
b3JtUmVuYW1lT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlIik7CiAKKyAgICBmaW5pc2hT
cGFjZUluY3JlYXNlVGFzayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLmlzTnVsbCgpKTsKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvLT5yZW5hbWVPYmpl
Y3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwogCkBAIC05NTAsNiArMTA1
MiwxNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJP
YmplY3RTdG9yZSIpOwogCisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNh
Y3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJv
cikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMtPmNsZWFy
T2JqZWN0U3RvcmVBZmV0UXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmVBZmV0UXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBF
cnJvckNhbGxiYWNrIGNhbGxiYWNrKQorewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9y
ZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGlmICghY2FsbGJh
Y2tJRCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTg0LDIxICsxMDk3LDMzIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBjCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCIpOwogCisgICAgYXV0
byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoaW5m
byk7CisgICAgcmVxdWVzdFNwYWNlKHRyYW5zYWN0aW9uLCB0YXNrU2l6ZSwgImNyZWF0ZUluZGV4
IiwgW3RoaXMsIHRhc2tTaXplLCAmdHJhbnNhY3Rpb24sIGluZm8sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8gZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpICYmICplcnJvci5jb2RlKCkgIT0gUXVvdGFFeGNlZWRlZEVycm9yKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy0+Y3JlYXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodGFza1NpemUs
IHRyYW5zYWN0aW9uLCBpbmZvLCBXVEZNb3ZlKGNhbGxiYWNrKSwgZXJyb3IpOworICAgIH0pOwor
fQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEFmdGVyUXVvdGFDaGVjayh1
aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgRXJyb3JDYWxsYmFjayBjYWxsYmFjaywgY29u
c3QgSURCRXJyb3ImIHF1b3RhRXJyb3IpCit7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0
b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgaWYgKCFjYWxs
YmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlSW5k
ZXgsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsK
KyAgICBzdGFydFNwYWNlSW5jcmVhc2VUYXNrKGNhbGxiYWNrSUQsIHRhc2tTaXplKTsKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpwZXJmb3JtQ3JlYXRlSW5kZXgsIGNhbGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCksIGluZm8sIHF1b3RhRXJyb3IpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUNyZWF0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DcmVh
dGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8s
IGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q3JlYXRlSW5kZXgiKTsKIAotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRp
b25Db3N0ICsgZXN0aW1hdGVTaXplKGluZm8pOwotICAgIGlmIChtX3NlcnZlci0+cmVxdWVzdFNw
YWNlKG1fb3JpZ2luLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246
OkRlbnkpIHsKLSAgICAgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ3JlYXRlSW5kZXgsIGNh
bGxiYWNrSWRlbnRpZmllciwgSURCRXJyb3IoUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9y
TWVzc2FnZU5hbWUoIkNyZWF0ZUluZGV4IikpLCBpbmZvKSk7CisgICAgaWYgKCFxdW90YUVycm9y
LmlzTnVsbCgpKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNyZWF0ZUluZGV4
LCBjYWxsYmFja0lkZW50aWZpZXIsIHF1b3RhRXJyb3IsIGluZm8pKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTAyMyw2ICsxMTQ4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUNyZWF0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DcmVhdGVJbmRleCIpOwogCisgICAgZmluaXNo
U3BhY2VJbmNyZWFzZVRhc2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvci5pc051bGwoKSk7CisK
ICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZv
KTsKICAgICAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gbV9kYXRhYmFzZUluZm8tPmluZm9G
b3JFeGlzdGluZ09iamVjdFN0b3JlKGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpOwpAQCAt
MTAzOCw2ICsxMTY1LDE3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVJbmRleCIpOwogCisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24o
dHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11
dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy0+ZGVsZXRlSW5kZXhBZnRlclF1b3RhQ2hlY2sodHJhbnNhY3Rpb24sIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4QWZ0ZXJRdW90YUNoZWNr
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrKQorewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrT3JG
aXJlRXJyb3IoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA5MSwxMSArMTIyOSwyMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpyZW5hbWVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
dQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWlu
KSBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgiKTsKIAorICAgIGF1dG8gdGFza1NpemUg
PSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgbmV3TmFtZS5zaXplSW5CeXRlcygpOworICAg
IHJlcXVlc3RTcGFjZSh0cmFuc2FjdGlvbiwgdGFza1NpemUsICJyZW5hbWVJbmRleCIsIFt0aGlz
LCB0YXNrU2l6ZSwgJnRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRl
bnRpZmllciwgbmV3TmFtZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9yLmNvZGUo
KSAhPSBRdW90YUV4Y2VlZGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
ZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLT5y
ZW5hbWVJbmRleEFmdGVyUXVvdGFDaGVjayh0YXNrU2l6ZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgZXJyb3IpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZW5hbWVJ
bmRleEFmdGVyUXVvdGFDaGVjayh1aW50NjRfdCB0YXNrU2l6ZSwgVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
dWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIEVycm9yQ2Fs
bGJhY2sgY2FsbGJhY2ssIGNvbnN0IElEQkVycm9yJiBxdW90YUVycm9yKQorewogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrT3JGaXJlRXJyb3IoV1RGTW92ZShjYWxsYmFj
aykpOwogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSURCRXJy
b3IgZXJyb3I7CisgICAgSURCRXJyb3IgZXJyb3IgPSBxdW90YUVycm9yOwogICAgIGF1dG8qIG9i
amVjdFN0b3JlSW5mbyA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9y
ZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0U3RvcmVJbmZvKQogICAg
ICAgICBlcnJvciA9IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUg
aW5kZXggaW4gbm9uLWV4aXN0YW50IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTEwNCw2ICsxMjU0
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHUKICAgICBpZiAoIWluZGV4SW5mbykKICAgICAg
ICAgZXJyb3IgPSBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIG5v
bi1leGlzdGFudCBpbmRleCJfcyB9OwogCisgICAgc3RhcnRTcGFjZUluY3JlYXNlVGFzayhjYWxs
YmFja0lELCB0YXNrU2l6ZSk7CiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVJlbmFtZUluZGV4LCBjYWxs
YmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSwgZXJyb3IpKTsKIH0KIApAQCAtMTExMiwx
MCArMTI2Myw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1SZW5hbWVJbmRleCh1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElECiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1SZW5hbWVJbmRleCIpOwogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNr
U2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBuZXdOYW1lLnNpemVJbkJ5dGVzKCk7
Ci0gICAgaWYgKG1fc2VydmVyLT5yZXF1ZXN0U3BhY2UobV9vcmlnaW4sIHRhc2tTaXplKSA9PSBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBwb3N0RGF0YWJh
c2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFBlcmZvcm1SZW5hbWVJbmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBJREJFcnJvcihR
dW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUmVuYW1lSW5kZXgiKSks
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CisgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1S
ZW5hbWVJbmRleCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTEzMyw2ICsxMjgyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bVJlbmFtZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURC
RGF0YWJhc2U6OmRpZFBlcmZvcm1SZW5hbWVJbmRleCIpOwogCisgICAgZmluaXNoU3BhY2VJbmNy
ZWFzZVRhc2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvci5pc051bGwoKSk7CiAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IG1fZGF0YWJh
c2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKQEAgLTExNDYsMzkgKzEyOTYsNTIg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVJlbmFtZUluZGV4KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QKICAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxs
YmFja0lkZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxiYWNrIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQiKTsKIAorICAgIGF1dG8gdGFz
a1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsgZXN0aW1hdGVTaXplKGtleURhdGEp
ICsgZXN0aW1hdGVTaXplKHZhbHVlKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOworICAg
IGF1dG8qIG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVj
dFN0b3JlKHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKTsKKyAgICBpZiAob2Jq
ZWN0U3RvcmUpCisgICAgICAgIHRhc2tTaXplICs9IG9iamVjdFN0b3JlLT5pbmRleE5hbWVzKCku
c2l6ZSgpICogdGFza1NpemU7CisKKyAgICByZXF1ZXN0U3BhY2UodHJhbnNhY3Rpb24sIHRhc2tT
aXplLCAicHV0T3JBZGQiLCBbdGhpcywgdGFza1NpemUsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2
YWx1ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb3ZlcndyaXRlTW9kZV0oYXV0byBl
cnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgKmVycm9yLmNv
ZGUoKSAhPSBRdW90YUV4Y2VlZGVkRXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoZXJyb3IpLCB7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IHRoaXMtPnB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHRhc2tTaXplLCByZXF1ZXN0RGF0YSwga2V5
RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFdURk1vdmUoY2FsbGJhY2spLCBlcnJvcik7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkQWZ0ZXJRdW90YUNo
ZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSwgS2V5RGF0YUNhbGxi
YWNrIGNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYgcXVvdGFFcnJvcikKK3sKICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2
YWx1ZSwgb3ZlcndyaXRlTW9kZSkpOworICAgIHN0YXJ0U3BhY2VJbmNyZWFzZVRhc2soY2FsbGJh
Y2tJRCwgdGFza1NpemUpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJ
RCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIHJlcXVlc3REYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSwgcXVvdGFF
cnJvcikpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgb3JpZ2luYWxSZWNvcmRWYWx1
ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIGNvbnN0IElEQlZhbHVlJiBvcmlnaW5hbFJlY29yZFZhbHVlLCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBjb25zdCBJREJFcnJvciYgcXVv
dGFFcnJvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkIik7CiAKKyAgICBB
U1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIEFTU0VSVChvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworCiAgICAgSURCS2V5RGF0YSB1c2VkS2V5OwogICAgIElEQkVycm9yIGVycm9yOwogCi0gICAg
Ly8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlv
bkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkgKyBlc3RpbWF0ZVNpemUob3JpZ2luYWxSZWNv
cmRWYWx1ZSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKLSAgICBhdXRvKiBvYmplY3RT
dG9yZSA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShvYmplY3RT
dG9yZUlkZW50aWZpZXIpOwotICAgIGlmIChvYmplY3RTdG9yZSkKLSAgICAgICAgdGFza1NpemUg
Kz0gb2JqZWN0U3RvcmUtPmluZGV4TmFtZXMoKS5zaXplKCkgKiB0YXNrU2l6ZTsKLSAgICBpZiAo
bV9zZXJ2ZXItPnJlcXVlc3RTcGFjZShtX29yaWdpbiwgdGFza1NpemUpID09IFN0b3JhZ2VRdW90
YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAgIHBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9yKFF1b3RhRXhjZWVkZWRF
cnJvciwgcXVvdGFFcnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpKSwgdXNlZEtleSkpOworICAg
IGlmICghcXVvdGFFcnJvci5pc051bGwoKSkgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrUmVw
bHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBl
cmZvcm1QdXRPckFkZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBxdW90YUVycm9yLCB1c2VkS2V5KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwot
ICAgIEFTU0VSVChvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIHsKICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9iYWNraW5nU3RvcmVMb2NrKTsKICAgICAgICAgaWYgKCFtX2JhY2tpbmdT
dG9yZSkgewpAQCAtMTI1NSwxNCArMTQxOCwyNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRQZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJRAog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkIik7CiAKKyAgICBmaW5pc2hTcGFj
ZUluY3JlYXNlVGFzayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLmlzTnVsbCgpKTsKICAgICBw
ZXJmb3JtS2V5RGF0YUNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHJlc3VsdEtl
eSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERh
dGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Z2V0UmVjb3JkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEsIEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0UmVjb3JkIik7CiAKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0
cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBnZXRSZWNvcmREYXRhLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAo
IWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwg
eyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLT5nZXRS
ZWNvcmRBZnRlclF1b3RhQ2hlY2socmVxdWVzdERhdGEsIGdldFJlY29yZERhdGEsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVj
b3JkQWZ0ZXJRdW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCR2V0UmVjb3JkRGF0YSYgZ2V0UmVjb3JkRGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2Fs
bGJhY2spCit7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVF
cnJvcihXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMjczLDExICsxNDQ4LDIyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdlCiAg
ICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRSZWNvcmQsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRh
LnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSwgZ2V0UmVjb3JkRGF0YS5rZXlSYW5nZURhdGEsIGdldFJlY29yZERhdGEudHlwZSkpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJl
Y29yZHNEYXRhLCBHZXRBbGxSZXN1bHRzQ2FsbGJhY2sgY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRBbGxSZWNvcmRzKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkdl
dEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgR2V0QWxsUmVzdWx0c0NhbGxiYWNr
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4
ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0QWxsUmVjb3JkcyIpOwogCisgICAg
d2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0
RGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMtPmdldEFsbFJlY29yZHNBZnRlclF1b3RhQ2hl
Y2socmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldEFsbFJlY29yZHNBZnRlclF1
b3RhQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJHZXRB
bGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIEdldEFsbFJlc3VsdHNDYWxsYmFjayBj
YWxsYmFjaykKK3sKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmly
ZUVycm9yKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAg
IHJldHVybjsKQEAgLTEyOTEsNiArMTQ3Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBl
cmZvcm1HZXRSZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSCiAg
ICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRSZWNv
cmQiKTsKIAogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisKICAgICBJREJHZXRSZXN1bHQg
cmVzdWx0OwogICAgIElEQkVycm9yIGVycm9yOwogICAgIHsKQEAgLTEzMzEsNiArMTUxOCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRBbGxSZWNvcmRzKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QKICAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybUdldEFsbFJlY29yZHMiKTsKIAogICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZSk7CisKICAgICBJREJHZXRBbGxSZXN1bHQgcmVzdWx0OwogICAgIElEQkVycm9yIGVy
cm9yOwogICAgIHsKQEAgLTEzNDksMTEgKzE1MzcsMjIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkUGVyZm9ybUdldEFsbFJlY29yZHModWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b24KICAgICBwZXJmb3JtR2V0QWxsUmVzdWx0c0NhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwg
ZXJyb3IsIHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBy
YW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Omdl
dENvdW50KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Us
IENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudCIp
OwogCisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlz
LCByZXF1ZXN0RGF0YSwgcmFuZ2UsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
JiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpLCB7IH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHRoaXMtPmdldENvdW50QWZ0ZXJRdW90YUNoZWNrKHJlcXVl
c3REYXRhLCByYW5nZSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpnZXRDb3VudEFmdGVyUXVvdGFDaGVjayhjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIENvdW50Q2Fs
bGJhY2sgY2FsbGJhY2spCit7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJh
Y2tPckZpcmVFcnJvcihXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzg2LDExICsxNTg1LDIyIEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElECiAgICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJv
ciwgY291bnQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSZWNvcmQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZVJlY29yZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIGtleVJhbmdlRGF0YSwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZVJlY29yZCIpOwogCisgICAgd2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRp
b24odHJhbnNhY3Rpb24sIFt0aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9y
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGhpcy0+ZGVsZXRl
UmVjb3JkQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICB9KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
UmVjb3JkQWZ0ZXJRdW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCit7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJv
cihXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1
cm47CkBAIC0xNDE5LDExICsxNjI5LDIyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBl
cmZvcm1EZWxldGVSZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zCiAgICAg
cGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBj
YWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERC
LCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yIik7CiAKKyAgICB3YWl0Rm9y
UmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBp
bmZvLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUg
eworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGVycm9yKSwgeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICB0aGlzLT5vcGVuQ3Vyc29yQWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBpbmZvLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
Om9wZW5DdXJzb3JBZnRlclF1b3RhQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFj
aykKK3sKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9y
KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NTMsMTEgKzE2NzQsMjIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybU9wZW5DdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdAogICAgIHBl
cmZvcm1HZXRSZXN1bHRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCByZXN1bHQp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEs
IEdldFJlc3VsdENhbGxiYWNrIGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRl
cmF0ZUN1cnNvcihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNl
OjppdGVyYXRlQ3Vyc29yIik7CiAKKyAgICB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0
cmFuc2FjdGlvbiwgW3RoaXMsIHJlcXVlc3REYXRhLCBkYXRhLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGVycm9yKSwgeyB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLT5pdGVyYXRlQ3Vyc29y
QWZ0ZXJRdW90YUNoZWNrKHJlcXVlc3REYXRhLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3JBZnRlclF1
b3RhQ2hlY2soY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYgZGF0YSwgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit7CiAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2tPckZpcmVFcnJvcihXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47CkBAIC0xNTM1
LDYgKzE3NjcsMTcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKIAogICAgIEFTU0VSVCh0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpID09IHRoaXMpOwogCisgICAg
d2FpdEZvclJlcXVlc3RTcGFjZUNvbXBsZXRpb24odHJhbnNhY3Rpb24sIFt0aGlzLCAmdHJhbnNh
Y3Rpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBlcnJvcikgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzLT5jb21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayh0cmFuc2FjdGlvbiwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgIH0pOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
b21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3sKICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OTIsMTMgKzE4
MzUsMjQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRl
ZChtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2FpdEZvclBlbmRpbmdUYXNrcyB3YWl0Rm9yUGVu
ZGluZ1Rhc2tzLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6
YWJvcnRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQodHJhbnNhY3Rpb24u
ZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKSA9PSB0aGlzKTsKIAorICAgIGlmICh3YWl0
Rm9yUGVuZGluZ1Rhc2tzID09IFdhaXRGb3JQZW5kaW5nVGFza3M6OlllcykgeworICAgICAgICB3
YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsICZ0cmFuc2Fj
dGlvbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGVycm9yKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhpcy0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwg
V2FpdEZvclBlbmRpbmdUYXNrczo6Tm8sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3Rv
cmVDYWxsYmFja09yRmlyZUVycm9yKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBpZiAoIWNhbGxi
YWNrSUQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggZWJmYzFj
NTBmN2E4ODA4OWVlNmJmMjRjYjY5NTc0NDk5ODgwOTM4MC4uYzM1OGRlNDkzNDc2YjQ0MTNkZTQy
Y2E2NDExNjIzNDU3NmVlNmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTQ0LDcgKzQ0
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQ2xpZW50T3JpZ2luOwogY2xh
c3MgSURCRXJyb3I7CiBjbGFzcyBJREJHZXRBbGxSZXN1bHQ7CiBzdHJ1Y3QgSURCR2V0UmVjb3Jk
RGF0YTsKQEAgLTkwLDE1ICs4OSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVJbmRleChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JD
YWxsYmFjayk7CiAgICAgdm9pZCBkZWxldGVJbmRleChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4
TmFtZSwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCByZW5hbWVJbmRleChVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjayk7
Ci0gICAgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURh
dGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
LCBLZXlEYXRhQ2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKLSAgICB2
b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxS
ZWNvcmRzRGF0YSYsIEdldEFsbFJlc3VsdHNDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXRDb3VudChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJh
Y2spOwotICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBvcGVuQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxi
YWNrKTsKLSAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKKyAgICB2b2lkIHB1
dE9yQWRkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2spOworICAgIHZvaWQgZ2V0UmVjb3Jk
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQkdldFJlY29yZERhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7CisgICAgdm9pZCBnZXRB
bGxSZWNvcmRzKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgR2V0QWxsUmVzdWx0c0NhbGxiYWNr
KTsKKyAgICB2b2lkIGdldENvdW50KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2sp
OworICAgIHZvaWQgZGVsZXRlUmVjb3JkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEVycm9yQ2FsbGJh
Y2spOworICAgIHZvaWQgb3BlbkN1cnNvcihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2Fs
bGJhY2spOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYs
IEdldFJlc3VsdENhbGxiYWNrKTsKICAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGFib3J0VHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwor
CisgICAgZW51bSBjbGFzcyBXYWl0Rm9yUGVuZGluZ1Rhc2tzIHsgTm8sIFllcyB9OworICAgIHZv
aWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgV2FpdEZv
clBlbmRpbmdUYXNrcywgRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCB0cmFu
c2FjdGlvbkRlc3Ryb3llZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0xMzks
MjAgKzE0MCwzNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVNodXRkb3duRm9yQ2xv
c2UoKTsKIAorICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0
X3QgdGFza1NpemUsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNrLCBjb25zdCBJREJFcnJvciYpOworICAgIHZvaWQg
cmVuYW1lT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2sodWludDY0X3QgdGFza1NpemUsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsK
KyAgICB2b2lkIGNyZWF0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCSW5kZXhJbmZvJiwgRXJyb3JD
YWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIHJlbmFtZUluZGV4QWZ0ZXJRdW90
YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgRXJyb3JDYWxsYmFjaywgY29uc3QgSURCRXJyb3ImKTsK
KyAgICB2b2lkIHB1dE9yQWRkQWZ0ZXJRdW90YUNoZWNrKHVpbnQ2NF90IHRhc2tTaXplLCBjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYsIElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2ssIGNvbnN0
IElEQkVycm9yJik7CisgICAgdm9pZCBkZWxldGVSZWNvcmRBZnRlclF1b3RhQ2hlY2soY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsK
KworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVBZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBFcnJvckNh
bGxiYWNrKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVBZmV0UXVvdGFDaGVjayhVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBF
cnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4QWZ0ZXJRdW90YUNoZWNrKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYsIEVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgZ2V0UmVjb3JkQWZ0ZXJR
dW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCR2V0UmVjb3JkRGF0YSYs
IEdldFJlc3VsdENhbGxiYWNrKTsKKyAgICB2b2lkIGdldEFsbFJlY29yZHNBZnRlclF1b3RhQ2hl
Y2soY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIEdl
dEFsbFJlc3VsdHNDYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb3VudEFmdGVyUXVvdGFDaGVjayhj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJh
Y2spOworICAgIHZvaWQgb3BlbkN1cnNvckFmdGVyUXVvdGFDaGVjayhjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mLCBHZXRSZXN1bHRDYWxsYmFjayk7CisgICAgdm9p
ZCBpdGVyYXRlQ3Vyc29yQWZ0ZXJRdW90YUNoZWNrKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7CisgICAgdm9pZCBj
b21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiwgRXJyb3JDYWxsYmFjayk7CisKICAgICAvLyBEYXRhYmFzZSB0aHJlYWQgb3BlcmF0aW9u
cwogICAgIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYpOwotICAgIHZvaWQgb3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKKyAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgcGVyZm9ybUNvbW1pdFRy
YW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgcGVyZm9ybUFib3J0
VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBiZWdpblRyYW5z
YWN0aW9uSW5CYWNraW5nU3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7Ci0gICAgdm9p
ZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJik7CisgICAgdm9pZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3Qg
SURCRXJyb3ImKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
cGVyZm9ybVJlbmFtZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBjb25zdCBJREJF
cnJvciYpOwogICAgIHZvaWQgcGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB2b2lkIHBlcmZv
cm1DcmVhdGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJJbmRleEluZm8m
KTsKKyAgICB2b2lkIHBlcmZvcm1DcmVhdGVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJJbmRleEluZm8mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgcGVyZm9ybURl
bGV0ZUluZGV4KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKTsKICAgICB2b2lkIHBlcmZvcm1SZW5h
bWVJbmRleCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBj
b25zdCBJREJFcnJvciYpOwotICAgIHZvaWQgcGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IElEQlZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUp
OworICAgIHZvaWQgcGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZh
bHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIGNvbnN0IElEQkVycm9y
Jik7CiAgICAgdm9pZCBwZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURC
R2V0UmVjb3JkRGF0YVR5cGUpOwogICAgIHZvaWQgcGVyZm9ybUdldEFsbFJlY29yZHModWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmKTsKICAgICB2b2lk
IHBlcmZvcm1HZXRJbmRleFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwpAQCAtMTY5LDcgKzE4
Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNYWluIHRocmVhZCBjYWxsYmFja3MKICAgICB2b2lk
IGRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbik7Ci0gICAgdm9p
ZCBkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYsIGNvbnN0IElEQkVy
cm9yJik7CisgICAgdm9pZCBkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYsIGNvbnN0IElEQkVycm9yJiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkUGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKICAgICB2b2lkIGRp
ZFBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB2b2lk
IGRpZFBlcmZvcm1SZW5hbWVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpOwpAQCAtMjI4LDYgKzI0NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
bWF5YmVGaW5pc2hIYXJkQ2xvc2UoKTsKICAgICBib29sIGlzRG9uZVdpdGhIYXJkQ2xvc2UoKTsK
IAorICAgIHZvaWQgcmVxdWVzdFNwYWNlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1
aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElEQkVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3BhY2VD
b21wbGV0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElEQkVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHN0YXJ0U3BhY2VJbmNyZWFzZVRhc2so
dWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgdGFza1NpemUpOworICAgIHZvaWQgZmluaXNo
U3BhY2VJbmNyZWFzZVRhc2sodWludDY0X3QgaWRlbnRpZmllciwgYm9vbCBpc1Rhc2tTdWNjZXNz
ZnVsKTsKKwogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7CiAKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVVbmlx
dWVDYWxsYmFja0lkZW50aWZpZXIoKTsKQEAgLTI4OCw5ICszMTEsOSBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaFNldDxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG1fY3Vyc29yUHJlZmV0Y2hlczsKIAot
ICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
dWludDY0X3Q+IG1fcGVuZGluZ1NwYWNlSW5jcmVhc2VUYXNrczsKIAotICAgIENsaWVudE9yaWdp
biBtX29yaWdpbjsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uY3BwCmluZGV4IDgwMDYwNjk4ODM0NGYxYjM5YjhiOWZiYzE5OTk4MjFkODI2MjFiODUu
LmZlOTEwZmFmOTg0OWRjMmIwNDdlYmE5N2FlNTY2NTc5ZmQxM2QyMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjphYm9ydFRyYW5zYWN0aW9uV2l0aG91dENhbGxi
YWNrKFVuaXF1ZUlEQkRhdGFiCiAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgbV9kYXRhYmFzZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0oY29uc3QgSURCRXJyb3Im
KSB7CisgICAgbV9kYXRhYmFzZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgVW5pcXVl
SURCRGF0YWJhc2U6OldhaXRGb3JQZW5kaW5nVGFza3M6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhp
cywgdHJhbnNhY3Rpb25JZGVudGlmaWVyXShjb25zdCBJREJFcnJvciYpIHsKICAgICAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb25NYXAuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25NYXAucmVtb3ZlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggNzZlZGRjNDViMDc2YmUzZTY5NzI4NDVkMTFlMjE1MGI2ZjA3ZDg2NC4uYThkMmJkYzc0MGM4
OTcxYTVhN2MwNGU3NmMwMzI5YjQ3NmFkYzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmFib3J0KCkKICAgICBhdXRvIGRhdGFiYXNlID0gbV9kYXRhYmFz
ZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAotICAgIGRh
dGFiYXNlLT5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldKGF1dG8mIGVycm9yKSB7CisgICAgZGF0YWJhc2UtPmFib3J0VHJhbnNhY3Rp
b24oKnRoaXMsIFVuaXF1ZUlEQkRhdGFiYXNlOjpXYWl0Rm9yUGVuZGluZ1Rhc2tzOjpZZXMsIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byYgZXJyb3IpIHsKICAgICAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmFib3J0IChj
YWxsYmFjaykiKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OnB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgYwogICAgIGF1dG8gZGF0
YWJhc2UgPSBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKTsKICAgICBBU1NFUlQoZGF0
YWJhc2UpOwogICAgIAotICAgIGRhdGFiYXNlLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcmVxdWVzdERhdGFdKGF1dG8mIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsK
KyAgICBkYXRhYmFzZS0+cHV0T3JBZGQoKnRoaXMsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1
ZSwgb3ZlcndyaXRlTW9kZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBy
ZXF1ZXN0RGF0YV0oYXV0byYgZXJyb3IsIGNvbnN0IElEQktleURhdGEmIGtleSkgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6cHV0T3JBZGQg
KGNhbGxiYWNrKSIpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAgICBhdXRvIGRh
dGFiYXNlID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJUKGRh
dGFiYXNlKTsKICAgICAKLSAgICBkYXRhYmFzZS0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBnZXRS
ZWNvcmREYXRhLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RE
YXRhXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAgICBkYXRh
YmFzZS0+Z2V0UmVjb3JkKCp0aGlzLCByZXF1ZXN0RGF0YSwgZ2V0UmVjb3JkRGF0YSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0RGF0YV0oYXV0byYgZXJyb3Is
IGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQgKGNhbGxiYWNrKSIpOwogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkcyhjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhCiAgICAgYXV0byBkYXRhYmFzZSA9IG1fZGF0YWJh
c2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAgICAgCi0g
ICAgZGF0YWJhc2UtPmdldEFsbFJlY29yZHMocmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRh
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3REYXRhXShhdXRv
JiBlcnJvciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIHsKKyAgICBkYXRhYmFzZS0+
Z2V0QWxsUmVjb3JkcygqdGhpcywgcmVxdWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3REYXRhXShhdXRvJiBlcnJv
ciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWRE
QiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHMgKGNhbGxiYWNr
KSIpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjCiAgICAgYXV0byBkYXRhYmFzZSA9
IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7
CiAgICAgCi0gICAgZGF0YWJhc2UtPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEs
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdERhdGFdKGF1dG8m
IGVycm9yLCB1aW50NjRfdCBjb3VudCkgeworICAgIGRhdGFiYXNlLT5nZXRDb3VudCgqdGhpcywg
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCByZXF1ZXN0RGF0YV0oYXV0byYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CiAgICAg
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3Vu
dCAoY2FsbGJhY2spIik7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXQKICAgICBhdXRv
IGRhdGFiYXNlID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJU
KGRhdGFiYXNlKTsKICAgICAKLSAgICBkYXRhYmFzZS0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGEsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVx
dWVzdERhdGFdKGF1dG8mIGVycm9yKSB7CisgICAgZGF0YWJhc2UtPmRlbGV0ZVJlY29yZCgqdGhp
cywgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCByZXF1ZXN0RGF0YV0oYXV0byYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4
ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZCAoY2FsbGJh
Y2spIik7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
OTEsNyArMzkxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwKICAgICBhdXRvIGRhdGFiYXNl
ID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJUKGRhdGFiYXNl
KTsKICAgICAKLSAgICBkYXRhYmFzZS0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbywgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0RGF0YV0oYXV0byYgZXJy
b3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAgZGF0YWJhc2UtPm9wZW5DdXJz
b3IoKnRoaXMsIHJlcXVlc3REYXRhLCBpbmZvLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHJlcXVlc3REYXRhXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiBy
ZXN1bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246Om9wZW5DdXJzb3IgKGNhbGxiYWNrKSIpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhCiAgICAgYXV0byBkYXRhYmFzZSA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFz
ZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAgICAgCi0gICAgZGF0YWJhc2UtPml0ZXJhdGVD
dXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgcmVxdWVzdERhdGFdKGF1dG8mIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3Vs
dCkgeworICAgIGRhdGFiYXNlLT5pdGVyYXRlQ3Vyc29yKCp0aGlzLCByZXF1ZXN0RGF0YSwgZGF0
YSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0RGF0YV0oYXV0
byYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CiAgICAgICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yIChjYWxs
YmFjaykiKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggZDY1YmQ1YTc2NzJhMzgwNTY3MTZkMzZhNWNj
YjEzOGY5MWIzMWE5My4uOTExMWY1OTc4ZTNiODA2MTg1NWMyMGY1YWZhYTViNjU1ZGNjZWEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTY0LDM1ICs2NCwzMCBAQCBJblByb2Nl
c3NJREJTZXJ2ZXI6On5JblByb2Nlc3NJREJTZXJ2ZXIoKSA9IGRlZmF1bHQ7CiBTdG9yYWdlUXVv
dGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmln
aW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmNyZWF0ZShTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10gewotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0sIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2Us
IHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVm
YXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVp
bnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAgICAgICAgIH0pOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotc3RhdGljIGlubGluZSBJREJTZXJ2
ZXI6OklEQlNlcnZlcjo6U3RvcmFnZVF1b3RhTWFuYWdlclNwYWNlUmVxdWVzdGVyIHN0b3JhZ2VR
dW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcihJblByb2Nlc3NJREJTZXJ2ZXImIHNlcnZlcikKK3N0
YXRpYyBpbmxpbmUgSURCU2VydmVyOjpJREJTZXJ2ZXI6OlF1b3RhTWFuYWdlckdldHRlciBzdG9y
YWdlUXVvdGFNYW5hZ2VyR2V0dGVyKEluUHJvY2Vzc0lEQlNlcnZlciYgc2VydmVyKQogewotICAg
IHJldHVybiBbc2VydmVyID0gJnNlcnZlciwgd2Vha1NlcnZlciA9IG1ha2VXZWFrUHRyKHNlcnZl
cildKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHN0b3JhZ2VRdW90YU1hbmFnZXIgPSB3ZWFrU2VydmVy
ID8gc2VydmVyLT5xdW90YU1hbmFnZXIob3JpZ2luKSA6IG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biBzdG9yYWdlUXVvdGFNYW5hZ2VyID8gc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNl
T25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKSA6IFN0b3JhZ2VRdW90YU1hbmFnZXI6
OkRlY2lzaW9uOjpEZW55OworICAgIHJldHVybiBbd2Vha1NlcnZlciA9IG1ha2VXZWFrUHRyKHNl
cnZlcildKFBBTDo6U2Vzc2lvbklELCBjb25zdCBhdXRvJiBvcmlnaW4pIHsKKyAgICAgICAgcmV0
dXJuIHdlYWtTZXJ2ZXIgPyB3ZWFrU2VydmVyLT5xdW90YU1hbmFnZXIob3JpZ2luKSA6IG51bGxw
dHI7CiAgICAgfTsKIH0KIAogSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJT
ZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3Rl
cigqdGhpcykpKQorICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShz
ZXNzaW9uSUQsIHN0b3JhZ2VRdW90YU1hbmFnZXJHZXR0ZXIoKnRoaXMpKSkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAg
IG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmNyZWF0ZSgqdGhpcyk7CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogSW5Qcm9jZXNzSURCU2Vy
dmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKLSAgICA6IG1fc2VydmVyKElEQlNlcnZlcjo6
SURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIHN0b3Jh
Z2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlcigqdGhpcykpKQorICAgIDogbV9zZXJ2ZXIoSURC
U2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgc3RvcmFnZVF1b3RhTWFuYWdlckdldHRlcigqdGhpcykpKQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXIgPSBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRl
KCp0aGlzKTsKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVj
dGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4
IDhlNzM2YTc4MDkxOTFlNDM3Yjg2M2MzZGJkZGEyYWI0OGVlMDY1ZGUuLmM3YjUzMjFjYTM2MWM3
NDFlNTJkNDVlYzE4YTgzMThmYWQwODI5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAg
LTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uVG9TZXJ2ZXIoKSBjb25zdDsKICAgICBJREJT
ZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3Q7
CiAgICAgSURCU2VydmVyOjpJREJTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdl
dCgpOyB9CisKICAgICBJREJTZXJ2ZXI6OklEQlNlcnZlciYgaWRiU2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXIuZ2V0KCk7IH0KIAogICAgIC8vIElEQkNvbm5lY3Rpb25Ub1NlcnZlcgpAQCAtMTM0
LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyPiBtX2Nvbm5lY3Rpb25Ub1NlcnZlcjsKICAgICBSZWZQdHI8SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQ+IG1fY29ubmVjdGlvblRvQ2xpZW50OwogCi0gICAgSGFzaE1h
cDxDbGllbnRPcmlnaW4sIFJlZlB0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9xdW90YU1hbmFn
ZXJzOworICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZVF1
b3RhTWFuYWdlcj4+IG1fcXVvdGFNYW5hZ2VyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmYzBjNjI4YTNmZjAzNjUzOWRhODczOTg4NzliMmU3ZTUzODkwNzg5Li4zYzcxZGQw
NzMxYzA4MzY0MjM3MGRkNzRkMmM1ZTljM2IyNmU3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTI5LDYgKzExMjksNyBA
QAogCQk0MUQyOEQwRDIxMzlFMDU4MDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMjhE
MEIyMTM5RTAxRDAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCAqLzsgfTsK
IAkJNDFENDFDNjcyMjU2ODc0RjAwNjk3OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ0MUM2NTIy
NTY4NTkyMDA2OTc5NDIgLyogU2VydmljZVdvcmtlckludGVybmFscy5tbSAqLzsgfTsKIAkJNDFE
RTdDN0MyMjJEQTE0MzAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREU3QzdCMjIyREExM0UwMDUz
MkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFERTdDN0QyMjJEQTE0ODAwNTMyQjY1IC8qIFN0b3Jh
Z2VRdW90YVVzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxREU3Qzc4MjIyREExM0MwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFVc2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUZDQjYxRTU2
QzFCRDAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUZDQjQxRTU2QzFCOTAwMEQ5RTVGIC8qIEpTRE9NTWFw
TGlrZS5oICovOyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTFC
MUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovOyB9OwogCQk0MUU5RENF
NzIzMTk3NEJGMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURDRTQyMzE5NzNGRTAwRjM1OTQ5IC8qIEJsb2JM
b2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNzQ2NCw2ICs3NDY1LDcgQEAKIAkJNDFEMjhEMEMyMTM5RTAxRTAwRjQyMDZGIC8qIExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExp
YldlYlJUQ1N0YXRzQ29sbGVjdG9yLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDU3RhdHND
b2xsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENDFDNjUyMjU2ODU5
MjAwNjk3OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ1MUJCMjFFNEUyRTgxMDAxMzFBNUIgLyogTGliV2Vi
UlRDQXVkaW9Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2Vi
UlRDQXVkaW9Gb3JtYXQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb0Zvcm1hdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MURFN0M3ODIyMkRBMTNDMDA1MzJCNjUg
LyogU3RvcmFnZVF1b3RhVXNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlUXVvdGFVc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREU3QzdB
MjIyREExM0QwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MURFN0M3QjIyMkRBMTNFMDA1MzJCNjUgLyogU3RvcmFn
ZVF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdl
UXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREVGQ0IyMUU1
NkMxQjkwMDBEOUU1RiAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBKU0RPTUJpbmRpbmdJbnRlcm5hbHMuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA5OSw2ICsxNzEwMSw3IEBACiAJCQkJMUEzNzYz
NkExQTJFNjhCQjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oICovLAogCQkJ
CTQxREU3QzdBMjIyREExM0QwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcCAqLywK
IAkJCQk0MURFN0M3QjIyMkRBMTNFMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdlci5oICov
LAorCQkJCTQxREU3Qzc4MjIyREExM0MwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFVc2VyLmggKi8s
CiAJCQkJNTE2NkQzQ0MxRThFRDQxMTAwQUQ2MkUzIC8qIFN0b3JhZ2VUeXBlLmggKi8sCiAJCQkp
OwogCQkJaW5kZW50V2lkdGggPSA0OwpAQCAtMzIyMTYsNiArMzIyMTksNyBAQAogCQkJCUM1MEQw
RTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTM3NjM2QzFBMkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFN0M3QzIyMkRBMTQzMDA1MzJCNjUgLyogU3RvcmFn
ZVF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFERTdDN0QyMjJEQTE0ODAwNTMy
QjY1IC8qIFN0b3JhZ2VRdW90YVVzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDOUVGMkYzMjFG
MDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTY2RDNDRDFFOEVENDhGMDBBRDYyRTMgLyogU3RvcmFnZVR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
UXVvdGFNYW5hZ2VyLmNwcAppbmRleCAwYzYxM2QxYTcyZGZlYTY1OWNiMmU3MWE4MjBhYWFiNjA5
YWE5NjE1Li44NTI1NzUyZTYzMzQ3OTUzMGVmMTRlY2I3NGY4NWJhZjY4ZDljNTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKQEAgLTI3LDEy
MCArMjcsMjEzIEBACiAjaW5jbHVkZSAiU3RvcmFnZVF1b3RhTWFuYWdlci5oIgogCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgorI2luY2x1
ZGUgIlN0b3JhZ2VRdW90YVVzZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3Rv
cmFnZVF1b3RhTWFuYWdlcj4gU3RvcmFnZVF1b3RhTWFuYWdlcjo6Y3JlYXRlKHVpbnQ2NF90IHF1
b3RhLCBVc2FnZUdldHRlciYmIHVzYWdlR2V0dGVyLCBRdW90YUluY3JlYXNlUmVxdWVzdGVyJiYg
cXVvdGFJbmNyZWFzZVJlcXVlc3RlcikKK1N0b3JhZ2VRdW90YU1hbmFnZXI6On5TdG9yYWdlUXVv
dGFNYW5hZ2VyKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlUXVvdGFNYW5h
Z2VyKHF1b3RhLCBXVEZNb3ZlKHVzYWdlR2V0dGVyKSwgV1RGTW92ZShxdW90YUluY3JlYXNlUmVx
dWVzdGVyKSkpOworICAgIHdoaWxlICghbV9wZW5kaW5nUmVxdWVzdHMuaXNFbXB0eSgpKQorICAg
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlRmlyc3QoKS5jYWxsYmFjayhEZWNpc2lvbjo6RGVu
eSk7CiB9CiAKLVN0b3JhZ2VRdW90YU1hbmFnZXI6OlN0b3JhZ2VRdW90YU1hbmFnZXIodWludDY0
X3QgcXVvdGEsIFVzYWdlR2V0dGVyJiYgdXNhZ2VHZXR0ZXIsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0
ZXImJiBxdW90YUluY3JlYXNlUmVxdWVzdGVyKQotICAgIDogbV9xdW90YShxdW90YSkKLSAgICAs
IG1fdXNhZ2VHZXR0ZXIoV1RGTW92ZSh1c2FnZUdldHRlcikpCi0gICAgLCBtX3F1b3RhSW5jcmVh
c2VSZXF1ZXN0ZXIoV1RGTW92ZShxdW90YUluY3JlYXNlUmVxdWVzdGVyKSkKLSAgICAsIG1fd29y
a1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTdG9yYWdlUXVvdGFNYW5hZ2VyIEJhY2tncm91bmQg
UXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkpCi0gICAgLCBtX2luaXRpYWxRdW90YShx
dW90YSkKK3VpbnQ2NF90IFN0b3JhZ2VRdW90YU1hbmFnZXI6OnNwYWNlVXNhZ2UoKSBjb25zdAog
eworICAgIHVpbnQ2NF90IHVzYWdlID0gMDsKKyAgICBmb3IgKGF1dG8mIHVzZXIgOiBtX3VzZXJz
KQorICAgICAgICB1c2FnZSArPSB1c2VyLT5zcGFjZVVzZWQoKTsKKyAgICByZXR1cm4gdXNhZ2U7
CiB9CiAKLXZvaWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25NYWluVGhyZWFk
KHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBSZXF1ZXN0Q2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6dXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZSgpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fcXVvdGEpCisgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEZhc3QgcGF0aC4KLSAgICBpZiAobV9xdW90YUNvdW50RG93bkxv
Y2sudHJ5TG9jaygpKSB7Ci0gICAgICAgIGlmICh0cnlHcmFudFJlcXVlc3Qoc3BhY2VSZXF1ZXN0
ZWQpKSB7Ci0gICAgICAgICAgICBtX3F1b3RhQ291bnREb3duTG9jay51bmxvY2soKTsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKERlY2lzaW9uOjpHcmFudCk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBkZWZhdWx0UXVvdGFTdGVwID0gbV9xdW90YSAvIDEwOworICAgIG1fcXVvdGEgPSBz
dGQ6Om1heChtX3F1b3RhLCBkZWZhdWx0UXVvdGFTdGVwICogKChzcGFjZVVzYWdlKCkgLyBkZWZh
dWx0UXVvdGFTdGVwKSArIDEpKTsKK30KKwordm9pZCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjppbml0
aWFsaXplVXNlcnNJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fcGVuZGluZ0luaXRpYWxpemF0aW9u
VXNlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RvcmFnZVF1
b3RhVXNlcio+IHVzZXJzVG9Jbml0aWFsaXplOworICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBt
X3BlbmRpbmdJbml0aWFsaXphdGlvblVzZXJzKSB7CisgICAgICAgIGlmIChrZXlWYWx1ZS52YWx1
ZSA9PSBXaGVuSW5pdGlhbGl6ZWRDYWxsZWQ6Ok5vKSB7CisgICAgICAgICAgICBrZXlWYWx1ZS52
YWx1ZSA9IFdoZW5Jbml0aWFsaXplZENhbGxlZDo6WWVzOworICAgICAgICAgICAgdXNlcnNUb0lu
aXRpYWxpemUuYXBwZW5kKGtleVZhbHVlLmtleSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9xdW90
YUNvdW50RG93bkxvY2sudW5sb2NrKCk7CiAgICAgfQotCi0gICAgbV93b3JrUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNwYWNlUmVxdWVzdGVk
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBhdXRv
IGRlY2lzaW9uID0gcmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVk
KTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgZGVjaXNpb25dKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhkZWNpc2lvbik7
Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGZvciAoYXV0byogdXNlciA6IHVzZXJzVG9Jbml0
aWFsaXplKSB7CisgICAgICAgIGlmIChtX3BlbmRpbmdJbml0aWFsaXphdGlvblVzZXJzLmNvbnRh
aW5zKHVzZXIpKQorICAgICAgICAgICAgYXNrVXNlclRvSW5pdGlhbGl6ZSgqdXNlcik7CisgICAg
fQogfQogCi1TdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpyZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQodWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQp
Cit2b2lkIFN0b3JhZ2VRdW90YU1hbmFnZXI6OmFza1VzZXJUb0luaXRpYWxpemUoU3RvcmFnZVF1
b3RhVXNlciYgdXNlcikKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICB1c2Vy
LndoZW5Jbml0aWFsaXplZChbdGhpcywgJnVzZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9xdW90YUNvdW50RG93bkxvY2spOworICAgICAgICBpZiAo
bV9wZW5kaW5nSW5pdGlhbGl6YXRpb25Vc2Vycy5yZW1vdmUoJnVzZXIpKQorICAgICAgICAgICAg
bV91c2Vycy5hZGQoJnVzZXIpOwogCi0gICAgaWYgKHRyeUdyYW50UmVxdWVzdChzcGFjZVJlcXVl
c3RlZCkpCi0gICAgICAgIHJldHVybiBEZWNpc2lvbjo6R3JhbnQ7CisgICAgICAgIGlmICghbV9w
ZW5kaW5nSW5pdGlhbGl6YXRpb25Vc2Vycy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICBtX3VzYWdlID0gbV91c2FnZUdldHRlcigpOwotICAgIHVwZGF0ZVF1b3RhQmFzZWRP
blVzYWdlKCk7Ci0gICAgbV9xdW90YUNvdW50RG93biA9IG1fdXNhZ2UgPCBtX3F1b3RhID8gbV9x
dW90YSAtIG1fdXNhZ2UgOiAwOwotICAgIGlmICh0cnlHcmFudFJlcXVlc3Qoc3BhY2VSZXF1ZXN0
ZWQpKQotICAgICAgICByZXR1cm4gRGVjaXNpb246OkdyYW50OworICAgICAgICAvLyBNYWtlIHN1
cmUgcXVvdGEgaXMgc2V0IGJlZm9yZSBoYW5kbGluZyBmaXJzdCByZXF1ZXN0LgorICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6VW5pbml0aWFsaXplZCkgeworICAgICAgICAgICAgdXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZSgpOworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpN
YWtpbmdEZWNpc2lvbkZvclJlcXVlc3Q7CisgICAgICAgIH0KIAotICAgIC8vIEJsb2NrIHRoaXMg
dGhyZWFkIHVudGlsIGdldHRpbmcgZGVjc2lvbiBmb3IgcXVvdGEgaW5jcmVhc2UuCi0gICAgQmlu
YXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNwYWNlUmVxdWVzdGVkLCAmc2VtYXBob3JlXSgp
IG11dGFibGUgewotICAgICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBTdG9yYWdlUXVv
dGFNYW5hZ2VyIGFza3MgZm9yIHF1b3RhIGluY3JlYXNlICUiIFBSSXU2NCwgdGhpcywgc3BhY2VS
ZXF1ZXN0ZWQpOwotICAgICAgICBtX3F1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIobV9xdW90YSwgbV91
c2FnZSwgc3BhY2VSZXF1ZXN0ZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgJnNlbWFwaG9yZV0oT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAtIFN0b3JhZ2VRdW90
YU1hbmFnZXIgcmVjZWl2ZXMgcXVvdGEgaW5jcmVhc2UgcmVzcG9uc2UgJSIgUFJJdTY0LCB0aGlz
LCBuZXdRdW90YSA/ICpuZXdRdW90YSA6IDApOwotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgcHJvY2Vzc1BlbmRpbmdSZXF1ZXN0cyh7IH0pOworICAgIH0pOwor
fQogCi0gICAgICAgICAgICBpZiAobmV3UXVvdGEpCi0gICAgICAgICAgICAgICAgbV9xdW90YSA9
ICpuZXdRdW90YTsKK3ZvaWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6YWRkVXNlcihTdG9yYWdlUXVv
dGFVc2VyJiB1c2VyKQoreworICAgIEFTU0VSVCghbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25Vc2Vy
cy5jb250YWlucygmdXNlcikpOworICAgIEFTU0VSVCghbV91c2Vycy5jb250YWlucygmdXNlcikp
OworICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uVXNlcnMuYWRkKCZ1c2VyLCBXaGVuSW5pdGlh
bGl6ZWRDYWxsZWQ6Ok5vKTsKIAotICAgICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKKyAgICBpZiAoIW1fcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkK
KyAgICAgICAgYXNrVXNlclRvSW5pdGlhbGl6ZSh1c2VyKTsKK30KIAotICAgIHNlbWFwaG9yZS53
YWl0KCk7Citib29sIFN0b3JhZ2VRdW90YU1hbmFnZXI6OnNob3VsZEFza0Zvck1vcmVTcGFjZSh1
aW50NjRfdCBzcGFjZUluY3JlYXNlKSBjb25zdAoreworICAgIGlmICghc3BhY2VJbmNyZWFzZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91c2FnZSA9IG1fdXNhZ2VHZXR0ZXIoKTsK
LSAgICBtX3F1b3RhQ291bnREb3duID0gbV91c2FnZSA8IG1fcXVvdGEgPyBtX3F1b3RhIC0gbV91
c2FnZSA6IDA7Ci0gICAgcmV0dXJuIHRyeUdyYW50UmVxdWVzdChzcGFjZVJlcXVlc3RlZCkgPyBE
ZWNpc2lvbjo6R3JhbnQgOiBEZWNpc2lvbjo6RGVueTsKKyAgICByZXR1cm4gc3BhY2VVc2FnZSgp
ICsgc3BhY2VJbmNyZWFzZSA+IG1fcXVvdGE7CiB9CiAKLWJvb2wgU3RvcmFnZVF1b3RhTWFuYWdl
cjo6dHJ5R3JhbnRSZXF1ZXN0KHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKQordm9pZCBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpyZW1vdmVVc2VyKFN0b3JhZ2VRdW90YVVzZXImIHVzZXIpCiB7Ci0gICAg
QVNTRVJUKG1fcXVvdGFDb3VudERvd25Mb2NrLmlzTG9ja2VkKCkpOwotICAgIGlmIChzcGFjZVJl
cXVlc3RlZCA8PSBtX3F1b3RhQ291bnREb3duKSB7Ci0gICAgICAgIG1fcXVvdGFDb3VudERvd24g
LT0gc3BhY2VSZXF1ZXN0ZWQ7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIEFTU0VSVChtX3Vz
ZXJzLmNvbnRhaW5zKCZ1c2VyKSB8fCBtX3BlbmRpbmdJbml0aWFsaXphdGlvblVzZXJzLmNvbnRh
aW5zKCZ1c2VyKSk7CisgICAgbV91c2Vycy5yZW1vdmUoJnVzZXIpOworICAgIGlmIChtX3BlbmRp
bmdJbml0aWFsaXphdGlvblVzZXJzLnJlbW92ZSgmdXNlcikgJiYgbV9wZW5kaW5nSW5pdGlhbGl6
YXRpb25Vc2Vycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gV2hlbiBiZWluZyBjbGVhcmVkLCBx
dW90YSB1c2VycyBtYXkgcmVtb3ZlIHRoZW1zZWx2ZXMgYW5kIGFkZCB0aGVtc2VsdmVzIHRvIHRy
aWdnZXIgcmVpbml0aWFsaXphdGlvbi4KKyAgICAgICAgLy8gTGV0J3Mgd2FpdCBmb3IgYWRkVXNl
ciB0byBiZSBjYWxsZWQgYmVmb3JlIHByb2Nlc3NpbmcgcGVuZGluZyByZXF1ZXN0cy4KKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0g
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChtX3BlbmRpbmdJbml0aWFsaXphdGlvblVzZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICB0aGlzLT5wcm9jZXNzUGVuZGluZ1JlcXVlc3RzKHsgfSk7CisgICAg
ICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAgCi12b2lkIFN0b3JhZ2VR
dW90YU1hbmFnZXI6OnVwZGF0ZVF1b3RhQmFzZWRPblVzYWdlKCkKKwordm9pZCBTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpyZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgUmVxdWVzdENh
bGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgLy8gV2hlbiBTdG9yYWdlUXVvdGFNYW5hZ2VyIGlz
IHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdHMgaW5pdGlh
bCBxdW90YSBpcyBiaWdnZXIgdGhhbiBjdXJyZW50IGRpc2sgdXNhZ2UsCi0gICAgLy8gYmFzZWQg
b24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcXVvdGEgd2FzIGluY3JlYXNlZCB0byBhdCBsZWFz
dCB0aGUgZGlzayB1c2FnZSB1bmRlciB1c2VyJ3MgcGVybWlzc2lvbiBiZWZvcmUuCi0gICAgQVNT
RVJUKG1fcXVvdGFDb3VudERvd25Mb2NrLmlzTG9ja2VkKCkpOwotICAgIGlmICghbV9xdW90YVVw
ZGF0ZWRCYXNlZE9uVXNhZ2UpIHsKLSAgICAgICAgbV9xdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2Ug
PSB0cnVlOwotICAgICAgICBhdXRvIGRlZmF1bHRRdW90YVN0ZXAgPSBtX3F1b3RhIC8gMTA7Ci0g
ICAgICAgIG1fcXVvdGEgPSBzdGQ6Om1heChtX3F1b3RhLCBkZWZhdWx0UXVvdGFTdGVwICogKCht
X3VzYWdlIC8gZGVmYXVsdFF1b3RhU3RlcCkgKyAxKSk7CisgICAgaWYgKCFtX3BlbmRpbmdSZXF1
ZXN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKHsgc3Bh
Y2VJbmNyZWFzZSwgV1RGTW92ZShjYWxsYmFjaykgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIXNwYWNlSW5jcmVhc2UpIHsKKyAgICAgICAgY2FsbGJhY2soRGVjaXNpb246
OkdyYW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluaXRpYWxpemVVc2Vyc0lm
TmVlZGVkKCk7CisKKyAgICBpZiAoIW1fcGVuZGluZ0luaXRpYWxpemF0aW9uVXNlcnMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZCh7IHNwYWNlSW5jcmVhc2Us
IFdURk1vdmUoY2FsbGJhY2spIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHNob3VsZEFza0Zvck1vcmVTcGFjZShzcGFjZUluY3JlYXNlKSkgeworICAgICAgICBtX3BlbmRp
bmdSZXF1ZXN0cy5hcHBlbmQoeyBzcGFjZUluY3JlYXNlLCBXVEZNb3ZlKGNhbGxiYWNrKSB9KTsK
KworICAgICAgICAvLyBUcnkgcHJvY2Vzc2luZyByZXF1ZXN0IGFnYWluIGFmdGVyIG1ha2luZyBz
dXJlIHVzYWdlIGlzIGFjY3VyYXRlLgorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkNvbXB1dGlu
Z1NwYWNlVXNlZDsKKyAgICAgICAgZm9yIChhdXRvJiB1c2VyIDogY29weVRvVmVjdG9yKG1fdXNl
cnMpKQorICAgICAgICAgICAgdXNlci0+Y29tcHV0ZVNwYWNlVXNlZCgpOworCisgICAgICAgIGlm
ICghbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25Vc2Vycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBc2tpbmdGb3JNb3JlU3BhY2U7Cisg
ICAgICAgIGFza0Zvck1vcmVTcGFjZShzcGFjZUluY3JlYXNlKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6TWFraW5nRGVjaXNpb25Gb3JSZXF1ZXN0Owor
ICAgIGNhbGxiYWNrKERlY2lzaW9uOjpHcmFudCk7CiB9CiAKLXZvaWQgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCkKK3ZvaWQgU3Rv
cmFnZVF1b3RhTWFuYWdlcjo6YXNrRm9yTW9yZVNwYWNlKHVpbnQ2NF90IHNwYWNlSW5jcmVhc2Up
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9xdW90YUNvdW50RG93bkxvY2spOwotICAgIG1f
cXVvdGEgPSBtX2luaXRpYWxRdW90YTsKLSAgICBtX3F1b3RhQ291bnREb3duID0gMDsKLSAgICBt
X3F1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZSA9IGZhbHNlOworICAgIEFTU0VSVChzaG91bGRBc2tG
b3JNb3JlU3BhY2Uoc3BhY2VJbmNyZWFzZSkpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpBc2tpbmdGb3JNb3JlU3BhY2UpOworCisgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0g
U3RvcmFnZVF1b3RhTWFuYWdlcjo6YXNrRm9yTW9yZVNwYWNlICUiIFBSSXU2NCwgdGhpcywgc3Bh
Y2VJbmNyZWFzZSk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpXYWl0aW5nRm9yU3BhY2VJbmNyZWFz
ZVJlc3BvbnNlOworICAgIG1fc3BhY2VJbmNyZWFzZVJlcXVlc3RlcihtX3F1b3RhLCBzcGFjZVVz
YWdlKCksIHNwYWNlSW5jcmVhc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVw
IC0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6YXNrRm9yTW9yZVNwYWNlIHJlY2VpdmVkIHJlc3BvbnNl
ICUiIFBSSXU2NCwgdGhpcywgbmV3UXVvdGEgPyAqbmV3UXVvdGEgOiAwKTsKKworICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkFza2luZ0Zvck1vcmVTcGFjZTsKKyAgICAgICAgcHJvY2Vzc1BlbmRp
bmdSZXF1ZXN0cyhuZXdRdW90YSk7CisgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZVF1b3RhTWFu
YWdlcjo6cmVzZXRRdW90YUZvclRlc3RpbmcoKQordm9pZCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpw
cm9jZXNzUGVuZGluZ1JlcXVlc3RzKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3F1b3RhQ291bnREb3duTG9jayk7Ci0gICAgbV9xdW90YSA9
IG1faW5pdGlhbFF1b3RhOwotICAgIG1fcXVvdGFDb3VudERvd24gPSAwOworICAgIGlmIChtX3Bl
bmRpbmdSZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdR
dW90YSkKKyAgICAgICAgbV9xdW90YSA9ICpuZXdRdW90YTsKKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpXYWl0aW5nRm9yU3BhY2VJbmNyZWFzZVJlc3BvbnNlKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1fcGVuZGluZ0luaXRpYWxpemF0aW9uVXNlcnMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QXNraW5nRm9yTW9yZVNw
YWNlKSB7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1fcGVuZGluZ1JlcXVlc3RzLnRha2VGaXJz
dCgpOworICAgICAgICBib29sIHNob3VsZEFsbG93UmVxdWVzdCA9ICFzaG91bGRBc2tGb3JNb3Jl
U3BhY2UocmVxdWVzdC5zcGFjZUluY3JlYXNlKTsKKworICAgICAgICBSRUxFQVNFX0xPRyhTdG9y
YWdlLCAiJXAgLSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpwcm9jZXNzUGVuZGluZ1JlcXVlc3RzIGZp
cnN0IHJlcXVlc3QgZGVjaXNpb24gaXMgJWQiLCB0aGlzLCBzaG91bGRBbGxvd1JlcXVlc3QpOwor
CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6TWFraW5nRGVjaXNpb25Gb3JSZXF1ZXN0OworICAg
ICAgICByZXF1ZXN0LmNhbGxiYWNrKHNob3VsZEFsbG93UmVxdWVzdCA/IERlY2lzaW9uOjpHcmFu
dCA6IERlY2lzaW9uOjpEZW55KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1JlcXVl
c3RzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiByZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVz
dHMuZmlyc3QoKTsKKworICAgICAgICBpZiAoc2hvdWxkQXNrRm9yTW9yZVNwYWNlKHJlcXVlc3Qu
c3BhY2VJbmNyZWFzZSkpIHsKKyAgICAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpNYWtp
bmdEZWNpc2lvbkZvclJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkNvbXB1dGluZ1NwYWNlVXNlZDsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHVzZXIgOiBj
b3B5VG9WZWN0b3IobV91c2VycykpCisgICAgICAgICAgICAgICAgICAgIHVzZXItPmNvbXB1dGVT
cGFjZVVzZWQoKTsKKworICAgICAgICAgICAgICAgIGlmICghbV9wZW5kaW5nSW5pdGlhbGl6YXRp
b25Vc2Vycy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBc2tpbmdGb3JNb3JlU3BhY2U7
CisgICAgICAgICAgICB1aW50NjRfdCBzcGFjZUluY3JlYXNlID0gMDsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgcGVuZGluZ1JlcXVlc3QgOiBtX3BlbmRpbmdSZXF1ZXN0cykKKyAgICAgICAgICAg
ICAgICBzcGFjZUluY3JlYXNlICs9IHBlbmRpbmdSZXF1ZXN0LnNwYWNlSW5jcmVhc2U7CisgICAg
ICAgICAgICBhc2tGb3JNb3JlU3BhY2Uoc3BhY2VJbmNyZWFzZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBtX3N0YXRlID0gU3RhdGU6Ok1ha2luZ0RlY2lzaW9u
Rm9yUmVxdWVzdDsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCkuY2FsbGJh
Y2soRGVjaXNpb246OkdyYW50KTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmgKaW5kZXggOWJk
ZmRkNDdhMThhMTc2YzViYzMzZjRiODYyODkyMjM0YWQyOWFiMi4uMDk1NjYzMDZmNTU5MWFiYjU5
ZDBhZmQ4ZWVhNDg2NzlhNWY2YzYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlUXVvdGFNYW5hZ2VyLmgKQEAgLTI1LDU0ICsyNSw3NyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTdG9y
YWdlUXVvdGFNYW5hZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VRdW90
YU1hbmFnZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gewor
Y2xhc3MgU3RvcmFnZVF1b3RhVXNlcjsKKworY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgVXNhZ2VHZXR0ZXIgPSBGdW5jdGlv
bjx1aW50NjRfdCgpPjsKLSAgICB1c2luZyBRdW90YUluY3JlYXNlUmVxdWVzdGVyID0gRnVuY3Rp
b248dm9pZCh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWlu
dDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
dWludDY0X3Q+KT4mJik+OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3RvcmFnZVF1
b3RhTWFuYWdlcj4gY3JlYXRlKHVpbnQ2NF90IHF1b3RhLCBVc2FnZUdldHRlciYmLCBRdW90YUlu
Y3JlYXNlUmVxdWVzdGVyJiYpOworICAgIHVzaW5nIFNwYWNlSW5jcmVhc2VSZXF1ZXN0ZXIgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwg
dWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1
aW50NjRfdD4pPiYmKT47CisgICAgU3RvcmFnZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwg
U3BhY2VJbmNyZWFzZVJlcXVlc3RlciYmIHNwYWNlSW5jcmVhc2VSZXF1ZXN0ZXIpCisgICAgICAg
IDogbV9xdW90YShxdW90YSkKKyAgICAgICAgLCBtX3NwYWNlSW5jcmVhc2VSZXF1ZXN0ZXIoV1RG
TW92ZShzcGFjZUluY3JlYXNlUmVxdWVzdGVyKSkKKyAgICB7CisgICAgfQorICAgIFdFQkNPUkVf
RVhQT1JUIH5TdG9yYWdlUXVvdGFNYW5hZ2VyKCk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGFGcm9tUGVyT3JpZ2luUXVvdGEodWludDY0X3Qg
cXVvdGEpIHsgcmV0dXJuIHF1b3RhIC8gMTA7IH0KKwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDY0X3QgZGVmYXVsdFF1b3RhKCkgeyByZXR1cm4gMTAwMCAqIE1COyB9CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkgeyByZXR1cm4gZGVmYXVs
dFRoaXJkUGFydHlRdW90YUZyb21QZXJPcmlnaW5RdW90YShkZWZhdWx0UXVvdGEoKSk7IH0KIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVXNlcihTdG9yYWdlUXVvdGFVc2VyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVVc2VyKFN0b3JhZ2VRdW90YVVzZXImKTsKKwogICAg
IGVudW0gY2xhc3MgRGVjaXNpb24geyBEZW55LCBHcmFudCB9OwogICAgIHVzaW5nIFJlcXVlc3RD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjaXNpb24pPjsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlcXVlc3RTcGFjZU9uTWFpblRocmVhZCh1aW50NjRfdCwgUmVxdWVzdENh
bGxiYWNrJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIERlY2lzaW9uIHJlcXVlc3RTcGFjZU9uQmFj
a2dyb3VuZFRocmVhZCh1aW50NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0
U3BhY2UodWludDY0X3QsIFJlcXVlc3RDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlc2V0UXVvdGEo
dWludDY0X3QgbmV3UXVvdGEpIHsgbV9xdW90YSA9IG5ld1F1b3RhOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2UoKTsKKworICAgIGVu
dW0gY2xhc3MgU3RhdGUgeworICAgICAgICBVbmluaXRpYWxpemVkLAorICAgICAgICBDb21wdXRp
bmdTcGFjZVVzZWQsCisgICAgICAgIFdhaXRpbmdGb3JTcGFjZUluY3JlYXNlUmVzcG9uc2UsCisg
ICAgICAgIEFza2luZ0Zvck1vcmVTcGFjZSwKKyAgICAgICAgTWFraW5nRGVjaXNpb25Gb3JSZXF1
ZXN0LAorICAgIH07CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9
CiAKIHByaXZhdGU6Ci0gICAgU3RvcmFnZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgVXNh
Z2VHZXR0ZXImJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RlciYmKTsKLSAgICBib29sIHRyeUdyYW50
UmVxdWVzdCh1aW50NjRfdCk7CisgICAgdWludDY0X3Qgc3BhY2VVc2FnZSgpIGNvbnN0OworICAg
IGJvb2wgc2hvdWxkQXNrRm9yTW9yZVNwYWNlKHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UpIGNvbnN0
OworICAgIHZvaWQgYXNrRm9yTW9yZVNwYWNlKHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UpOworCisg
ICAgdm9pZCBpbml0aWFsaXplVXNlcnNJZk5lZWRlZCgpOworICAgIHZvaWQgYXNrVXNlclRvSW5p
dGlhbGl6ZShTdG9yYWdlUXVvdGFVc2VyJik7CiAKLSAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRP
blVzYWdlKCk7CisgICAgdm9pZCBwcm9jZXNzUGVuZGluZ1JlcXVlc3RzKE9wdGlvbmFsPHVpbnQ2
NF90Pik7CiAKLSAgICBMb2NrIG1fcXVvdGFDb3VudERvd25Mb2NrOwotICAgIHVpbnQ2NF90IG1f
cXVvdGFDb3VudERvd24geyAwIH07CiAgICAgdWludDY0X3QgbV9xdW90YSB7IDAgfTsKLSAgICB1
aW50NjRfdCBtX3VzYWdlIHsgMCB9OwogCi0gICAgVXNhZ2VHZXR0ZXIgbV91c2FnZUdldHRlcjsK
LSAgICBRdW90YUluY3JlYXNlUmVxdWVzdGVyIG1fcXVvdGFJbmNyZWFzZVJlcXVlc3RlcjsKKyAg
ICBTcGFjZUluY3JlYXNlUmVxdWVzdGVyIG1fc3BhY2VJbmNyZWFzZVJlcXVlc3RlcjsKIAotICAg
IFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIGVudW0gY2xhc3MgV2hlbkluaXRpYWxp
emVkQ2FsbGVkIHsgTm8sIFllcyB9OworICAgIEhhc2hNYXA8U3RvcmFnZVF1b3RhVXNlciosIFdo
ZW5Jbml0aWFsaXplZENhbGxlZD4gbV9wZW5kaW5nSW5pdGlhbGl6YXRpb25Vc2VyczsKKyAgICBI
YXNoU2V0PFN0b3JhZ2VRdW90YVVzZXIqPiBtX3VzZXJzOwogCi0gICAgYm9vbCBtX3F1b3RhVXBk
YXRlZEJhc2VkT25Vc2FnZSB7IGZhbHNlIH07CisgICAgc3RydWN0IFBlbmRpbmdSZXF1ZXN0IHsK
KyAgICAgICAgdWludDY0X3Qgc3BhY2VJbmNyZWFzZTsKKyAgICAgICAgUmVxdWVzdENhbGxiYWNr
IGNhbGxiYWNrOworICAgIH07CisgICAgRGVxdWU8UGVuZGluZ1JlcXVlc3Q+IG1fcGVuZGluZ1Jl
cXVlc3RzOwogCi0gICAgLy8gVGVzdCBvbmx5LgotICAgIHVpbnQ2NF90IG1faW5pdGlhbFF1b3Rh
IHsgMCB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VW5pbml0aWFsaXplZCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlUXVvdGFVc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VR
dW90YVVzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzEwY2VlYzYwYzVkZTUwYzYwOWQyMzFiMGYwZGY5Njc0
OTQ5NDIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
UXVvdGFVc2VyLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3RvcmFnZVF1b3Rh
VXNlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3RvcmFnZVF1b3RhVXNlcigpID0gZGVmYXVs
dDsKKworICAgIHZpcnR1YWwgdWludDY0X3Qgc3BhY2VVc2VkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlU3BhY2VVc2VkKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCB3aGVu
SW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxi
YWNrKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYjVhM2UwNjRkOTA3NTM5
Y2EyYzZhNjFlNTIwNTE3YzAxZjI1OTk4Ni4uNWYyM2NjNjZhYTExZjdkMjhlNzYxNWNjYjg1MTM2
N2MyMDMxNWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTY1LDcgKzY1LDYgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAtMzE3LDkgKzMx
Niw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJh
bWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zZXNzaW9uSUQ7CiAgICAgc2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpj
cmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIGFkZFNlc3Npb25TdG9y
YWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGFkZEluZGV4
ZWREYXRhYmFzZVNlc3Npb24oc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0
YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogI2VuZGlmCkBAIC0zMzAsNiArMzI2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICAg
ICAgICAgYWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RG
TW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogICAgIH0KICNlbmRpZgorICAgIGluaXRpYWxpemVTdG9yYWdlUXVvdGEocGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycyk7CiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5h
ZGQoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC00MzcsMzkgKzQzNCwy
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7Ci0KLSAgICBhZGRTZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1
b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRl
cnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7Ci0KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBh
ZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCi0gICAgICAgIGFkZFNl
cnZpY2VXb3JrZXJTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIGFkZFNlcnZpY2VXb3Jr
ZXJTZXNzaW9uKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwg
cGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBX
VEZNb3ZlKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZChzZXNzaW9uSUQsIHBh
cmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+YWRkKHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCwgcGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19CisgICAg
aW5pdGlhbGl6ZVN0b3JhZ2VRdW90YShwYXJhbWV0ZXJzKTsKIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEs
IGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBj
YWNoZVJvb3RQYXRoSGFuZGxlKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7Ci0gICAgYXV0byBbaXRlciwgaXNOZXdFbnRyeV0gPSBt
X3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5lbnN1cmUoc2Vzc2lvbklELCBbZGVmYXVsdFF1
b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCAmY2FjaGVSb290UGF0aF0gewotICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcj4oY2FjaGVSb290UGF0
aCwgZGVmYXVsdFF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKLSAgICB9KTsKLSAgICBp
ZiAoaXNOZXdFbnRyeSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KGNhY2hlUm9vdFBhdGhIYW5kbGUpOworICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVTdG9yYWdlUXVvdGEoY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFu
YWdlcnNMb2NrKTsKLSAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuY29u
dGFpbnMoc2Vzc2lvbklEKSk7Ci0gICAgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMucmVt
b3ZlKHNlc3Npb25JRCk7CisgICAgYXV0byYgbWFuYWdlcnMgPSAgbV9zdG9yYWdlUXVvdGFNYW5h
Z2Vycy5lbnN1cmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklE
LCBbXSB7CisgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VycyB7IH07CisgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIG1hbmFnZXJzLnNldERlZmF1bHRRdW90YXMocGFyYW1ldGVy
cy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZvckVhY2hOZXR3b3JrU2Vz
c2lvbihjb25zdCBGdW5jdGlvbjx2b2lkKE5ldHdvcmtTZXNzaW9uJik+JiBmdW5jdG9yKQpAQCAt
NTkwLDYgKzU3Niw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogCiAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
cmVtb3ZlKHNlc3Npb25JRCk7CisKKyAgICBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLnJlbW92ZShz
ZXNzaW9uSUQpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAg
LTE0ODAsNiArMTQ2OCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5j
ZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7
CiAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlKSkKKyAgICAgICAgY2xlYXJTdG9yYWdlUXVvdGEoc2Vzc2lvbklEKTsK
KwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWRD
bGlja0F0dHJpYnV0aW9ucykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5jbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwpAQCAtMTU3Miw2ICsxNTYzLDE5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIH0KICAgICAgICAgV2ViQ29yZTo6Q3JlZGVu
dGlhbFN0b3JhZ2U6OnJlbW92ZVNlc3Npb25DcmVkZW50aWFsc1dpdGhPcmlnaW5zKG9yaWdpbkRh
dGFzKTsKICAgICB9CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN0b3JhZ2UgcXVvdGEgY2xl
YXJpbmcgZm9yIHRoZXNlIG9yaWdpbnMuCit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
U3RvcmFnZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9zdG9yYWdlUXVvdGFNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKGl0
ZXJhdG9yID09IG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mIG1hbmFnZXJzID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGZvciAoYXV0byYg
bWFuYWdlciA6IG1hbmFnZXJzLm1hbmFnZXJzUGVyT3JpZ2luKCkpCisgICAgICAgIG1hbmFnZXIu
dmFsdWUtPnJlc2V0UXVvdGEobWFuYWdlcnMuZGVmYXVsdFF1b3RhKG1hbmFnZXIua2V5KSk7CiB9
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMjIxMyw5ICsyMjE3
LDEwIEBAIFJlZjxJREJTZXJ2ZXI6OklEQlNlcnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZUlE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIHBhdGggPSBtX2lkYkRhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7CiAgICAgfQogCi0gICAgcmV0dXJuIElEQlNlcnZlcjo6
SURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBwYXRoLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgc2Vzc2lvbklEXShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNw
YWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgIFJlZlB0cjxTdG9yYWdlUXVvdGFNYW5hZ2VyPiBzdG9y
YWdlUXVvdGFNYW5hZ2VyID0gd2Vha1RoaXMgPyB0aGlzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNl
c3Npb25JRCwgb3JpZ2luKSA6IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdG9yYWdlUXVvdGFN
YW5hZ2VyID8gc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhy
ZWFkKHNwYWNlUmVxdWVzdGVkKSA6IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55
OworICAgIHJldHVybiBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwgcGF0
aCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgYXV0byYgb3JpZ2luKSAtPiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuICZ0aGlzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2luKTsK
ICAgICB9KTsKIH0KIApAQCAtMjMwMiwxOCArMjMwNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcmCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUp
OwogICAgICAgICBpZiAoIWluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBwb3N0U3RvcmFnZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmTmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkp
OwotICAgICAgICBzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Np
b25JRCwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICB9CiB9Ci0KLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQotewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7Ci0gICAg
YXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKLSAgICBBU1NFUlQoc2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXIpOwotICAgIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyLT5zZXRJREJSb290UGF0aChp
ZGJSb290UGF0aCk7Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMzMwLDE4ICsyMzI1LDkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoKQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KQogewotICAgIGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA9IHRoaXMtPnN0b3JhZ2VRdW90YU1h
bmFnZXIoc2Vzc2lvbklELCBvcmlnaW4pOwotICAgIHN0b3JhZ2VRdW90YU1hbmFnZXItPnJlc2V0
UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZygpOwotfQotCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXNldFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7Ci0gICAgaWYgKGF1dG8qIHNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMu
Z2V0KHNlc3Npb25JRCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIg
OiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2Vy
cygpKQotICAgICAgICAgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3Rp
bmcoKTsKLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBhdXRvJiBtYW5hZ2Vy
ID0gc3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbik7CisgICAgbWFuYWdlci5y
ZXNldFF1b3RhKG1fc3RvcmFnZVF1b3RhTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpLT52YWx1ZS5k
ZWZhdWx0UXVvdGEob3JpZ2luKSk7CisgICAgbWFuYWdlci51cGRhdGVRdW90YUJhc2VkT25TcGFj
ZVVzYWdlKCk7CiB9CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQpAQCAtMjQxOCwz
NSArMjQwNCw2MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50TwogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6UmVxdWVzdFN0b3JhZ2VTcGFjZSB7IHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3Vy
cmVudFNpemUsIHNwYWNlUmVxdWlyZWQgfSwgV1RGTW92ZShjYWxsYmFjayksIDApOwogfQogCi1S
ZWZQdHI8U3RvcmFnZVF1b3RhTWFuYWdlcj4gTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1h
bmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
bikKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
c0xvY2spOwotICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CitjbGFzcyBRdW90YVVz
ZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBRdW90
YVVzZXJJbml0aWFsaXplcihTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6
IG1fbWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKKyAgICB7CisgICAgICAgIG1hbmFnZXIu
YWRkVXNlcigqdGhpcyk7CisgICAgfQogCi0gICAgU3RyaW5nIGlkYlJvb3RQYXRoOwotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIGlkYlJvb3RQYXRoID0gc2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXItPmlkYlJvb3RQYXRoKCk7Ci0jZW5kaWYKLSAgICBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpVc2FnZUdldHRlciB1c2FnZUdldHRlciA9IFtjYWNoZVJvb3RQYXRoID0gc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXItPmNhY2hlUm9vdFBhdGgoKS5pc29sYXRlZENvcHkoKSwgaWRiUm9v
dFBhdGggPSBpZGJSb290UGF0aC5pc29sYXRlZENvcHkoKSwgb3JpZ2luID0gb3JpZ2luLmlzb2xh
dGVkQ29weSgpXSgpIHsKLSAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7ICAgIAorICAg
IH5RdW90YVVzZXJJbml0aWFsaXplcigpCisgICAgeworICAgICAgICBpZiAobV9tYW5hZ2VyKQor
ICAgICAgICAgICAgbV9tYW5hZ2VyLT5yZW1vdmVVc2VyKCp0aGlzKTsKKyAgICAgICAgaWYgKG1f
Y2FsbGJhY2spCisgICAgICAgICAgICBtX2NhbGxiYWNrKCk7CisgICAgfQogCi0gICAgICAgIHVp
bnQ2NF90IHVzYWdlID0gQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRpc2tVc2FnZShjYWNoZVJvb3RQ
YXRoLCBvcmlnaW4pOwotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgICAgICB1c2Fn
ZSArPSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlza1VzYWdlKGlkYlJvb3RQYXRoLCBvcmlnaW4p
OwotI2VuZGlmCitwcml2YXRlOgorICAgIC8vIFN0b3JhZ2VRdW90YVVzZXIgQVBJLgorICAgIHVp
bnQ2NF90IHNwYWNlVXNlZCgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCi0gICAgICAgIHJldHVybiB1
c2FnZTsKLSAgICB9OwotICAgIFN0b3JhZ2VRdW90YU1hbmFnZXI6OlF1b3RhSW5jcmVhc2VSZXF1
ZXN0ZXIgcXVvdGFJbmNyZWFzZVJlcXVlc3RlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW5dICh1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3QgcmVxdWVzdGVkSW5jcmVhc2UsIGF1dG8mJiBj
YWxsYmFjaykgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHZvaWQgd2hl
bkluaXRpYWxpemVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgZmluYWwK
KyAgICB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9CisK
KyAgICBXZWFrUHRyPFN0b3JhZ2VRdW90YU1hbmFnZXI+IG1fbWFuYWdlcjsKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+IG1fY2FsbGJhY2s7Cit9OworCit2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplUXVvdGFVc2VycyhTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRp
YWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHsgfSk7Ci0gICAgICAgIHJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vz
c2lvbklELCBvcmlnaW4sIGN1cnJlbnRRdW90YSwgY3VycmVudFNwYWNlLCByZXF1ZXN0ZWRJbmNy
ZWFzZSwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIH07CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHRoaXMtPmlkYlNlcnZlcihzZXNzaW9uSUQpLmluaXRpYWxpemVRdW90YVVzZXIob3Jp
Z2luKTsKKyAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmluaXRpYWxpemVRdW90YVVzZXIo
KnRoaXMsIHNlc3Npb25JRCwgb3JpZ2luLCBbdXNlciA9IFdURk1vdmUodXNlcildIHsgfSk7Cisg
ICAgfSk7Cit9CiAKLSAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXItPmVuc3Vy
ZU9yaWdpblN0b3JhZ2VRdW90YU1hbmFnZXIob3JpZ2luLCBzZXNzaW9uU3RvcmFnZVF1b3RhTWFu
YWdlci0+ZGVmYXVsdFF1b3RhKG9yaWdpbiksIFdURk1vdmUodXNhZ2VHZXR0ZXIpLCBXVEZNb3Zl
KHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIpKS5wdHIoKTsKK1N0b3JhZ2VRdW90YU1hbmFnZXImIE5l
dHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgYXV0byYgc3RvcmFnZVF1b3Rh
TWFuYWdlcnMgPSBtX3N0b3JhZ2VRdW90YU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsK
KyAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9y
aWdpbigpLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Np
b25JRCwgJm9yaWdpbl0geworICAgICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3Jh
Z2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4p
LCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3Rh
LCBjdXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGluaXRpYWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQs
IG9yaWdpbik7CisgICAgICAgIHJldHVybiBtYW5hZ2VyOworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkM2FkZmMxYzQyOGU0MjhjZmM5YWMwYTJlNDY3
Y2JhNmQ3Njk4Zjk3Li5mNjJmMDFkMzgwZjQwMTA1NTJhYWQzODg5YTQ5N2Q1MTI2ZjhhMzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0y
ODQsNyArMjg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2Fn
ZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYp
OwotICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAgICAgdm9pZCBn
ZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5JiYpPiYmKTsKQEAgLTMyOCw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZENs
aWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgVVJM
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtYXJrQWRDbGlja0F0
dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcj4gc3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik7CisgICAgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciYgc3RvcmFn
ZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7CiAKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4mJik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciYpOwpAQCAtNDQzLDcgKzQ0Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0SW5kZXhl
ZERhdGFiYXNlT3JpZ2luc0ZvclZlcnNpb24oY29uc3QgU3RyaW5nJiwgSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+Jik7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAg
ICBSZWY8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+IGNyZWF0ZUlEQlNlcnZlcihQQUw6
OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJv
b3RQYXRoKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtNDYzLDQ0ICs0NjEsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGVyZm9ybU5leHRTdG9yYWdlVGFzaygpOwogICAgIHZvaWQgZW5zdXJl
UGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpOwogCi0gICAgY2xhc3MgU2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKGNvbnN0IFN0cmluZyYg
Y2FjaGVSb290UGF0aCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhp
cmRQYXJ0eVF1b3RhKQotICAgICAgICAgICAgOiBtX2NhY2hlUm9vdFBhdGgoY2FjaGVSb290UGF0
aCkKLSAgICAgICAgICAgICwgbV9kZWZhdWx0UXVvdGEoZGVmYXVsdFF1b3RhKQotICAgICAgICAg
ICAgLCBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGEoZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKLSAg
ICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHVpbnQ2NF90IGRlZmF1bHRRdW90YShjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikgY29uc3QgeyByZXR1cm4gb3JpZ2luLnRvcE9y
aWdpbiA9PSBvcmlnaW4uY2xpZW50T3JpZ2luID8gbV9kZWZhdWx0UXVvdGEgOiBtX2RlZmF1bHRU
aGlyZFBhcnR5UXVvdGE7IH0KLQotICAgICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcj4gZW5zdXJlT3JpZ2luU3RvcmFnZVF1b3RhTWFuYWdlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
VXNhZ2VHZXR0ZXImJiB1c2FnZUdldHRlciwgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6
UXVvdGFJbmNyZWFzZVJlcXVlc3RlciYmIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gW2l0ZXIsIGlzTmV3RW50cnldID0gbV9zdG9yYWdlUXVvdGFN
YW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbcXVvdGEsIHVzYWdlR2V0dGVyID0gV1RGTW92ZSh1c2Fn
ZUdldHRlciksIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBXVEZNb3ZlKHF1b3RhSW5jcmVhc2VS
ZXF1ZXN0ZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUodXNhZ2VHZXR0ZXIpLCBX
VEZNb3ZlKHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcmV0dXJuIG1ha2VSZWYoKml0ZXItPnZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGF1dG8gZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpIHsgcmV0dXJuIG1fc3RvcmFnZVF1
b3RhTWFuYWdlcnMudmFsdWVzKCk7IH0KLQotICAgICAgICBjb25zdCBTdHJpbmcmIGNhY2hlUm9v
dFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlUm9vdFBhdGg7IH0KLSNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKLSAgICAgICAgdm9pZCBzZXRJREJSb290UGF0aChjb25zdCBTdHJpbmcm
IGlkYlJvb3RQYXRoKSB7IG1faWRiUm9vdFBhdGggPSBpZGJSb290UGF0aDsgfQotICAgICAgICBj
b25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pZGJSb290UGF0aDsg
fQotI2VuZGlmCi0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmcgbV9jYWNoZVJvb3RQYXRo
OwotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgICAgICBTdHJpbmcgbV9pZGJSb290
UGF0aDsKLSNlbmRpZgotICAgICAgICB1aW50NjRfdCBtX2RlZmF1bHRRdW90YSB7IFdlYkNvcmU6
OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpIH07Ci0gICAgICAgIHVpbnQ2NF90
IG1fZGVmYXVsdFRoaXJkUGFydHlRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6
OmRlZmF1bHRUaGlyZFBhcnR5UXVvdGEoKSB9OwotICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkNs
aWVudE9yaWdpbiwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3N0b3Jh
Z2VRdW90YU1hbmFnZXJzOwotICAgIH07Ci0gICAgdm9pZCBhZGRTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcihQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBk
ZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBjb25zdCBTdHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgY2xlYXJTdG9yYWdlUXVvdGEoUEFM
OjpTZXNzaW9uSUQpOworICAgIHZvaWQgaW5pdGlhbGl6ZVN0b3JhZ2VRdW90YShjb25zdCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8gV2ViUHJv
Y2Vzc2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFJlZjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwpAQCAt
NTcxLDggKzUzMywyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0lUUERhdGFiYXNlRW5hYmxl
ZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICAKLSAgICBMb2NrIG1fc2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJzTG9jazsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9w
dHI8U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyczsKKyAgICBjbGFzcyBTdG9yYWdlUXVvdGFNYW5hZ2VycyB7CisgICAgcHVibGljOgorICAg
ICAgICB1aW50NjRfdCBkZWZhdWx0UXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pIGNvbnN0IHsgcmV0dXJuIG9yaWdpbi50b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9y
aWdpbiA/IG1fZGVmYXVsdFF1b3RhIDogbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhOyB9CisgICAg
ICAgIHZvaWQgc2V0RGVmYXVsdFF1b3Rhcyh1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90
IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZGVmYXVs
dFF1b3RhID0gZGVmYXVsdFF1b3RhOworICAgICAgICAgICAgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1
b3RhID0gZGVmYXVsdFRoaXJkUGFydHlRdW90YTsKKyAgICAgICAgfQorCisgICAgICAgIEhhc2hN
YXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcj4+JiBtYW5hZ2Vyc1Blck9yaWdpbigpIHsgcmV0dXJuIG1fbWFuYWdlcnNQ
ZXJPcmlnaW47IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVpbnQ2NF90IG1fZGVmYXVsdFF1
b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKKyAg
ICAgICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFRoaXJkUGFydHlRdW90YSgpIH07CisgICAgICAgIEhhc2hN
YXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFn
ZVF1b3RhTWFuYWdlcj4+IG1fbWFuYWdlcnNQZXJPcmlnaW47CisgICAgfTsKKyAgICBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBTdG9yYWdlUXVvdGFNYW5hZ2Vycz4gbV9zdG9yYWdlUXVvdGFNYW5h
Z2VyczsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hl
T3B0aW9uczsKICAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSBtX21lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzYxZTkwNzAxMDlkZTVj
YmY0NTE4MjE0ZmY4YTg5MDhkYmQ5NThlZC4uMzY3NzY3NzQ4MGI4MmE0NDMzZjg1ZDI4MmIzZTVm
YjgwNmE5MWU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNjMsNiArMTYzLDQgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBTeW5jaHJvbm91
cwogICAgIFJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoKSAtPiAoKSBT
eW5jaHJvbm91cwotCi0gICAgUmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggM2Q2NTk0NzExYjUwMjlkYzE3M2Y3
OTAwNGU1NjAzYTNiZWJjYjk2Ni4uZWZlN2UxNWIwNWY3ZDI1NjEwOWU4NjMyZTJmMzA1ZTIxYzM2
ODRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMTk2LDY4ICsxOTYsMTMgQEAgdm9pZCBFbmdp
bmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
UEFMOjpTZXNzaW9uSUQKICAgICB9KTsKIH0KIAotc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9y
eVNpemUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQotewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgdWludDY0X3QgZGlyZWN0b3J5U2l6ZSA9IDA7Ci0gICAgRGVxdWU8
U3RyaW5nPiBwYXRoczsKLSAgICBwYXRocy5hcHBlbmQoZGlyZWN0b3J5UGF0aCk7Ci0gICAgd2hp
bGUgKCFwYXRocy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBwYXRoID0gcGF0aHMudGFrZUZp
cnN0KCk7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkocGF0aCwgRmls
ZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKSB7Ci0gICAgICAgICAgICBh
dXRvIG5ld1BhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIG5ld1BhdGggOiBuZXdQYXRocykgewotICAgICAgICAgICAg
ICAgIC8vIEZpbGVzIGluIC9CbG9icyBkaXJlY3RvcnkgYXJlIGhhcmQgbGluay4KLSAgICAgICAg
ICAgICAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aEln
bm9yaW5nVHJhaWxpbmdTbGFzaChuZXdQYXRoKTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsZU5h
bWUgPT0gIkJsb2JzIikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgcGF0aHMuYXBwZW5kKG5ld1BhdGgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwot
ICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBmaWxlU2l6ZSk7Ci0gICAgICAg
IGRpcmVjdG9yeVNpemUgKz0gZmlsZVNpemU7Ci0gICAgfQotICAgIHJldHVybiBkaXJlY3RvcnlT
aXplOwotfQotCi11aW50NjRfdCBFbmdpbmU6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQ
YXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3ZvaWQgRW5naW5lOjpp
bml0aWFsaXplUXVvdGFVc2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKHJvb3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICBhdXRv
IHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7Ci0gICAgaWYgKCFzYWx0KQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIEtleSBrZXkob3JpZ2luLnRvcE9yaWdpbi50b1N0cmluZygpLCBv
cmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCksIHsgfSwgeyB9LCAqc2FsdCk7Ci0gICAgU3Ry
aW5nIGRpcmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cm9vdFBhdGgsIGtleS5oYXNoQXNTdHJpbmcoKSk7Ci0KLSAgICBTdHJpbmcgc2l6ZUZpbGVQYXRo
ID0gQ2FjaGVzOjpjYWNoZXNTaXplRmlsZW5hbWUoZGlyZWN0b3J5UGF0aCk7Ci0gICAgaWYgKGF1
dG8gcmVjb3JkZWRTaXplID0gcmVhZFNpemVGaWxlKHNpemVGaWxlUGF0aCkpCi0gICAgICAgIHJl
dHVybiAqcmVjb3JkZWRTaXplOwotCi0gICAgcmV0dXJuIGdldERpcmVjdG9yeVNpemUoZGlyZWN0
b3J5UGF0aCk7Ci19Ci0KLXZvaWQgRW5naW5lOjpyZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJiBjYWxsYmFjaykK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKCFtX25ldHdvcmtQcm9j
ZXNzKQotICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbjo6RGVueSk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcj4g
c3RvcmFnZVF1b3RhTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFn
ZXIobV9zZXNzaW9uSUQsIG9yaWdpbik7Ci0gICAgaWYgKCFzdG9yYWdlUXVvdGFNYW5hZ2VyKQot
ICAgICAgICBjYWxsYmFjayhXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6
RGVueSk7Ci0KLSAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXF1ZXN0U3BhY2VPbk1haW5UaHJl
YWQoc3BhY2VSZXF1ZXN0ZWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBmcm9tKG5ldHdvcmtQ
cm9jZXNzLCBzZXNzaW9uSUQsIFtjbGllbnRPcmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgICAg
IGVuZ2luZS5yZWFkQ2FjaGVzRnJvbURpc2soY2xpZW50T3JpZ2luLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGNhY2hlc09yRXJyb3IpIG11
dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CiB9CiAKIEVuZ2luZTo6RW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgTmV0
d29ya1Byb2Nlc3MmIHByb2Nlc3MsIFN0cmluZyYmIHJvb3RQYXRoKQpAQCAtMzk2LDcgKzM0MSw3
IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIENhY2hlc0NhbGxiCiAKICAgICAgICAgYXV0byYgY2FjaGVzID0gbV9j
YWNoZXMuZW5zdXJlKG9yaWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKICAgICAgICAgICAgIGF1dG8g
cGF0aCA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbik7Ci0gICAgICAgICAgICByZXR1cm4gQ2FjaGVz
OjpjcmVhdGUoKnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9yaWdpbiB9LCBXVEZNb3Zl
KHBhdGgpKTsKKyAgICAgICAgICAgIHJldHVybiBDYWNoZXM6OmNyZWF0ZSgqdGhpcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luIH0sIFdURk1vdmUocGF0aCksIG1fbmV0d29ya1Byb2Nl
c3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIobV9zZXNzaW9uSUQsIG9yaWdpbikpOwogICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXplZCgp
KSB7CkBAIC01MjgsMTMgKzQ3MywxMiBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6d3JpdGVTaXplRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjp3cml0ZVNpemVGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3Qgc2l6ZSkKIHsKLSAgICBDb21wbGV0aW9uSGFuZGxl
ckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBzaXpl
LCBjb21wbGV0aW9uSGFuZGxlckNhbGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDYWxs
ZXIpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlz
b2xhdGVkQ29weSgpLCBzaXplXSgpIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFs
U2l6ZUZpbGVMb2NrKTsKICAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgICAgIGF1
dG8gY2xvc2VGaWxlSGFuZGxlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKQEAgLTU0NSw4ICs0ODks
NiBAQCB2b2lkIEVuZ2luZTo6d3JpdGVTaXplRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPAogCiAgICAgICAgIEZpbGVTeXN0ZW06OnRydW5j
YXRlRmlsZShmaWxlSGFuZGxlLCAwKTsKICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZUhhbmRsZSwgU3RyaW5nOjpudW1iZXIoc2l6ZSkudXRmOCgpLmRhdGEoKSwgU3RyaW5nOjpu
dW1iZXIoc2l6ZSkudXRmOCgpLmxlbmd0aCgpKTsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyQ2FsbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlckNhbGxlcildKCkgbXV0YWJsZSB7IH0pOwogICAgIH0pOwogfQogCkBAIC01NzEsOCArNTEz
LDggQEAgT3B0aW9uYWw8dWludDY0X3Q+IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgYnl0ZXNUb1Jl
YWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPHVuc2lnbmVk
IGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Ci0gICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0g
RmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGVIYW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyKGJ5dGVzVG9SZWFkKTsKKyAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVt
OjpyZWFkRnJvbUZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAyMmVlNjZiY2E0NzZiY2UyYmNhNGIy
ZDUxZGFjZTk1NDdhZDcxN2NmLi5hM2FhYWYwOTAxYzk1ZTYxNTA1MjE5ZGQyYzFlYjdmNjU3MjBm
MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NsaWVudE9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5o
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04MCwxNSArNzksMTIgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihOZXR3b3JrUHJvY2VzcyYsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2FnZShjb25zdCBT
dHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKLSAgICB2b2lk
IHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBzcGFj
ZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpEZWNpc2lvbik+JiYpOwotCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3Qg
eyByZXR1cm4gISFtX2lvUXVldWU7fQogCiAgICAgdm9pZCB3cml0ZUZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZWFkRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0
YSYsIGludCBlcnJvcik+JiYpOwogICAgIHZvaWQgcmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKTsKLSAgICB2b2lkIHdyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qg
c2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHdyaXRlU2l6ZUZp
bGUoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qgc2l6ZSk7CiAgICAgc3RhdGljIE9wdGlvbmFsPHVp
bnQ2NF90PiByZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBjb25zdCBTdHJpbmcm
IHJvb3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcAppbmRleCBiYTEzNGNmNGNhYjAwNWYzNDIxMzg5ZDU1OTAxNjllYzQ3YWQ0ZTlk
Li42ZmM1M2UwM2M0ZDY3YTAwZmE5MWYyYjNmY2ZiZGQ3ZTExOTY4Y2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcApAQCAtNDE0LDExICs0MTQsOCBAQCB2b2lkIENhY2hlOjpwdXQoVmVj
dG9yPFJlY29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSAoc2FtZVVSTFJlY29yZHMgJiYgIW1hdGNoaW5n
UmVjb3Jkcy5pc0VtcHR5KCkpID8gc2FtZVVSTFJlY29yZHMtPmZpbmRNYXRjaGluZyhbJl0oY29u
c3QgYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS5pZGVudGlmaWVyID09IG1hdGNoaW5nUmVjb3Jk
c1swXTsgfSkgOiBub3RGb3VuZDsKIAogICAgICAgICBzcGFjZVJlcXVpcmVkICs9IHJlY29yZC5y
ZXNwb25zZUJvZHlTaXplOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIHVpbnQ2NF90IHNwYWNlRGVjcmVhc2VkID0gc2FtZVVSTFJlY29yZHMtPmF0KHBv
c2l0aW9uKS5zaXplOwotICAgICAgICAgICAgaWYgKHNwYWNlUmVxdWlyZWQgPj0gc3BhY2VEZWNy
ZWFzZWQpCi0gICAgICAgICAgICAgICAgc3BhY2VSZXF1aXJlZCAtPSBzcGFjZURlY3JlYXNlZDsK
LSAgICAgICAgfQorICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCisgICAgICAgICAg
ICBzcGFjZVJlcXVpcmVkIC09IHNhbWVVUkxSZWNvcmRzLT5hdChwb3NpdGlvbikuc2l6ZTsKICAg
ICB9CiAKICAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZCwgW2NhY2hlcyA9
IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNvcmRzID0g
V1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oT3B0aW9uYWw8
RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKQEAgLTQ1MywxMCArNDUw
LDcgQEAgdm9pZCBDYWNoZTo6cmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb24KICAgICAgICAgcmV0dXJuIHNob3VsZFJlbW92
ZTsKICAgICB9KTsKIAotICAgIC8vIFRoaXMgb3BlcmF0aW9uIHdvdWxkIGNoYW5nZSBjYWNoZXMg
c2l6ZSwgc28gbWFrZSBzdXJlIGNhbGxiYWNrIGZpbmlzaGVzIGFmdGVyIHNpemUgZmlsZSBpcyB1
cGRhdGVkLgotICAgIG1fY2FjaGVzLnVwZGF0ZVNpemVGaWxlKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCByZWNvcmRJZGVudGlmaWVycyA9IFdURk1vdmUocmVjb3JkSWRlbnRpZmllcnMp
XSgpIG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZElkZW50aWZpZXJz
KSk7Ci0gICAgfSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRJZGVudGlmaWVycykpOwog
fQogCiB2b2lkIENhY2hlOjpyZW1vdmVGcm9tUmVjb3JkTGlzdChjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiByZWNvcmRJZGVudGlmaWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAppbmRl
eCBmMjM3NDUxODNmZjcxNzU5MjdhNTAwYTVkMDZmN2M3YjIzYzFjZDIzLi4wM2EwNjBjZWYyYmM2
NzIwMTRiNzU5NmJjNWRhNGVlOTQzODYxYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwCkBAIC01NiwyMSArNTYsMzYgQEAgU3RyaW5nIENhY2hlczo6Y2FjaGVzU2l6ZUZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdHNQYXRoKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdHNQYXRoLCAiZXN0aW1hdGVkc2l6ZSJf
cyk7CiB9CiAKLVJlZjxDYWNoZXM+IENhY2hlczo6Y3JlYXRlKEVuZ2luZSYgZW5naW5lLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoKQorUmVmPENhY2hl
cz4gQ2FjaGVzOjpjcmVhdGUoRW5naW5lJiBlbmdpbmUsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
IG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXIm
IHF1b3RhTWFuYWdlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZXMgeyBlbmdp
bmUsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShyb290UGF0aCkgfSk7CisgICAgYXV0byBjYWNo
ZXMgPSBhZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKHJvb3RQYXRoKSwgcXVvdGFNYW5hZ2VyIH0pOworICAgIHF1b3RhTWFuYWdlci5hZGRVc2Vy
KGNhY2hlcy5nZXQoKSk7CisgICAgcmV0dXJuIGNhY2hlczsKIH0KIAotQ2FjaGVzOjpDYWNoZXMo
RW5naW5lJiBlbmdpbmUsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYg
cm9vdFBhdGgpCitDYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVuZ2luZSwgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlciYgcXVvdGFNYW5hZ2VyKQogICAgIDogbV9lbmdpbmUoJmVuZ2luZSkKICAgICAsIG1f
b3JpZ2luKFdURk1vdmUob3JpZ2luKSkKICAgICAsIG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0
aCkpCisgICAgLCBtX3F1b3RhTWFuYWdlcihtYWtlV2Vha1B0cihxdW90YU1hbmFnZXIpKQogewog
fQogCiBDYWNoZXM6On5DYWNoZXMoKQogewogICAgIEFTU0VSVChtX3BlbmRpbmdXcml0aW5nQ2Fj
aGVzVG9EaXNrQ2FsbGJhY2tzLmlzRW1wdHkoKSk7CisKKyAgICBpZiAobV9xdW90YU1hbmFnZXIp
CisgICAgICAgIG1fcXVvdGFNYW5hZ2VyLT5yZW1vdmVVc2VyKCp0aGlzKTsKK30KKwordm9pZCBD
YWNoZXM6OndoZW5Jbml0aWFsaXplZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit7CisgICAgaW5pdGlhbGl6ZShbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjppbml0aWFsaXplIGZhaWxlZCwg
cmVwb3J0ZWQgc3BhY2UgdXNlZCB3aWxsIGJlIHplcm8iKTsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTkzLDE0ICsyMDgsMTAgQEAgdm9pZCBDYWNoZXM6OmluaXRpYWxp
emUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgIH0pOwogfQogCi12b2lkIENhY2hlczo6dXBkYXRlU2l6ZUZpbGUoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDYWNoZXM6OnVwZGF0ZVNp
emVGaWxlKCkKIHsKLSAgICBpZiAoIW1fZW5naW5lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2VuZ2luZS0+d3JpdGVTaXpl
RmlsZShjYWNoZXNTaXplRmlsZW5hbWUobV9yb290UGF0aCksIG1fc2l6ZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGlmIChtX2VuZ2luZSkKKyAgICAgICAgbV9lbmdpbmUtPndy
aXRlU2l6ZUZpbGUoY2FjaGVzU2l6ZUZpbGVuYW1lKG1fcm9vdFBhdGgpLCBtX3NpemUpOwogfQog
CiB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZVNpemUoKQpAQCAtMjIxLDEyICsyMzIsMTMgQEAgdm9p
ZCBDYWNoZXM6OmluaXRpYWxpemVTaXplKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICAgICAgdXBkYXRl
U2l6ZUZpbGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0
aWFsaXphdGlvbkNhbGxiYWNrcyk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFj
ayA6IHBlbmRpbmdDYWxsYmFja3MpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6
bnVsbG9wdCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHVwZGF0ZVNpemVGaWxlKCk7
CisKKyAgICAgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICBhdXRv
IHBlbmRpbmdDYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJh
Y2tzKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBwZW5kaW5nQ2FsbGJhY2tz
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGRlY29kZWQgPSBDYWNoZTo6ZGVjb2Rl
UmVjb3JkSGVhZGVyKCpzdG9yYWdlKTsKQEAgLTI2MSwxMSArMjczLDEzIEBAIHZvaWQgQ2FjaGVz
OjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIG1fc3RvcmFnZS0+Y2xlYXIoU3RyaW5nIHsgfSwgLVdhbGxUaW1lOjppbmZpbml0eSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJlc2V0U3Bh
Y2VVc2VkKCk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCk7
CisgICAgcmVzZXRTcGFjZVVzZWQoKTsKICAgICBjbGVhclBlbmRpbmdXcml0aW5nQ2FjaGVzVG9E
aXNrQ2FsbGJhY2tzKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTUxMSwxMiAr
NTI1LDEyIEBAIHZvaWQgQ2FjaGVzOjpyZWFkUmVjb3Jkc0xpc3QoQ2FjaGUmIGNhY2hlLCBOZXR3
b3JrQ2FjaGU6OlN0b3JhZ2U6OlRyYXZlcnNlSGFuZGxlCiAKIHZvaWQgQ2FjaGVzOjpyZXF1ZXN0
U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNv
bXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGlmICghbV9lbmdpbmUpIHsKKyAg
ICBpZiAoIW1fcXVvdGFNYW5hZ2VyKSB7CiAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4
Y2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZW5naW5lLT5yZXF1ZXN0
U3BhY2UobV9vcmlnaW4sIHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICBtX3F1b3RhTWFuYWdlci0+cmVxdWVz
dFNwYWNlKHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRv
IGRlY2lzaW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewogICAgICAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55OgogICAg
ICAgICAgICAgY2FsbGJhY2soRXJyb3I6OlF1b3RhRXhjZWVkZWQpOwpAQCAtNTM0LDYgKzU0OCw3
IEBAIHZvaWQgQ2FjaGVzOjp3cml0ZVJlY29yZChjb25zdCBDYWNoZSYgY2FjaGUsIGNvbnN0IFJl
Y29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvCiAgICAgQVNTRVJUKG1fc2l6ZSA+PSBwcmV2aW91
c1JlY29yZFNpemUpOwogICAgIG1fc2l6ZSArPSByZWNvcmRJbmZvcm1hdGlvbi5zaXplOwogICAg
IG1fc2l6ZSAtPSBwcmV2aW91c1JlY29yZFNpemU7CisgICAgdXBkYXRlU2l6ZUZpbGUoKTsKIAog
ICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CiAgICAgICAgIG1fdm9sYXRpbGVTdG9yYWdlLnNl
dChyZWNvcmRJbmZvcm1hdGlvbi5rZXksIFdURk1vdmUocmVjb3JkKSk7CkBAIC01NDEsMTUgKzU1
NiwxMyBAQCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25z
dCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zdG9yYWdlLT5zdG9yZShDYWNoZTo6ZW5jb2RlKHJlY29yZEluZm9ybWF0aW9uLCBy
ZWNvcmQpLCB7IH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb3Rl
Y3RlZFN0b3JhZ2UgPSBtYWtlUmVmKCptX3N0b3JhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShpbnQgZXJyb3IpIG11dGFibGUgeworICAgIG1fc3RvcmFnZS0+c3RvcmUoQ2FjaGU6
OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwgcmVjb3JkKSwgeyB9LCBbcHJvdGVjdGVkU3RvcmFn
ZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGlu
dCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjp3cml0ZVJlY29yZCBmYWlsZWQg
d2l0aCBlcnJvciAlZCIsIGVycm9yKTsKICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0
ZURpc2spOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVwZGF0ZVNp
emVGaWxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKLSAgICAgICAgfSk7CisgICAgICAgIGNhbGxi
YWNrKFdURjo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKQEAgLTU5Miw3ICs2MDUsNyBAQCB2b2lk
IENhY2hlczo6cmVtb3ZlUmVjb3JkKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmQpCiAK
ICAgICBBU1NFUlQobV9zaXplID49IHJlY29yZC5zaXplKTsKICAgICBtX3NpemUgLT0gcmVjb3Jk
LnNpemU7Ci0gICAgdXBkYXRlU2l6ZUZpbGUoW10geyB9KTsKKyAgICB1cGRhdGVTaXplRmlsZSgp
OwogCiAgICAgcmVtb3ZlQ2FjaGVFbnRyeShyZWNvcmQua2V5KTsKIH0KQEAgLTYwOCw2ICs2MjEs
MTcgQEAgdm9pZCBDYWNoZXM6OnJlbW92ZUNhY2hlRW50cnkoY29uc3QgTmV0d29ya0NhY2hlOjpL
ZXkmIGtleSkKICAgICBtX3N0b3JhZ2UtPnJlbW92ZShrZXkpOwogfQogCit2b2lkIENhY2hlczo6
cmVzZXRTcGFjZVVzZWQoKQoreworICAgIG1fc2l6ZSA9IDA7CisgICAgdXBkYXRlU2l6ZUZpbGUo
KTsKKworICAgIGlmIChtX3F1b3RhTWFuYWdlcikgeworICAgICAgICBtX3F1b3RhTWFuYWdlci0+
cmVtb3ZlVXNlcigqdGhpcyk7CisgICAgICAgIG1fcXVvdGFNYW5hZ2VyLT5hZGRVc2VyKCp0aGlz
KTsKKyAgICB9Cit9CisKIHZvaWQgQ2FjaGVzOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCkK
IHsKICAgICBtYWtlRGlydHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCmluZGV4IDVkMzk0
YTBlNDg4NTdiMDI1Y2FhNDgzNGFkMjZiZTg0N2RkOWY1NTYuLjAzMjMxZjNhOWIwNTc2NzJkNjMx
YmI5NmU2N2E2ZWI5OWUxZDdjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2lu
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFVc2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKQEAgLTQxLDEw
ICs0MiwxMCBAQCBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKIAogY2xhc3MgRW5naW5lOwogCi1j
bGFzcyBDYWNoZXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZXM+IHsKK2NsYXNzIENh
Y2hlcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlcz4sIHByaXZhdGUgV2ViQ29yZTo6
U3RvcmFnZVF1b3RhVXNlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFN0cmluZyBjYWNoZXNTaXpl
RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290c1BhdGgpOwotICAgIHN0YXRpYyBSZWY8
Q2FjaGVzPiBjcmVhdGUoRW5naW5lJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYm
IHJvb3RQYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNhY2hlc1NpemVGaWxlbmFtZShjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYsIFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmLCBTdHJpbmcmJiByb290UGF0aCwgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
TWFuYWdlciYpOwogICAgIH5DYWNoZXMoKTsKIAogICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlT3Jp
Z2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+
JiYpPiYmKTsKQEAgLTc4LDE3ICs3OSwyMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oKTsKKyAgICB2b2lkIHJlc2V0U3BhY2VVc2VkKCk7CiAKICAgICB1aW50NjRf
dCBzdG9yYWdlU2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlU2l6ZUZpbGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBDYWNoZXMoRW5naW5lJiwgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIHJvb3RQYXRoKTsKKyAgICBDYWNoZXMoRW5n
aW5lJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIHJvb3RQYXRoLCBXZWJDb3Jl
OjpTdG9yYWdlUXVvdGFNYW5hZ2VyJik7CisKKyAgICAvLyBTdG9yYWdlUXVvdGFVc2VyIEFQSS4K
KyAgICB1aW50NjRfdCBzcGFjZVVzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0K
IAogICAgIHZvaWQgaW5pdGlhbGl6ZVNpemUoKTsKICAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkVycm9yPiYmKT4mJik7CiAgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogCisgICAgdm9p
ZCB3aGVuSW5pdGlhbGl6ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKwog
ICAgIHZvaWQgc3RvcmVPcmlnaW4oV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25D
YWxsYmFjayYmKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBy
ZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYpOwogCkBAIC0xMDAsNiArMTA2LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzQWN0aXZlQ2FjaGUoKSBjb25zdDsKIAorICAgIHZv
aWQgdXBkYXRlU2l6ZUZpbGUoKTsKKwogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2Ug
fTsKICAgICBFbmdpbmUqIG1fZW5naW5lIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90IG1fdXBk
YXRlQ291bnRlciB7IDAgfTsKQEAgLTExNCw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrPiBtX3BlbmRpbmdJ
bml0aWFsaXphdGlvbkNhbGxiYWNrczsKICAgICBib29sIG1faXNXcml0aW5nQ2FjaGVzVG9EaXNr
IHsgZmFsc2UgfTsKICAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj4pPj4gbV9wZW5kaW5nV3JpdGluZ0NhY2hlc1Rv
RGlza0NhbGxiYWNrczsKKyAgICBXZWFrUHRyPFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI+
IG1fcXVvdGFNYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAK
aW5kZXggNmQwYzEyOWE3NDA1MTBkMzg2OTczNzA1YWQwOTJlZjEzMmNjMDc1YS4uYzBmY2Y5YzVm
NjAwYWE1YWMxMTYzZTQ3YTRiMjZkYWM0MjA2NWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNTUsOCArNTUsNiBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogCiAgICAgZW5jb2RlciA8PCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPDwg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCi0gICAgZW5jb2RlciA8PCBj
YWNoZVN0b3JhZ2VEaXJlY3RvcnkgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwotCiAgICAgZW5jb2RlciA8PCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZW5jb2Rl
ciA8PCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogfQpAQCAtMTQzLDE4ICsxNDEs
NiBAQCBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIE9w
dGlvbmFsPFN0cmluZz4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIGRlY29kZXIgPj4gY2Fj
aGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGly
ZWN0b3J5ID0gV1RGTW92ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5KTsKLQotICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwotICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKLQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJPcmlnaW5TdG9yYWdl
UXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFw
ZXJPcmlnaW5TdG9yYWdlUXVvdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCBmMjdkZjQ4OTgwOWYzMTk2MDhiNjgwY2IyYThh
MWMxNGI3MDE4NDM5Li4wOTVmMDlkNmFmOTNmOTEzZWJiMjlmNzAyNjdhZTljMWI3NGJlODhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgKQEAgLTcxLDkgKzcxLDYgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsK
ICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAKLSAgICBTdHJp
bmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBj
YWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0KICAgICB1aW50NjRfdCBwZXJP
cmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0
UXVvdGEoKSB9OwogICAgIHVpbnQ2NF90IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEg
eyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKCkg
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCA5OWE0MDg2ZTIzZmQ2MDE2MWRjMDQxYjA4OGY3MWQw
YzA3NWY1YzcwLi43ZWI3NTc3NjRlOTQ4ZjVhNGRkNTc3ZWFiYmM2MjMxYTI3MzhjYWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5jcHAKQEAgLTY4NiwxMSArNjg2LDMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmUK
IHsKICAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDYWNoZU1vZGVsU3luY2hy
b25vdXNseUZvclRlc3RpbmcoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogfQot
Ci12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90
YUNhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnJlc2V0UXVvdGEoW2NvbnRleHQsIGNhbGxiYWNrXSB7Ci0gICAgICAgIGlmIChjYWxsYmFjaykK
LSAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwotICAgIH0pOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyM2ZjMmU3MjZmOTIwZjFhYjNkZjllZDBkMjdmZDA2MWFjMjk3MTRhLi45NTIzOWEzYjBiM2Fk
NjBjMmY3ODM3ZmU2ZjVhMTA3NzM2MWFmZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTU1LDkgKzE1NSw2
IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0
aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92CiAKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldENhY2hlTW9kZWxTeW5jaHJvbm91c2x5Rm9yVGVzdGluZyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS0NhY2hlTW9kZWwgY2FjaGVNb2RlbCk7CiAKLXR5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGFDYWxsYmFjaykodm9pZCogZnVu
Y3Rpb25Db250ZXh0KTsKLVdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVv
dGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrIGNhbGxiYWNrKTsKLQogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDRjNDFjOTM4YTg2N2RhYzYw
MjI3ZWU0MGQ2NzVjOTZmNGQ0ZjE4MzUuLmFkNTc5OTFlM2NhYzdjNWFmYmVmYzhhNjVmOWFmZjli
NDA5Y2E5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM2NywxMSArMTM2Nyw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpCiAgICAgbV9hY3Rpdml0
eUZyb21XZWJQcm9jZXNzZXMgPSBudWxscHRyOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRRdW90YShzZXNzaW9uSUQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiNzdjZTdkM2U2YWZlZTExYWU2MjAwOWNm
NjllY2Y0YjcwMGNkNTdhLi43MmNlNDI1NmJhYWUwN2M5MmVmY2Q0OThlMTMyMDZiYTI5OTQzYjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtNTYsNyArNTYsNiBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IDogYm9vbDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0
YTsKLXN0cnVjdCBDbGllbnRPcmlnaW47CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTk3
LDggKzE5Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyU2NoZW1lRm9yTGVnYWN5Q3Vz
dG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9y
TGVnYWN5Q3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KIHByaXZh
dGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CiAgICAgdm9pZCBnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDdlZWNhM2QzY2I0M2IzYjI2
NzA2MjlkMGZhY2RmNTExOTg4MGFiMTUuLjQwNjhlZTQxZmZjZDZkZjk1YTNkM2I1MTZiYmMyNTMw
ZTJjOTk4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTU1MSwxMiArNTUxLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBhdXRvIGNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFT
dG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxs
U3RyaW5nKCk7Ci0gICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnkg
PSBXVEZNb3ZlKGNhY2hlU3RvcmFnZURpcmVjdG9yeSk7Ci0gICAgfQotCiAgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7CiAgICAgaWYgKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDA3
MTk5ZWNhY2RjYjQ3NjQ5MDc0MzMyOGU5ODljYmFjNWJhYjRjYWIuLjBmZjNlYTA5NjMxYjU3N2Qx
ZWE3OTA4MjVlMzA1ZWU5MzIzZmJkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KQEAgLTE5MSwxMCArMTkxLDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
Ci0gICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNh
Y2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KICAgICBwYXJhbWV0ZXJzLnBl
ck9yaWdpblN0b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFt
ZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBhYzJmMzhkN2VkYjU0Zjdh
MjRhYmFkM2RhNDRlNTZkOGVkMzYxNzlkLi5iYjk4NDE2NjQ1NGI1NmFlYTRjOGRiZDQ4NWI3MjE0
MDBiYjE4NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjA4MywxMiArMjA4Myw2IEBAIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCi0gICAgYXV0byBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnkg
PSB0aGlzLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBpZiAoIWNhY2hlU3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVy
cy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICB9
Ci0KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCk7CiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCkBA
IC0yMTc1LDE1ICsyMTY5LDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKEZ1bmN0aW9uPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZUQKICAgICBBU1NFUlQo
IWNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNldFF1
b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgICAgIHByb2Nlc3MtPnJlc2V0UXVvdGEobV9z
ZXNzaW9uSUQsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOwotICAgIH0KLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIFdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCBmNWVlNDIyMDdkYTIwZjkyNzYxYWRiMTAyNTM5NmNkMWNhODFlZjkwLi4yNzg0
ZmUzN2UzZWE0YThhMThlNTU1MWQzOWIyY2EzOTkyMDdmYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0y
OTEsOSArMjkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgdm9p
ZCByZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KKyAgICAKIHByaXZh
dGU6CiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYm
LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ1NzQ2
ZDhlZmI1NjdmMGFkYTQ2ZTVmODU1NjJjNDA4YTM0NWM1NDcuLmE5MDViMmFkOTgxYjA1Njk1Yzgw
ODQ4NzJmZWUwYzYzZTM5MTE5YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMS0yMyAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjI1MjgwNS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDU1MworCisgICAgICAgIENhdXNlZCB0ZXN0IGZhaWx1cmVzIGFuZCBBU2FuIGNy
YXNoZXMgKFJlcXVlc3RlZCBieSBhcCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBS
ZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNyb3NzLXRocmVhZCB2ZXJzaW9uIFN0b3Jh
Z2VRdW90YU1hbmFnZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDM5NzEKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI1MjgwNQorCiAyMDE5LTExLTIzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBBcmNoaXZlIHN0ZXAgaXMgZmFpbGluZyBhZnRlciByMjUyODI3CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDgyNTJmOThkZTJmNTc5ZTQwNjU3NDQzOGM2Nzg4YzFlMzVm
ZWQxZGEuLmQ1NzY4ZWQzOGI0YmIwMWQwYjhlZGNiNGJiOWU2MGJjMzEyMjk1YjggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03MzgsNiArNzM4LDcgQEAKIAkJOTM5OUJBMDYyMzcxMTE0RjAw
ODM5MkJGIC8qIEluZGV4ZWREQk5vdEluUGFnZUNhY2hlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5OUJBMDMyMzcxMTBCRjAwODM5
MkJGIC8qIEluZGV4ZWREQk5vdEluUGFnZUNhY2hlLmh0bWwgKi87IH07CiAJCTkzQUY0RUNFMTUw
NkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQUY0RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JJbWFnZXNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNBRjRFRDExNTA2RjEzMDAwN0ZENTdF
IC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2Yt
aW1hZ2VzLmh0bWwgKi87IH07CisJCTkzQjYyMDU0MjM0RUE2MkMwMEQ0OUI5NyAvKiBTdG9yYWdl
UXVvdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjYyMDUzMjM0RUEzMkIwMEQ0OUI5NyAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNw
cCAqLzsgfTsKIAkJOTNDRkE4NjcxQ0VCOUUzODAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQt
aW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1pbnB1
dC5odG1sICovOyB9OwogCQk5M0QxMTlGQzIyQzY4MEY3MDA5QkUzQzcgLyogbG9jYWxzdG9yYWdl
LW9wZW4td2luZG93LXByaXZhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxMTlGQjIyQzU3MTEyMDA5QkUzQzcgLyogbG9jYWxz
dG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUuaHRtbCAqLzsgfTsKIAkJOTNFMkM1NTUxRkQzMjA0
MTAwRTFERjZBIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNFMkM1NTQxRkQzMjA0MTAwRTFERjZBIC8qIExpbmVFbmRpbmcu
Y3BwICovOyB9OwpAQCAtMTE0Miw2ICsxMTQzLDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0
QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJ
CQkJQ0Q4Mzk0REYyMzJBRjdDMDAwMTQ5NDk1IC8qIG1lZGlhLWxvYWRpbmcuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1NUE4MTdGRjIxODEwMjFBMDAwNEEzOUEgLyogMTAweDEwMC1y
ZWQudGdhIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdG
NSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTVBODE4
MDAyMTgxMDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nIGluIENvcHkgUmVzb3VyY2Vz
ICovLApAQCAtMTM3NCw3ICsxMzc2LDYgQEAKIAkJCQk5MzBBRDQwMjE1MDY5OEQwMDA2Nzk3MEYg
LyogbG90cy1vZi10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQUQ1N0FDMjIx
REE3NDY2RTAwRkYxQkRFIC8qIG1hbnktaWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTc3NzJFQ0UxMjJGRTA2QzYwMDA5QTc5OSAvKiBtYW55LXNhbWUtb3JpZ2luLWlmcmFt
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQlDRDgzOTRERjIzMkFGN0MwMDAxNDk0
OTUgLyogbWVkaWEtbG9hZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQTMx
NTlBMUVENTQ4RjEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBBc3NlcnRpb24uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREM5NDQyRjFFRjIwNUQ2MDA1OUMzQzQgLyogbWVk
aWFzdHJlYW10cmFjay1kZXRhY2hlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUx
MjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjE0OCw2ICsyMTQ5
LDcgQEAKIAkJOTNBRjRFQ0ExNTA2RjAzNTAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckltYWdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBRjRF
Q0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibG90cy1vZi1pbWFnZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQjYyMDUzMjM0RUEzMkIwMEQ0OUI5NyAvKiBTdG9yYWdlUXVvdGFNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YU1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NGQTg2NjFDRUI5REUx
MDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQ0ZBODY4MUNFQkNGRUQwMDA1NjVBOCAvKiBDYW5kaWRhdGVUZXN0
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENhbmRpZGF0ZVRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxMTlGQjIyQzU3MTEyMDA5
QkUzQzcgLyogbG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJsb2NhbHN0b3JhZ2Utb3Blbi13aW5kb3ctcHJpdmF0ZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMjUsNiArMzEyNyw3IEBACiAJCQkJ
NDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCiAJCQkJQTE3
OTkxODkxRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwICovLAogCQkJCUEx
Nzk5MThBMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmggKi8sCisJCQkJOTNC
NjIwNTMyMzRFQTMyQjAwRDQ5Qjk3IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuY3BwICovLAogCQkJ
CUVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkJ
Q0U0RDVERTUxRjY3NDNCQTAwNzJDRkM2IC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uY3BwICovLAog
CQkJCTkzQTI1ODk4MUY5MkZGMTUwMDNFNTEwQyAvKiBUZXh0Q29kZWMuY3BwICovLApAQCAtMzg1
Miw3ICszODU1LDYgQEAKIAkJCQk5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10
ZXh0Lmh0bWwgKi8sCiAJCQkJQUQ1N0FDMUQxREE3NDYzODAwRkYxQkRFIC8qIG1hbnktaWZyYW1l
cy5odG1sICovLAogCQkJCTc3NzJFQ0UwMjJGRTA1RTEwMDA5QTc5OSAvKiBtYW55LXNhbWUtb3Jp
Z2luLWlmcmFtZXMuaHRtbCAqLywKLQkJCQlDRDgzOTRERTIzMkFGMTVFMDAxNDk0OTUgLyogbWVk
aWEtbG9hZGluZy5odG1sICovLAogCQkJCUNEQzk0NDJCMUVGMUZCRDIwMDU5QzNDNCAvKiBtZWRp
YXN0cmVhbXRyYWNrLWRldGFjaGVkLmh0bWwgKi8sCiAJCQkJNTFDRDFDNzExQjM4RDQ4NDAwMTQy
Q0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi8sCiAJ
CQkJN0ExNDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1s
ICovLApAQCAtMzg4NCw2ICszODg2LDcgQEAKIAkJCQkwN0NEMzJGNzIwNjVCNzJBMDA2NEE0QkUg
LyogdmlkZW8uaHRtbCAqLywKIAkJCQkxQzJCODE4NDFDODkyNEEyMDBBNTUyOUYgLyogd2ViZm9u
dC5odG1sICovLAogCQkJCTQ2OEYyRjkzMjM2OERBQTcwMEY0Qjg2NCAvKiB3aW5kb3ctb3Blbi10
aGVuLWRvY3VtZW50LW9wZW4uaHRtbCAqLywKKwkJCQlDRDgzOTRERTIzMkFGMTVFMDAxNDk0OTUg
LyogbWVkaWEtbG9hZGluZy5odG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDg2NSw2ICs0ODY4LDcgQEAKIAkJCQk3Q0NF
N0VDRjFBNDExQTdFMDA0NDdDNEMgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDMDkzMkUyMUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BT
dXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTRBRDY4NjIyODVE
MUMwMDA3NzdGMkQgLyogU3RvcmFnZVF1b3RhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCNjIw
NTQyMzRFQTYyQzAwRDQ5Qjk3IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE1QkUxNzExRDQyOEU0QjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMDFBNDExQTdFMDA0NDdDNEMgLyogU3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VEMTFBNDExQTdFMDA0NDdDNEMgLyogU3RyaW5nVHJ1bmNhdG9yLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RvcmFn
ZVF1b3RhTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3Rv
cmFnZVF1b3RhTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxYzY3YmYwNTJmN2IwYTM0NTNkMDU0
ZjI1MjkxOTFlZWYzZjE3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEwMyBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VR
dW90YVVzZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0UXVvdGEgPSAxICogS0I7CisK
K2NsYXNzIE1vY2tRdW90YVVzZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
VXNlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTW9ja1F1b3RhVXNlcihTdG9yYWdlUXVvdGFN
YW5hZ2VyJiBtYW5hZ2VyKQorICAgICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKKyAgICB7Cisg
ICAgICAgIG1hbmFnZXIuYWRkVXNlcigqdGhpcyk7CisgICAgfQorCisgICAgdm9pZCBzZXRTcGFj
ZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKSB7IG1fc3BhY2VVc2VkID0gc3BhY2VVc2VkOyB9CisK
K3ByaXZhdGU6CisgICAgdWludDY0X3Qgc3BhY2VVc2VkKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3NwYWNlVXNlZDsKKyAgICB9CisKKyAgICB2b2lkIHdoZW5Jbml0aWFs
aXplZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAoIW1fc3BhY2VVc2VkKQorICAgICAgICAgICAgQVNTRVJUX0VRKG1fbWFuYWdl
ci0+c3RhdGUoKSwgU3RvcmFnZVF1b3RhTWFuYWdlcjo6U3RhdGU6OlVuaW5pdGlhbGl6ZWQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfRVEobV9tYW5hZ2VyLT5zdGF0ZSgpLCBT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpTdGF0ZTo6Q29tcHV0aW5nU3BhY2VVc2VkKTsKKworICAgICAg
ICAvLyBSZXNldCB1c2FnZSB0byBtb2NrIGRlbGV0aW9uLgorICAgICAgICBtX3NwYWNlVXNlZCA9
IDA7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorCisgICAgdWludDY0X3QgbV9zcGFjZVVz
ZWQgeyAwIH07CisgICAgU3RvcmFnZVF1b3RhTWFuYWdlciogbV9tYW5hZ2VyOworfTsKKyAgICAK
K1RFU1QoU3RvcmFnZVF1b3RhTWFuYWdlclRlc3QsIEJhc2ljKQoreworICAgIFN0b3JhZ2VRdW90
YU1hbmFnZXIqIHN0b3JhZ2VRdW90YU1hbmFnZXJQdHIgPSBudWxscHRyOworICAgIFN0b3JhZ2VR
dW90YU1hbmFnZXIgc3RvcmFnZVF1b3RhTWFuYWdlcihkZWZhdWx0UXVvdGEsIFsmc3RvcmFnZVF1
b3RhTWFuYWdlclB0cl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWlu
dDY0X3Qgc3BhY2VJbmNyZWFzZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50
NjRfdD4pPiYmIGNvbXBsZXRpb25IYW5sZGVyKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKHN0b3Jh
Z2VRdW90YU1hbmFnZXJQdHIpOworICAgICAgICBBU1NFUlRfRVEoc3RvcmFnZVF1b3RhTWFuYWdl
clB0ci0+c3RhdGUoKSwgU3RvcmFnZVF1b3RhTWFuYWdlcjo6U3RhdGU6OldhaXRpbmdGb3JTcGFj
ZUluY3JlYXNlUmVzcG9uc2UpOworCisgICAgICAgIC8vIEFsbG93IGFsbCBzcGFjZSBpbmNyZWFz
ZSByZXF1ZXN0cy4KKyAgICAgICAgY29tcGxldGlvbkhhbmxkZXIoc3BhY2VJbmNyZWFzZSArIGN1
cnJlbnRTcGFjZSk7CisgICAgfSk7CisgICAgc3RvcmFnZVF1b3RhTWFuYWdlclB0ciA9ICZzdG9y
YWdlUXVvdGFNYW5hZ2VyOworCisKKyAgICBNb2NrUXVvdGFVc2VyIG1vY2tVc2VyKHN0b3JhZ2VR
dW90YU1hbmFnZXIpOworCisgICAgLy8gR3JhbnQgZGlyZWN0bHkuCisgICAgc3RvcmFnZVF1b3Rh
TWFuYWdlci5yZXF1ZXN0U3BhY2UoMC4xICogS0IsIFsmXShXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpEZWNpc2lvbiBkZWNpc2lvbikgeworICAgICAgICBBU1NFUlRfRVEoZGVjaXNpb24s
IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAg
IG1vY2tVc2VyLnNldFNwYWNlVXNlZCgwLjEgKiBLQik7CisgICAgfSk7CisKKyAgICAvLyBHcmFu
dCBhZnRlciBjb21wdXRpbmcgYWNjdXJhdGUgdXNhZ2UuCisgICAgc3RvcmFnZVF1b3RhTWFuYWdl
ci5yZXF1ZXN0U3BhY2UoMS4wICogS0IsIFsmXShXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiBkZWNpc2lvbikgeworICAgICAgICBBU1NFUlRfRVEoZGVjaXNpb24sIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgIG1vY2tV
c2VyLnNldFNwYWNlVXNlZCgxLjAgKiBLQik7CisgICAgfSk7CisKKyAgICAvLyBHcmFudCBhZnRl
ciBjb21wdXRpbmcgYWNjdXJhdGUgdXNhZ2UgYW5kIHJlcXVlc3Rpbmcgc3BhY2UgaW5jcmVhc2Uu
CisgICAgc3RvcmFnZVF1b3RhTWFuYWdlci5yZXF1ZXN0U3BhY2UoMTAgKiBLQiwgWyZdKFdlYkNv
cmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uIGRlY2lzaW9uKSB7CisgICAgICAgIEFT
U0VSVF9FUShzdG9yYWdlUXVvdGFNYW5hZ2VyUHRyLT5zdGF0ZSgpLCBTdG9yYWdlUXVvdGFNYW5h
Z2VyOjpTdGF0ZTo6TWFraW5nRGVjaXNpb25Gb3JSZXF1ZXN0KTsKKyAgICAgICAgQVNTRVJUX0VR
KGRlY2lzaW9uLCBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6R3JhbnQp
OworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDI5MjE0YmZlM2ZhYWJkNjg0NWUz
YTkxMjk0ZWEwYmRjYWQ3MmE1NDIuLjNhMDdjMTM5ODFkZGMzMDU1OWZlYTg0YmQyOGZhMmZiYWRk
ZTU2ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05
ODEsOCArOTgxLDYgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBjbGVhclNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zKCk7CiAgICAgY2xlYXJET01DYWNoZXMoKTsKIAotICAgIHJlc2V0
UXVvdGEoKTsKLQogICAgIFdLQ29udGV4dFNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2Vy
dmljZVdvcmtlclRlc3RpbmcocGxhdGZvcm1Db250ZXh0KCksIHRydWUpOwogCiAgICAgV0tDb250
ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbnRleHQoKSk7CkBAIC0zMTQ0LDEzICszMTQyLDYgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBu
b1RpbWVvdXQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFF1b3RhKCkKLXsKLSAg
ICBTdG9yYWdlVm9pZENhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKLSAgICBXS1dlYnNp
dGVEYXRhU3RvcmVSZXNldFF1b3RhKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCks
ICZjb250ZXh0LCBTdG9yYWdlVm9pZENhbGxiYWNrKTsKLSAgICBydW5VbnRpbChjb250ZXh0LmRv
bmUsIG5vVGltZW91dCk7Ci19Ci0KIHN0cnVjdCBGZXRjaENhY2hlT3JpZ2luc0NhbGxiYWNrQ29u
dGV4dCB7CiAgICAgRmV0Y2hDYWNoZU9yaWdpbnNDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xs
ZXImIGNvbnRyb2xsZXIsIFdLU3RyaW5nUmVmIG9yaWdpbikKICAgICAgICAgOiB0ZXN0Q29udHJv
bGxlcihjb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IGFkNzFjODY4YzAyZmU1OGJiOWE4MzkyNzhmMGZkYjNmMWFkZWJlM2YuLjFiMjYxYmNkYTFi
YTBmMjFmMTc4NDkwOTJhMDI2YzYwZWFiYTk4NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTI2OSw4ICsyNjksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXJt
aW5hdGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoKTsKIAotICAgIHZvaWQgcmVzZXRRdW90YSgpOwotCiAgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKTsKIAogICAgIHZvaWQgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>