<?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>124068</bug_id>
          
          <creation_ts>2013-11-08 13:41:57 -0800</creation_ts>
          <short_desc>Merge IDBCursorBackendInterface and IDBCursorBackendImpl</short_desc>
          <delta_ts>2013-11-08 15:15:10 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948822</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 13:41:57 -0800</bug_when>
    <thetext>Merge IDBCursorBackendInterface and IDBCursorBackendImpl

No need for the abstraction anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948844</commentid>
    <comment_count>1</comment_count>
      <attachid>216437</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 14:10:26 -0800</bug_when>
    <thetext>Created attachment 216437
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948851</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 14:27:15 -0800</bug_when>
    <thetext>Thanks for the review - I&apos;ll rebase and run the updated patch by EWS before landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948852</commentid>
    <comment_count>3</comment_count>
      <attachid>216440</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 14:28:23 -0800</bug_when>
    <thetext>Created attachment 216440
Updated patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948855</commentid>
    <comment_count>4</comment_count>
      <attachid>216440</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-08 14:36:12 -0800</bug_when>
    <thetext>Comment on attachment 216440
Updated patch for EWS

Rejecting attachment 216440 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 216440, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/22508620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948861</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 14:47:05 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/158959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948871</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-08 15:15:10 -0800</bug_when>
    <thetext>Windows build fix followup in http://trac.webkit.org/changeset/158961</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216437</attachid>
            <date>2013-11-08 14:10:26 -0800</date>
            <delta_ts>2013-11-08 14:28:23 -0800</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73873</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Y5YWQyMS4uODVhNTRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc2MSw3ICs3NjEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCi0g
ICAgTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkMzdjYTRkLi4yZTliN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTMtMTEtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IE1lcmdlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgYW5kIElEQkN1cnNvckJhY2tlbmRJbXBs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQwNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oOiBSZW1vdmVkLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
aC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yV2l0aFZhbHVlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JX
aXRoVmFsdWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFj
a2VuZExldmVsREIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCLmg6CisKIDIwMTMtMTEtMDcgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEVuaGFuY2UgU1FMIGpvdXJuYWxfbW9kZSBzZXR0
aW5nIGNvZGUgdG8gYmUgbGVzcyBsaWtlbHkgdG8gbG9nIGFuIGVycm9yLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggNjc3ZGEzNy4uZTM2ZjViNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC0xNzk0LDkgKzE3OTQsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBcCi0JU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNr
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5k
ZXggNmQwYjUxNC4uOWVkMzkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKLWNsYXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U7CitjbGFzcyBJREJDdXJzb3JCYWNrZW5kOwogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOwogCiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogICAgIC8vIEZyb20gSURCRmFjdG9yeS53ZWJraXRHZXREYXRhYmFzZU5hbWVzKCkK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pID0g
MDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4Lm9wZW5DdXJzb3IoKSwgSURC
SW5kZXgub3BlbktleUN1cnNvcigpCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4s
IFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3RvcmUuYWRk
KCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQklu
ZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3VzIG1ldGhvZHMgdGhhdCB5aWVsZCBudWxsL3Vu
ZGVmaW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwCmluZGV4IDM5NzM2ZmYuLjEyNjZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIklE
QkFueS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJD
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiSURCQ3Vyc29yQmFja2VuZC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgpAQCAtNDMsNyArNDMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJD
dXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVx
dWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bhc3NS
ZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmQ+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURC
UmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvcihiYWNrZW5kLCBkaXJl
Y3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKIH0KQEAgLTczLDcgKzczLDcg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblByZXZVbmlxdWUoKQog
fQogCiAKLUlEQkN1cnNvcjo6SURCQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJ
REJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
PiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVl
c3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAg
ICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaAppbmRleCBjMGY3YjYwLi5jNmE3NDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01SZXF1ZXN0U3RhdGU7CiBjbGFzcyBJREJBbnk7CiBj
bGFzcyBJREJDYWxsYmFja3M7Ci1jbGFzcyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOworY2xh
c3MgSURCQ3Vyc29yQmFja2VuZDsKIGNsYXNzIElEQlJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gc3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBt
b2RlU3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQgc2hvcnQgbW9kZSk7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFu
eSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1
cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4sIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
Kik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yKCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElE
TApAQCAtODIsMTMgKzgyLDEzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRi
UHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVudFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVk
OgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJ
REJUcmFuc2FjdGlvbiopOworICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmQ+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291
cmNlLCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBlZmZlY3RpdmVPYmplY3RTdG9yZSgpOwogCi0gICAgUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKKyAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4g
bV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgY29uc3Qg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgUmVmUHRyPElEQkFu
eT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjgwMWIzMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmNwcApAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kLmgiCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCT3BlcmF0aW9uLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIElEQkN1cnNvckJhY2tlbmQ6OkN1cnNvckl0ZXJhdGlvbk9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vy
c29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdXJzb3JJdGVyYXRp
b25PcGVyYXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykpOworICAgIH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOworcHJpdmF0ZToKKyAgICBDdXJzb3JJdGVy
YXRpb25PcGVyYXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjdXJzb3IsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisg
ICAgICAgIDogbV9jdXJzb3IoY3Vyc29yKQorICAgICAgICAsIG1fa2V5KGtleSkKKyAgICAgICAg
LCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxJREJD
dXJzb3JCYWNrZW5kPiBtX2N1cnNvcjsKKyAgICBSZWZQdHI8SURCS2V5PiBtX2tleTsKKyAgICBS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKK2NsYXNzIElEQkN1cnNvckJh
Y2tlbmQ6OkN1cnNvckFkdmFuY2VPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbihjdXJzb3IsIGNvdW50LCBjYWxsYmFja3Mp
KTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKK3By
aXZhdGU6CisgICAgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmQ+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2N1cnNvcihjdXJzb3IpCisgICAgICAgICwgbV9j
b3VudChjb3VudCkKKyAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAg
IH0KKworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBtX2N1cnNvcjsKKyAgICB1bnNpZ25l
ZCBsb25nIG1fY291bnQ7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9
OworCitjbGFzcyBJREJDdXJzb3JCYWNrZW5kOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vy
c29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Vyc29yUHJlZmV0Y2hJdGVy
YXRpb25PcGVyYXRpb24oY3Vyc29yLCBudW1iZXJUb0ZldGNoLCBjYWxsYmFja3MpKTsKKyAgICB9
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKK3ByaXZhdGU6Cisg
ICAgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kPiBjdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fY3Vyc29yKGN1cnNvcikKKyAgICAgICAgLCBtX251
bWJlclRvRmV0Y2gobnVtYmVyVG9GZXRjaCkKKyAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFj
a3MpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBtX2N1cnNv
cjsKKyAgICBpbnQgbV9udW1iZXJUb0ZldGNoOworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1f
Y2FsbGJhY2tzOworfTsKKworSURCQ3Vyc29yQmFja2VuZDo6SURCQ3Vyc29yQmFja2VuZChQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNr
VHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAgIDogbV90YXNrVHlwZSh0YXNrVHlwZSkKKyAg
ICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQorICAgICwgbV9kYXRhYmFzZSgmKHRyYW5zYWN0
aW9uLT5kYXRhYmFzZSgpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAg
LCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKKyAgICAsIG1fY3Vyc29yKGN1cnNvcikK
KyAgICAsIG1fY2xvc2VkKGZhbHNlKQoreworICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyT3Bl
bkN1cnNvcih0aGlzKTsKK30KKworSURCQ3Vyc29yQmFja2VuZDo6fklEQkN1cnNvckJhY2tlbmQo
KQoreworICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJPcGVuQ3Vyc29yKHRoaXMpOworfQor
CisKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJikKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJhY2tlbmQ6OmNvbnRp
bnVlIik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVy
YXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxiYWNrcykpOworfQorCit2b2lk
IElEQkN1cnNvckJhY2tlbmQ6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgTE9H
KFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kOjphZHZhbmNlIik7CisgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIG1fdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY291bnQs
IGNhbGxiYWNrcykpOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OkN1cnNvckFkdmFuY2VP
cGVyYXRpb246OnBlcmZvcm0oKQoreworICAgIExPRyhTdG9yYWdlQVBJLCAiQ3Vyc29yQWR2YW5j
ZU9wZXJhdGlvbiIpOworICAgIGlmICghbV9jdXJzb3ItPm1fY3Vyc29yIHx8ICFtX2N1cnNvci0+
bV9jdXJzb3ItPmFkdmFuY2UobV9jb3VudCkpIHsKKyAgICAgICAgbV9jdXJzb3ItPm1fY3Vyc29y
ID0gMDsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPigwKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKG1fY3Vyc29yLT5rZXkoKSwgbV9jdXJzb3ItPnByaW1hcnlLZXkoKSwgbV9jdXJz
b3ItPnZhbHVlKCkpOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OkN1cnNvckl0ZXJhdGlv
bk9wZXJhdGlvbjo6cGVyZm9ybSgpCit7CisgICAgTE9HKFN0b3JhZ2VBUEksICJDdXJzb3JJdGVy
YXRpb25PcGVyYXRpb24iKTsKKyAgICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJz
b3ItPm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKG1fa2V5LmdldCgpKSkgeworICAgICAgICBt
X2N1cnNvci0+bV9jdXJzb3IgPSAwOworICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobV9jdXJzb3ItPmtleSgpLCBtX2N1cnNvci0+cHJp
bWFyeUtleSgpLCBtX2N1cnNvci0+dmFsdWUoKSk7Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFja2Vu
ZDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
RXhjZXB0aW9uQ29kZSYpCit7CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5k
OjpkZWxldGUiKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSA9IElEQktleVJhbmdlOjpjcmVhdGUobV9jdXJzb3ItPnByaW1hcnlLZXkoKSk7CisgICAgbV9k
YXRhYmFzZS0+ZGVsZXRlUmFuZ2UobV90cmFuc2FjdGlvbi5nZXQoKS0+aWQoKSwgbV9vYmplY3RT
dG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNlKCksIHBycENhbGxiYWNrcyk7Cit9CisKK3ZvaWQgSURC
Q3Vyc29yQmFja2VuZDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAg
TE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kOjpwcmVmZXRjaENvbnRpbnVlIik7Cisg
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIG1f
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0ZXJh
dGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOwor
fQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0
aW9uOjpwZXJmb3JtKCkKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnNvclByZWZldGNoSXRl
cmF0aW9uT3BlcmF0aW9uIik7CisKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+IGZvdW5kS2V5
czsKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+IGZvdW5kUHJpbWFyeUtleXM7CisgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBmb3VuZFZhbHVlczsKKworICAgIGlmIChtX2N1cnNv
ci0+bV9jdXJzb3IpCisgICAgICAgIG1fY3Vyc29yLT5tX3NhdmVkQ3Vyc29yID0gbV9jdXJzb3It
Pm1fY3Vyc29yLT5jbG9uZSgpOworCisgICAgY29uc3Qgc2l6ZV90IG1heFNpemVFc3RpbWF0ZSA9
IDEwICogMTAyNCAqIDEwMjQ7CisgICAgc2l6ZV90IHNpemVFc3RpbWF0ZSA9IDA7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fbnVtYmVyVG9GZXRjaDsgKytpKSB7CisgICAgICAgIGlmICgh
bV9jdXJzb3ItPm1fY3Vyc29yIHx8ICFtX2N1cnNvci0+bV9jdXJzb3ItPmNvbnRpbnVlRnVuY3Rp
b24oMCkpIHsKKyAgICAgICAgICAgIG1fY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQobV9jdXJzb3It
Pm1fY3Vyc29yLT5rZXkoKSk7CisgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKG1fY3Vy
c29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsKKworICAgICAgICBzd2l0Y2ggKG1fY3Vyc29y
LT5tX2N1cnNvclR5cGUpIHsKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleU9ubHk6
CisgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFu
ZFZhbHVlOgorICAgICAgICAgICAgc2l6ZUVzdGltYXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+
dmFsdWUoKS0+c2l6ZSgpOworICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29y
LT5tX2N1cnNvci0+dmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPmtleSgpLT5zaXplRXN0aW1hdGUo
KTsKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtl
eSgpLT5zaXplRXN0aW1hdGUoKTsKKworICAgICAgICBpZiAoc2l6ZUVzdGltYXRlID4gbWF4U2l6
ZUVzdGltYXRlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFmb3VuZEtl
eXMuc2l6ZSgpKSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oMCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWxs
YmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMs
IGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJREJDdXJzb3JCYWNrZW5kOjpwcmVmZXRjaFJlc2V0
KGludCB1c2VkUHJlZmV0Y2hlcywgaW50KQoreworICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vy
c29yQmFja2VuZDo6cHJlZmV0Y2hSZXNldCIpOworICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNv
cjsKKyAgICBtX3NhdmVkQ3Vyc29yID0gMDsKKworICAgIGlmIChtX2Nsb3NlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX2N1cnNvcikgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2wgb2sgPSBtX2N1cnNvci0+
Y29udGludWVGdW5jdGlvbigpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OmNsb3NlKCkKK3sK
KyAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJhY2tlbmQ6OmNsb3NlIik7CisgICAgbV9j
bG9zZWQgPSB0cnVlOworICAgIG1fY3Vyc29yLmNsZWFyKCk7CisgICAgbV9zYXZlZEN1cnNvci5j
bGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNDNmZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5k
ZWYgSURCQ3Vyc29yQmFja2VuZF9oCisjZGVmaW5lIElEQkN1cnNvckJhY2tlbmRfaAorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJL
ZXlSYW5nZTsKKworY2xhc3MgSURCQ3Vyc29yQmFja2VuZCA6IHB1YmxpYyBSZWZDb3VudGVkPElE
QkN1cnNvckJhY2tlbmQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZh
Y2U+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZChjdXJz
b3IsIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywg
dHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vy
c29ySW50ZXJmYWNlPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmQoY3Vy
c29yLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsK
KyAgICB9CisgICAgfklEQkN1cnNvckJhY2tlbmQoKTsKKworICAgIHZvaWQgYWR2YW5jZSh1bnNp
Z25lZCBsb25nLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcHJlZmV0
Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hl
cywgaW50IHVudXNlZFByZWZldGNoZXMpOworICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2Fs
bGJhY2soKSB7IH0KKworICAgIElEQktleSoga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3It
PmtleSgpLmdldCgpOyB9CisgICAgSURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJzb3ItPnByaW1hcnlLZXkoKS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogdmFsdWUo
KSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25s
eSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCkuZ2V0KCk7IH0KKworICAgIHZvaWQgY2xvc2UoKTsK
KworcHJpdmF0ZToKKyAgICBJREJDdXJzb3JCYWNrZW5kKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlQ3Vyc29ySW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworCisgICAgY2xhc3MgQ3Vyc29ySXRlcmF0aW9uT3Bl
cmF0aW9uOworICAgIGNsYXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247CisgICAgY2xhc3MgQ3Vy
c29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247CisKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CisgICAgSW5kZXhlZERCOjpDdXJzb3JUeXBl
IG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBtX2RhdGFiYXNlOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IG1fdHJhbnNhY3Rpb247CisgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CisK
KyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBtX2N1cnNvcjsgLy8g
TXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gbV9zYXZlZEN1cnNvcjsgLy8gTXVzdCBiZSBkZXN0
cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCisKKyAgICBib29sIG1fY2xvc2VkOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNlbmRpZiAvLyBJREJDdXJzb3JCYWNrZW5kX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ5NWIzNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0KLSNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCIKLSNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCi0j
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uIDogcHVi
bGljIElEQk9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3Bl
cmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVy
YXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwotcHJpdmF0ZToKLSAgICBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yLCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAg
ICAgICA6IG1fY3Vyc29yKGN1cnNvcikKLSAgICAgICAgLCBtX2tleShrZXkpCi0gICAgICAgICwg
bV9jYWxsYmFja3MoY2FsbGJhY2tzKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEltcGw+IG1fY3Vyc29yOwotICAgIFJlZlB0cjxJREJLZXk+IG1fa2V5OwotICAg
IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwotfTsKLQotY2xhc3MgSURCQ3Vyc29y
QmFja2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9u
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvckFkdmFuY2VPcGVyYXRpb24oY3Vyc29yLCBjb3VudCwg
Y2FsbGJhY2tzKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUg
RklOQUw7Ci1wcml2YXRlOgotICAgIEN1cnNvckFkdmFuY2VPcGVyYXRpb24oUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yLCB1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1fY3Vyc29yKGN1cnNvcikK
LSAgICAgICAgLCBtX2NvdW50KGNvdW50KQotICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNr
cykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBtX2N1
cnNvcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fY291bnQ7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gbV9jYWxsYmFja3M7Ci19OwotCi1jbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29y
UHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbihjdXJzb3IsIG51bWJlclRv
RmV0Y2gsIGNhbGxiYWNrcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9W
RVJSSURFIEZJTkFMOwotcHJpdmF0ZToKLSAgICBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJh
dGlvbihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IsIGludCBudW1iZXJU
b0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1f
Y3Vyc29yKGN1cnNvcikKLSAgICAgICAgLCBtX251bWJlclRvRmV0Y2gobnVtYmVyVG9GZXRjaCkK
LSAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgewotICAgIH0KLQotICAgIFJl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gbV9jdXJzb3I7Ci0gICAgaW50IG1fbnVtYmVyVG9G
ZXRjaDsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKLX07Ci0KLUlEQkN1
cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkKQotICAgIDogbV90YXNrVHlwZSh0YXNrVHlwZSkKLSAgICAsIG1fY3Vyc29yVHlw
ZShjdXJzb3JUeXBlKQotICAgICwgbV9kYXRhYmFzZSgmKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgp
KSkKLSAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgLCBtX29iamVjdFN0b3Jl
SWQob2JqZWN0U3RvcmVJZCkKLSAgICAsIG1fY3Vyc29yKGN1cnNvcikKLSAgICAsIG1fY2xvc2Vk
KGZhbHNlKQotewotICAgIG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyT3BlbkN1cnNvcih0aGlzKTsK
LX0KLQotSURCQ3Vyc29yQmFja2VuZEltcGw6On5JREJDdXJzb3JCYWNrZW5kSW1wbCgpCi17Ci0g
ICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3Rlck9wZW5DdXJzb3IodGhpcyk7Ci19Ci0KLQotdm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25D
b2RlJikKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250
aW51ZSIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKLSAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29ySXRl
cmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5LCBjYWxsYmFja3MpKTsKLX0KLQotdm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKLXsKLSAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlIik7Ci0gICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIG1fdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgY291bnQsIGNhbGxiYWNrcykpOwotfQotCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpD
dXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpwZXJmb3JtKCkKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwg
IkN1cnNvckFkdmFuY2VPcGVyYXRpb24iKTsKLSAgICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8
fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5hZHZhbmNlKG1fY291bnQpKSB7Ci0gICAgICAgIG1fY3Vy
c29yLT5tX2N1cnNvciA9IDA7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhtX2N1cnNvci0+a2V5KCksIG1fY3Vyc29yLT5wcmltYXJ5
S2V5KCksIG1fY3Vyc29yLT52YWx1ZSgpKTsKLX0KLQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Q3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKCkKLXsKLSAgICBMT0coU3RvcmFn
ZUFQSSwgIkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiIpOwotICAgIGlmICghbV9jdXJzb3ItPm1f
Y3Vyc29yIHx8ICFtX2N1cnNvci0+bV9jdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24obV9rZXkuZ2V0
KCkpKSB7Ci0gICAgICAgIG1fY3Vyc29yLT5tX2N1cnNvciA9IDA7Ci0gICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhtX2N1cnNvci0+a2V5
KCksIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCksIG1fY3Vyc29yLT52YWx1ZSgpKTsKLX0KLQotdm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgTE9HKFN0b3JhZ2VB
UEksICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHkpOwotICAgIFJl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6Y3JlYXRlKG1fY3Vyc29y
LT5wcmltYXJ5S2V5KCkpOwotICAgIG1fZGF0YWJhc2UtPmRlbGV0ZVJhbmdlKG1fdHJhbnNhY3Rp
b24uZ2V0KCktPmlkKCksIG1fb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UucmVsZWFzZSgpLCBwcnBD
YWxsYmFja3MpOwotfQotCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRp
bnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJh
Y2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOwotfQotCi12b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybSgpCi17Ci0g
ICAgTE9HKFN0b3JhZ2VBUEksICJDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbiIpOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBmb3VuZEtleXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxJREJLZXk+PiBmb3VuZFByaW1hcnlLZXlzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gZm91bmRWYWx1ZXM7Ci0KLSAgICBpZiAobV9jdXJzb3ItPm1fY3Vyc29yKQotICAgICAg
ICBtX2N1cnNvci0+bV9zYXZlZEN1cnNvciA9IG1fY3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUoKTsK
LQotICAgIGNvbnN0IHNpemVfdCBtYXhTaXplRXN0aW1hdGUgPSAxMCAqIDEwMjQgKiAxMDI0Owot
ICAgIHNpemVfdCBzaXplRXN0aW1hdGUgPSAwOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X251bWJlclRvRmV0Y2g7ICsraSkgewotICAgICAgICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8
fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKSB7Ci0gICAgICAgICAg
ICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQotICAgICAgICBmb3VuZEtleXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+a2V5KCkpOwot
ICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnByaW1h
cnlLZXkoKSk7Ci0KLSAgICAgICAgc3dpdGNoIChtX2N1cnNvci0+bV9jdXJzb3JUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5OgotICAgICAgICAgICAgZm91bmRW
YWx1ZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JLZXlBbmRWYWx1ZToKLSAgICAgICAgICAg
IHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCktPnNpemUoKTsKLSAg
ICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChtX2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9j
dXJzb3ItPm1fY3Vyc29yLT5rZXkoKS0+c2l6ZUVzdGltYXRlKCk7Ci0gICAgICAgIHNpemVFc3Rp
bWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlLZXkoKS0+c2l6ZUVzdGltYXRlKCk7
Ci0KLSAgICAgICAgaWYgKHNpemVFc3RpbWF0ZSA+IG1heFNpemVFc3RpbWF0ZSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICghZm91bmRLZXlzLnNpemUoKSkgewotICAgICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goZm91bmRLZXlzLCBmb3VuZFByaW1hcnlLZXlzLCBmb3VuZFZhbHVlcyk7Ci19Ci0K
LXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRj
aGVzLCBpbnQpCi17Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6
cHJlZmV0Y2hSZXNldCIpOwotICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKLSAgICBtX3Nh
dmVkQ3Vyc29yID0gMDsKLQotICAgIGlmIChtX2Nsb3NlZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChtX2N1cnNvcikgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRj
aGVzOyArK2kpIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5j
dGlvbigpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSgpCi17Ci0gICAgTE9H
KFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y2xvc2UiKTsKLSAgICBtX2Nsb3Nl
ZCA9IHRydWU7Ci0gICAgbV9jdXJzb3IuY2xlYXIoKTsKLSAgICBtX3NhdmVkQ3Vyc29yLmNsZWFy
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRlNzY3YzEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0KLSNpZm5kZWYgSURCQ3Vyc29yQmFja2VuZEltcGxfaAotI2RlZmluZSBJREJDdXJzb3JC
YWNrZW5kSW1wbF9oCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUg
IklEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCi0jaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJ
REJLZXlSYW5nZTsKLQotY2xhc3MgSURCQ3Vyc29yQmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNv
ckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNr
ZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKLSAgICB9Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNr
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJD
dXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5k
SW1wbCgpOwotCi0gICAgLy8gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZQotICAgIHZpcnR1YWwg
dm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBu
dW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1
bnVzZWRQcmVmZXRjaGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2Fs
bGJhY2soKSB7IH0KLQotICAgIHZpcnR1YWwgSURCS2V5KiBrZXkoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2N1cnNvci0+a2V5KCkuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIElEQktleSogcHJp
bWFyeUtleSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCku
Z2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNoYXJlZEJ1ZmZlciogdmFsdWUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAw
IDogbV9jdXJzb3ItPnZhbHVlKCkuZ2V0KCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgp
IE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiwgSW5kZXhlZERCOjpDdXJzb3JUeXBl
LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotCi0gICAgY2xhc3MgQ3Vy
c29ySXRlcmF0aW9uT3BlcmF0aW9uOwotICAgIGNsYXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247
Ci0gICAgY2xhc3MgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247Ci0KLSAgICBJREJE
YXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7Ci0gICAgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgaW50NjRfdCBtX29i
amVjdFN0b3JlSWQ7Ci0KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNl
PiBtX2N1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCi0g
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gbV9zYXZlZEN1cnNvcjsg
Ly8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCi0KLSAgICBib29sIG1f
Y2xvc2VkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCi0KLSNlbmRpZiAvLyBJREJDdXJzb3JCYWNrZW5kSW1wbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OTJi
NDEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZV9oCi0jZGVmaW5lIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2VfaAotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSURCQ2FsbGJhY2tzOwotY2xhc3MgSURCS2V5
OwotY2xhc3MgSURCUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQotdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKCkge30KLQotICAgIHZpcnR1YWwgdm9p
ZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJl
ZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGlu
dCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIElE
QktleSoga2V5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgSURCS2V5KiBwcmltYXJ5S2V5KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2hhcmVkQnVmZmVyKiB2YWx1ZSgpIGNvbnN0ID0gMDsK
LQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldp
dGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JX
aXRoVmFsdWUuY3BwCmluZGV4IDQwMzYxMTEuLjkwZWM1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmNwcApAQCAt
MjgsMTIgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1
ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JCYWNr
ZW5kLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNv
dXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JX
aXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZD4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJ
REJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJh
Y2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAt
NDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0
aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3VycwogICAgIHJldHVybiBjdXJzb3JX
aXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldp
dGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK0lEQkN1cnNvcldp
dGhWYWx1ZTo6SURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4g
YmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIDogSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFu
c2FjdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKaW5kZXggMTU4MjNhMC4uMGJiNGZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJDdXJz
b3JXaXRoVmFsdWUgOiBwdWJsaWMgSURCQ3Vyc29yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCos
IElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4s
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZh
bHVlPiBmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7CiAgICAgdmlydHVhbCB+SURC
Q3Vyc29yV2l0aFZhbHVlKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0
KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZh
bHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IGVmMTg0
MGQuLjE2MmU5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiSURCQ3Vyc29yQmFja2VuZC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZjM1
NDFhNy4uYzgwNTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IG1heWJlQ3JlYXRlVHJhbnNhY3Rpb25CYWNrZW5kKElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZSosIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJ
bmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU0
ZDA0MWIuLjk1ZDhjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJp
bmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgi
CisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZC5oIgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhW
YWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNw
YXRjaGVyLmgiCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVu
dChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQkN1
cnNvcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDdhZGJhZmYuLjVmNTliN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwg
dm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktl
eVBhdGgmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggODI4ZDE1MS4uN2FiODhi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpAQCAtMTUzLDEyICsxNTMsMTIgQEAg
Ym9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3MoKSBjb25zdAog
ICAgIHJldHVybiBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5
KCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cmVnaXN0ZXJPcGVuQ3Vy
c29yKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UqIGN1cnNvcikKK3ZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmQqIGN1cnNv
cikKIHsKICAgICBtX29wZW5DdXJzb3JzLmFkZChjdXJzb3IpOwogfQogCi12b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2UqIGN1cnNvcikKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdp
c3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZCogY3Vyc29yKQogewogICAgIG1fb3BlbkN1
cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPioKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjbG9zZU9wZW5D
dXJzb3JzKCkKIHsKLSAgICBmb3IgKEhhc2hTZXQ8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSo+
OjppdGVyYXRvciBpID0gbV9vcGVuQ3Vyc29ycy5iZWdpbigpOyBpICE9IG1fb3BlbkN1cnNvcnMu
ZW5kKCk7ICsraSkKKyAgICBmb3IgKEhhc2hTZXQ8SURCQ3Vyc29yQmFja2VuZCo+OjppdGVyYXRv
ciBpID0gbV9vcGVuQ3Vyc29ycy5iZWdpbigpOyBpICE9IG1fb3BlbkN1cnNvcnMuZW5kKCk7ICsr
aSkKICAgICAgICAgKCppKS0+Y2xvc2UoKTsKICAgICBtX29wZW5DdXJzb3JzLmNsZWFyKCk7CiB9
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hl
ZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGEKICAgICBzY2hlZHVs
ZVRhc2soQ2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwg
ZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vy
c29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVh
dGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJ
bmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIHJl
dHVybiBtX2RhdGFiYXNlLT5mYWN0b3J5QmFja2VuZCgpLmNyZWF0ZUN1cnNvckJhY2tlbmQoKnRo
aXMsIGN1cnNvciwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIG9iamVjdFN0b3JlSWQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDdlNmIzNDguLjYxOWE2MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmgKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZVRhc2soUGFzc093blB0cjxJREJPcGVyYXRpb24+IHRhc2ssIFBhc3NPd25QdHI8SURC
T3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKSB7IHNjaGVkdWxlVGFzayhJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFz
a1R5cGUsIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiwgUGFzc093blB0cjxJREJPcGVyYXRpb24+
IGFib3J0VGFzayA9IG51bGxwdHIpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1
cnNvckJhY2tlbmQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5D
dXJzb3IoSURCQ3Vyc29yQmFja2VuZCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFk
ZFByZWVtcHRpdmVFdmVudCgpIE9WRVJSSURFIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cysr
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCkgT1ZFUlJJ
REUgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzLS07IEFTU0VSVChtX3BlbmRpbmdQcmVlbXB0
aXZlRXZlbnRzID49IDApOyB9CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVEZWxldGVSYW5nZU9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJS
SURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSBGSU5B
TDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVDdXJz
b3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREU7CiAKIHBy
aXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKiwgaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0
IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsKICAgICBpbnQgbV9wZW5kaW5nUHJlZW1wdGl2
ZUV2ZW50czsKIAotICAgIEhhc2hTZXQ8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSo+IG1fb3Bl
bkN1cnNvcnM7CisgICAgSGFzaFNldDxJREJDdXJzb3JCYWNrZW5kKj4gbV9vcGVuQ3Vyc29yczsK
ICAgICAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9y
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDUwN2I3MDkuLjU5
MDJjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC02Myw4ICs2Myw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8SURC
T3BlcmF0aW9uPiwgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiwgUGFzc093blB0cjxJ
REJPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNv
ckJhY2tlbmQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElE
QkN1cnNvckJhY2tlbmQqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDcmVhdGVP
YmplY3RTdG9yZU9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZURlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiBiYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZSYgZGF0YWJhc2UoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5n
U3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNr
ZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKSA9IDA7CiAKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCmluZGV4IGEzNjlhMDYuLjMy
NWFlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kT3BlcmF0aW9ucy5oIgogCi0jaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkluZGV4V3JpdGVyLmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2UuaCIKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246
OnBlcmZvcm0oKQogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0
YXNrVHlwZShzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
PihtX3Rhc2tUeXBlKSk7CiAKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4g
Y3Vyc29yID0gbV90cmFuc2FjdGlvbi0+Y3JlYXRlQ3Vyc29yQmFja2VuZCgqYmFja2luZ1N0b3Jl
Q3Vyc29yLCBtX2N1cnNvclR5cGUsIHRhc2tUeXBlLCBtX29iamVjdFN0b3JlSWQpOworICAgIFJl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVDdXJz
b3JCYWNrZW5kKCpiYWNraW5nU3RvcmVDdXJzb3IsIG1fY3Vyc29yVHlwZSwgdGFza1R5cGUsIG1f
b2JqZWN0U3RvcmVJZCk7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1cnNv
ci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZh
Y3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggNzk2YTFhMS4uZGZi
Y2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzEs
NyArMzEsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkJh
Y2tpbmdTdG9yZUxldmVsREIuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgor
I2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCkBAIC0xOTcsOSArMTk3LDkgQEAgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxE
Qjo6bWF5YmVDcmVhdGUKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3Jl
YXRlKHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZEltcGwqPihiYWNrZW5kKSwgdHJhbnNh
Y3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBtb2RlKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBJREJGYWN0b3J5QmFja2VuZExl
dmVsREI6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
JiB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgYmFj
a2luZ1N0b3JlQ3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQorUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBJREJGYWN0b3J5QmFja2VuZExl
dmVsREI6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
JiB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgYmFj
a2luZ1N0b3JlQ3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQogewotICAgIHJldHVybiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKCZiYWNr
aW5nU3RvcmVDdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCAmdHJhbnNhY3Rpb25CYWNrZW5k
LCBvYmplY3RTdG9yZUlkKTsKKyAgICByZXR1cm4gSURCQ3Vyc29yQmFja2VuZDo6Y3JlYXRlKCZi
YWNraW5nU3RvcmVDdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCAmdHJhbnNhY3Rpb25CYWNr
ZW5kLCBvYmplY3RTdG9yZUlkKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExl
dmVsREIuaAppbmRleCBkYWQxMGY4Li44NmY1MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJh
Y2tlbmRMZXZlbERCLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbWF5YmVDcmVhdGVUcmFu
c2FjdGlvbkJhY2tlbmQoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiwgaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiwgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpIE9WRVJSSURFIEZJTkFMOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgSURCQmFja2lu
Z1N0b3JlQ3Vyc29ySW50ZXJmYWNlJiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5k
KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUN1cnNvcklu
dGVyZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuQmFja2luZ1N0
b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBj
NWRiZTM4Li4yZjY5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjQzLDcgKzE2NDMsNyBAQAogCQk1MTAxODQ2OTBCMDg2
MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAx
ODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5jcHAgKi87IH07CiAJCTUxMDU5RERCMTgyMEIxNzYwMERGRjlCMSAvKiBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDU5REQ3MTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmNwcCAqLzsgfTsKLQkJNTEwNTlEREMxODIwQjE3NjAwREZGOUIxIC8qIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDU5REQ4MTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmggKi87IH07CisJCTUxMDU5RERDMTgyMEIxNzYwMERGRjlCMSAvKiBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTA1OUREODE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxMDU5REREMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRP
cGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMDU5REQ5MTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVy
YXRpb25zLmNwcCAqLzsgfTsKIAkJNTEwNTlEREUxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5z
YWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDU5RERBMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlv
bkJhY2tlbmRPcGVyYXRpb25zLmggKi87IH07CiAJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAv
KiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUVycm9yQmFzZS5jcHAgKi87IH07CkBAIC0xNjg3LDcgKzE2ODcsNyBAQAogCQk1MTJERDhGQzBE
OTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJj
aGl2ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTEyREQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMzBEOTFF
NkFGMDAwRjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCAqLzsgfTsKIAkJNTEyRUE5QkMxODFGMkVF
MDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRUE5QkIxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBl
bmRpbmdPcGVuQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTUxMkVBOUJFMTgyMDI4NTcwMDFEMDFFMCAvKiBJREJPcGVyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkVBOUJEMTgyMDI4
NTcwMDFEMDFFMCAvKiBJREJPcGVyYXRpb24uaCAqLzsgfTsKKwkJNTEyRUE5QkUxODIwMjg1NzAw
MUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyRUE5QkQxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMzI3
RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBT
aW5rRG9jdW1lbnQuaCAqLzsgfTsKIAkJNTEzMjdENjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtE
b2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAqLzsgfTsKIAkJ
NTEzRjE0NTMwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRjE0NTEwQUI2MzRDNDAwMDk0RERG
IC8qIEljb25Mb2FkZXIuY3BwICovOyB9OwpAQCAtMTcyNSw4ICsxNzI1LDYgQEAKIAkJNTE0Qzc2
N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjY5MENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgKi87IH07CiAJCTUxNEM3NjdGMENFOTIz
QTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NkEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJl
c291cmNlUmVzcG9uc2VCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE1Nzg4QzExMjA3ODUyQzAwQTM3QzRBIC8qIFZpc2l0ZWRMaW5rU3Ry
YXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NTc4OEMwMTIwNzg1MkMwMEEzN0M0QSAvKiBWaXNpdGVkTGlua1N0cmF0ZWd5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE1QzMyMTUxODIxNkE1
QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUMzMjEzMTgyMTZBNUIwMEE2REFBOSAvKiBJ
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgKi87IH07Ci0JCTUxNUMzMjE2MTgyMTZBNUIwMEE2REFB
OSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1QzMyMTQxODIxNkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJh
Y2tlbmRJbXBsLmggKi87IH07CiAJCTUxNjAzMDBCMENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lz
dGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07
CiAJCTUxNjAzMDZDMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MDMwNkIwQ0M0MzYyMzAw
QzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi87IH07CiAJCTUxNjBGNDk4MEIwQUE3NUYwMEMx
RDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1h
Yy5tbSAqLzsgfTsKQEAgLTE3NDQsNiArMTc0Miw4IEBACiAJCTUxNjYwQUMzMTgyOEM4NDYwMDA3
NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjYwQUJGMTgyOEM4NDYwMDA3NENB
RCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCAqLzsgfTsKIAkJNTE2NjBB
QzYxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQzQxODI4
Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNjYwQUM3MTgyOEM4
NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQzUxODI4Qzg2
MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE2NzMwQTMxODJE
OEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NzMwQTExODJEOEZCQjAwM0ZBRjVDIC8qIElE
QkN1cnNvckJhY2tlbmQuY3BwICovOyB9OworCQk1MTY3MzBBNDE4MkQ4RkJCMDAzRkFGNUMgLyog
SURCQ3Vyc29yQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2NzMwQTIxODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTY5NTM5
NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY5NTM5NTEzMjlBM0M4MDBCOTJEMDQg
LyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi87IH07CiAJCTUxNjk1Mzk4MTMyOUEzQzgwMEI5MkQw
NCAvKiBJY29uRGF0YWJhc2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTY5NTM5NjEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
NkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QkI3OTIwQ0U5MUU2ODAw
NTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi87IH07CkBAIC0xNzgwLDcgKzE3ODAs
NiBAQAogCQk1MUQ3MTlCRTE4MTEwNkUwMDAxNkRDNTEgLyogSURCQ2FsbGJhY2tzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk3NDE4MTEwNkRG
MDAxNkRDNTEgLyogSURCQ2FsbGJhY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFENzE5QkYxODExMDZFMDAwMTZEQzUxIC8qIElEQkN1cnNv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3
MTk3NTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJNTFENzE5QzAx
ODExMDZFMDAwMTZEQzUxIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFENzE5NzYxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNv
ci5oICovOyB9OwotCQk1MUQ3MTlDMjE4MTEwNkUwMDAxNkRDNTEgLyogSURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFENzE5NzgxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQ3
MTlDMzE4MTEwNkUwMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTc5MTgxMTA2REYwMDE2
REM1MSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuY3BwICovOyB9OwogCQk1MUQ3MTlDNDE4MTEwNkUw
MDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk3QTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vy
c29yV2l0aFZhbHVlLmggKi87IH07CiAJCTUxRDcxOUM2MTgxMTA2RTAwMDE2REM1MSAvKiBJREJE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQ3MTk3QzE4MTEwNkRGMDAxNkRDNTEgLyogSURCRGF0YWJhc2UuY3BwICovOyB9OwpAQCAt
NTMzMyw3ICs1MzMyLDYgQEAKIAkJQ0Q1NERFNEIxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vz
c2lvbk1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLzsgfTsK
IAkJQ0Q2MUZFNjcxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTExNUI1
Q0UyMjAwRDUyNUQxIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwICovOyB9OwogCQlDRDYxRkU2
ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBOTQyRTIxNUI1Q0UyMjAwRDUyNUQx
IC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCAqLzsgfTsKLQogCQlDRDY0MUVCMzE4MThGNUVEMDBF
RTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlLmggKi87IH07CiAJCUNENjQxRUI0MTgxOEY1RUQwMEVFNEM0MSAvKiBTb3VyY2VC
dWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICov
OyB9OwogCQlDRDY0MUVCRjE4MTlCMzYwMDBFRTRDNDEgLyogTWVkaWFUaW1lTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENjQxRUJEMTgxOUIz
NTkwMEVFNEM0MSAvKiBNZWRpYVRpbWVNYWMuY3BwICovOyB9OwpAQCAtODQwMCw4ICs4Mzk4LDYg
QEAKIAkJNTE0Qzc2NjkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NkEwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNTc4OEMwMTIwNzg1MkMwMEEzN0M0QSAvKiBWaXNpdGVkTGlua1N0cmF0ZWd5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RyYXRlZ3kuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE1QzMyMTMxODIxNkE1QjAwQTZEQUE5IC8q
IElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTE1QzMyMTQxODIxNkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMyNSAv
KiBGaWxlU3lzdGVtUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2
MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIaXN0b3J5SXRlbU1h
Yy5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5SXRlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0MTksNiArODQxNSw4IEBACiAJCTUxNjYwQUJGMTgyOEM4NDYwMDA3NENBRCAv
KiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjYwQUM0MTgyOEM4NjAwMDA3NENBRCAvKiBJREJC
YWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNjYwQUM1MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTY3MzBBMTE4MkQ4RkJCMDAzRkFGNUMgLyogSURCQ3Vyc29yQmFja2VuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NzMwQTIxODJEOEZCQjAwM0ZB
RjVDIC8qIElEQkN1cnNvckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCQ3Vyc29yQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY5
NTM5NTEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2OTUzOTYxMzI5QTNDODAwQjkyRDA0IC8qIEljb25EYXRh
YmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvbkRhdGFiYXNl
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTZCQjc5MjBDRTkxRTY4MDA1
MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTVHJlZVdhbGtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NDYyLDcgKzg0NjAsNiBAQAogCQk1MUQ3MTk3NTE4MTEwNkRGMDAxNkRDNTEg
LyogSURCQ3Vyc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
QkN1cnNvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTc2MTgxMTA2
REYwMDE2REM1MSAvKiBJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTc3MTgx
MTA2REYwMDE2REM1MSAvKiBJREJDdXJzb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElE
QkN1cnNvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDcxOTc4MTgxMTA2
REYwMDE2REM1MSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFENzE5NzkxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNv
cldpdGhWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJD
dXJzb3JXaXRoVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQ3MTk3
QTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvcldpdGhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUQ3MTk3QjE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZh
bHVlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3JXaXRoVmFsdWUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5MzUsOSArMTY5MzIsOCBAQAogCQkJCTUx
RDcxOTc1MTgxMTA2REYwMDE2REM1MSAvKiBJREJDdXJzb3IuY3BwICovLAogCQkJCTUxRDcxOTc2
MTgxMTA2REYwMDE2REM1MSAvKiBJREJDdXJzb3IuaCAqLywKIAkJCQk1MUQ3MTk3NzE4MTEwNkRG
MDAxNkRDNTEgLyogSURCQ3Vyc29yLmlkbCAqLywKLQkJCQk1MTVDMzIxMzE4MjE2QTVCMDBBNkRB
QTkgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwICovLAotCQkJCTUxNUMzMjE0MTgyMTZBNUIw
MEE2REFBOSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICovLAotCQkJCTUxRDcxOTc4MTgxMTA2
REYwMDE2REM1MSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8sCisJCQkJNTE2NzMw
QTExODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwICovLAorCQkJCTUxNjcz
MEEyMTgyRDhGQkIwMDNGQUY1QyAvKiBJREJDdXJzb3JCYWNrZW5kLmggKi8sCiAJCQkJNTFENzE5
NzkxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAgKi8sCiAJCQkJNTFE
NzE5N0ExODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5oICovLAogCQkJCTUx
RDcxOTdCMTgxMTA2REYwMDE2REM1MSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaWRsICovLApAQCAt
MjI4ODMsNyArMjI4NzksNiBAQAogCQkJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAvKiBHZW9s
b2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjcxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFG
MjgxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxNUMzMjE2MTgyMTZBNUIwMEE2REFBOSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MUExN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvck1l
ZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkExNEY0
RERFNjAwM0U3QTcwIC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzE2LDcg
KzIzMzExLDYgQEAKIAkJCQk4NDgyQjc1MjExOThDQjZCMDBCRkIwMDUgLyogSlNIYXNoQ2hhbmdl
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTREMTRGMEMyNzVDNjgwMDZCQzYxNyAvKiBK
U0hpc3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAv
KiBKU0hUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQ3MTlDMjE4MTEw
NkUwMDAxNkRDNTEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE0QTJERjAwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFuY2hvckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNEEyREYyMEExQjg1MkEwMEM4MDdGOCAvKiBKU0hUTUxBcHBs
ZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUExRjBBMUNEQUI0MDBCNDJCMjUg
LyogSlNIVE1MQXJlYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0ODgsNiArMjM0ODIs
NyBAQAogCQkJCUFBN0ZFRUE3MTZBNEU2RjMwMDRDMEMzMyAvKiBKU1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQTkxNkE0RTZGMzAwNEMwQzMzIC8q
IEpTU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0MzI5MEQw
Q0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY3MzBB
NDE4MkQ4RkJCMDAzRkFGNUMgLyogSURCQ3Vyc29yQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjUyNUE5NjUxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhjZXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3Vs
dFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0MDAsNyArMjYzOTUsNiBAQAogCQkJ
CTgyQUIxNzczMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHls
ZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1
MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MTVDMzIxNTE4MjE2QTVCMDBBNkRBQTkgLyogSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTczRDEzNDcxNENFMzlG
RjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yNzI0NSw2ICsyNzIzOSw3IEBACiAJCQkJMzcxRTY1Q0UxMzY2MUVFRDAwQkVF
REIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTk3RjI2MTc1
NjhBRTUwMDdCOTQ0MiAvKiBQYWdlVGhyb3R0bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
Mjg0QUVBMTA0NDdERUUwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxNjczMEEzMTgyRDhGQkIwMDNGQUY1QyAvKiBJREJDdXJzb3JCYWNrZW5k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdl
VVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGRDVCOTdBMTM1Q0M5NzgwMEQ1RTky
QSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEEy
MTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOTdkODhlMC4uOTkyN2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTEx
LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIGFuZCBJREJDdXJzb3JCYWNrZW5kSW1wbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJGYWN0b3J5QmFja2VuZDo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmg6
CisKIDIwMTMtMTEtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbmNvZGUgYW5kIGRlY29kZSBOU1VSTFJlc3BvbnNlIG9iamVjdHMgdXNpbmcgTlND
b2RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKaW5kZXggYzE1
YzdjNi4uMGMxNmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZC5oIgogI2luY2x1ZGUgIldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSURCQ2FsbGJhY2tzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JCYWNrZW5k
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMTA2LDcgKzEwNiw3IEBAIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBXZWJJREJGYWN0b3J5QmFja2VuZDo6bWF5YmVD
cmVhdGVUcmFuCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4gV2ViSURCRmFjdG9yeUJhY2tlbmQ6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJm
YWNlJiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OlRhc2tUeXBlLCBpbnQ2NF90KQorUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBXZWJJREJG
YWN0b3J5QmFja2VuZDo6Y3JlYXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1
cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5
QmFja2VuZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKaW5kZXggYmZlNWVmYy4uMjRlMDI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZh
Y3RvcnlCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gbWF5YmVDcmVhdGVUcmFuc2FjdGlvbkJhY2tlbmQoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+Jiwg
V2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZUN1cnNvckJhY2tlbmQoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwg
V2ViQ29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlJiwgV2ViQ29yZTo6SW5kZXhl
ZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRh
c2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5kKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwg
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJREJG
YWN0b3J5QmFja2VuZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcik7
Cg==
</data>
<flag name="review"
          id="239403"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216440</attachid>
            <date>2013-11-08 14:28:23 -0800</date>
            <delta_ts>2013-11-08 14:36:12 -0800</delta_ts>
            <desc>Updated patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>72886</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Y5YWQyMS4uODVhNTRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc2MSw3ICs3NjEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCi0g
ICAgTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5NzBmOWFjLi44NDc1NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTMtMTEtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IE1lcmdlIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgYW5kIElEQkN1cnNvckJhY2tlbmRJbXBs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQwNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oOiBSZW1vdmVkLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
aC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yV2l0aFZhbHVlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JX
aXRoVmFsdWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFj
a2VuZExldmVsREIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCLmg6CisKIDIwMTMtMTEtMDggIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb2RlIGd1YXJkZWQgd2l0aCBF
TkFCTEUoU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjc5ZWUyYS4u
ZTM1ZTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNzk0LDkgKzE3OTQs
OCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggNmQwYjUxNC4uOWVkMzkwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTM5LDcg
KzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NU3RyaW5nTGlzdDsKLWNs
YXNzIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U7CitjbGFzcyBJREJDdXJzb3JCYWNrZW5kOwog
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOwogCiBzdHJ1Y3QgSURCRGF0YWJhc2VN
ZXRhZGF0YTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIEZyb20gSURCRmFjdG9y
eS53ZWJraXRHZXREYXRhYmFzZU5hbWVzKCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3Jl
L0lEQkluZGV4Lm9wZW5DdXJzb3IoKSwgSURCSW5kZXgub3BlbktleUN1cnNvcigpCi0gICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0
cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAg
IC8vIEZyb20gSURCT2JqZWN0U3RvcmUuYWRkKCkvcHV0KCksIElEQkluZGV4LmdldEtleSgpCiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICAv
LyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3Vz
IG1ldGhvZHMgdGhhdCB5aWVsZCBudWxsL3VuZGVmaW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDM5NzM2ZmYuLjEyNjZkZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZC5oIgogI2lu
Y2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAi
SURCUmVxdWVzdC5oIgpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKK1Bhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNy
ZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3Vy
Y2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQkN1cnNvcihiYWNrZW5kLCBkaXJlY3Rpb24sIHJlcXVlc3QsIHNvdXJjZSwgdHJhbnNh
Y3Rpb24pKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJz
b3I6OmRpcmVjdGlvblByZXZVbmlxdWUoKQogfQogCiAKLUlEQkN1cnNvcjo6SURCQ3Vyc29yKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNv
dXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorSURCQ3Vyc29yOjpJREJDdXJzb3Io
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBiYWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3QqIHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKICAg
ICAsIG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBjMGY3YjYw
Li5jNmE3NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01SZXF1
ZXN0U3RhdGU7CiBjbGFzcyBJREJBbnk7CiBjbGFzcyBJREJDYWxsYmFja3M7Ci1jbGFzcyBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOworY2xhc3MgSURCQ3Vyc29yQmFja2VuZDsKIGNsYXNzIElE
QlJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gc3RyaW5n
VG9EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBtb2RlU3RyaW5nLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uVG9TdHJpbmcodW5zaWduZWQg
c2hvcnQgbW9kZSk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3I+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZD4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURC
QW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yKCk7
CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETApAQCAtODIsMTMgKzgyLDEzIEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiUHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fY3VycmVu
dFByaW1hcnlLZXk7IH0KIAogcHJvdGVjdGVkOgotICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURC
UmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQkN1cnNv
cihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZp
cnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0
ZToKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBlZmZlY3RpdmVPYmplY3RTdG9yZSgp
OwogCi0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKKyAg
ICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiBtX3JlcXVlc3Q7CiAgICAgY29uc3QgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbV9k
aXJlY3Rpb247CiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMWIzMTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmNwcApAQCAt
MCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJD
dXJzb3JCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgIklEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5o
IgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJEYXRh
YmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRl
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5j
bHVkZSAiSURCT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkN1cnNvckJh
Y2tlbmQ6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29yLCBrZXksIGNhbGxi
YWNrcykpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFM
OworcHJpdmF0ZToKKyAgICBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgICAgIDogbV9jdXJzb3IoY3Vyc29yKQorICAg
ICAgICAsIG1fa2V5KGtleSkKKyAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAg
eworICAgIH0KKworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBtX2N1cnNvcjsKKyAgICBS
ZWZQdHI8SURCS2V5PiBtX2tleTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNr
czsKK307CisKK2NsYXNzIElEQkN1cnNvckJhY2tlbmQ6OkN1cnNvckFkdmFuY2VPcGVyYXRpb24g
OiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciwg
dW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlv
bihjdXJzb3IsIGNvdW50LCBjYWxsYmFja3MpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm0oKSBPVkVSUklERSBGSU5BTDsKK3ByaXZhdGU6CisgICAgQ3Vyc29yQWR2YW5jZU9wZXJh
dGlvbihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBj
b3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2N1
cnNvcihjdXJzb3IpCisgICAgICAgICwgbV9jb3VudChjb3VudCkKKyAgICAgICAgLCBtX2NhbGxi
YWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kPiBtX2N1cnNvcjsKKyAgICB1bnNpZ25lZCBsb25nIG1fY291bnQ7CisgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9OworCitjbGFzcyBJREJDdXJzb3JCYWNrZW5kOjpD
dXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vyc29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29yLCBudW1iZXJU
b0ZldGNoLCBjYWxsYmFja3MpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBP
VkVSUklERSBGSU5BTDsKK3ByaXZhdGU6CisgICAgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVy
YXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjdXJzb3IsIGludCBudW1iZXJUb0Zl
dGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgICAgICA6IG1fY3Vy
c29yKGN1cnNvcikKKyAgICAgICAgLCBtX251bWJlclRvRmV0Y2gobnVtYmVyVG9GZXRjaCkKKyAg
ICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIFJlZlB0
cjxJREJDdXJzb3JCYWNrZW5kPiBtX2N1cnNvcjsKKyAgICBpbnQgbV9udW1iZXJUb0ZldGNoOwor
ICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKworSURCQ3Vyc29yQmFj
a2VuZDo6SURCQ3Vyc29yQmFja2VuZChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvcklu
dGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorICAg
IDogbV90YXNrVHlwZSh0YXNrVHlwZSkKKyAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQor
ICAgICwgbV9kYXRhYmFzZSgmKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKSkKKyAgICAsIG1fdHJh
bnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJ
ZCkKKyAgICAsIG1fY3Vyc29yKGN1cnNvcikKKyAgICAsIG1fY2xvc2VkKGZhbHNlKQoreworICAg
IG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyT3BlbkN1cnNvcih0aGlzKTsKK30KKworSURCQ3Vyc29y
QmFja2VuZDo6fklEQkN1cnNvckJhY2tlbmQoKQoreworICAgIG1fdHJhbnNhY3Rpb24tPnVucmVn
aXN0ZXJPcGVuQ3Vyc29yKHRoaXMpOworfQorCisKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZDo6Y29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQkN1cnNvckJhY2tlbmQ6OmNvbnRpbnVlIik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxl
VGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXksIGNhbGxiYWNrcykpOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OmFkdmFuY2UodW5z
aWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
RXhjZXB0aW9uQ29kZSYpCit7CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5k
OjphZHZhbmNlIik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JBZHZhbmNlT3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgY291bnQsIGNhbGxiYWNrcykpOworfQorCit2b2lkIElEQkN1
cnNvckJhY2tlbmQ6OkN1cnNvckFkdmFuY2VPcGVyYXRpb246OnBlcmZvcm0oKQoreworICAgIExP
RyhTdG9yYWdlQVBJLCAiQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbiIpOworICAgIGlmICghbV9jdXJz
b3ItPm1fY3Vyc29yIHx8ICFtX2N1cnNvci0+bV9jdXJzb3ItPmFkdmFuY2UobV9jb3VudCkpIHsK
KyAgICAgICAgbV9jdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPigwKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG1fY3Vyc29yLT5rZXkoKSwgbV9j
dXJzb3ItPnByaW1hcnlLZXkoKSwgbV9jdXJzb3ItPnZhbHVlKCkpOworfQorCit2b2lkIElEQkN1
cnNvckJhY2tlbmQ6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybSgpCit7CisgICAg
TE9HKFN0b3JhZ2VBUEksICJDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24iKTsKKyAgICBpZiAoIW1f
Y3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9u
KG1fa2V5LmdldCgpKSkgeworICAgICAgICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOworICAgICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobV9j
dXJzb3ItPmtleSgpLCBtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBtX2N1cnNvci0+dmFsdWUoKSk7
Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgTE9HKFN0
b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kOjpkZWxldGUiKTsKKyAgICBBU1NFUlQobV90cmFu
c2FjdGlvbi0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seSk7CisgICAg
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpjcmVhdGUobV9jdXJz
b3ItPnByaW1hcnlLZXkoKSk7CisgICAgbV9kYXRhYmFzZS0+ZGVsZXRlUmFuZ2UobV90cmFuc2Fj
dGlvbi5nZXQoKS0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBrZXlSYW5nZS5yZWxlYXNlKCksIHBy
cENhbGxiYWNrcyk7Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZDo6cHJlZmV0Y2hDb250aW51
ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNr
cywgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNr
ZW5kOjpwcmVmZXRjaENvbnRpbnVlIik7CisgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzID0gcHJwQ2FsbGJhY2tzOworICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rh
c2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51
bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OkN1
cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKCkKK3sKKyAgICBMT0coU3Rv
cmFnZUFQSSwgIkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uIik7CisKKyAgICBWZWN0
b3I8UmVmUHRyPElEQktleT4+IGZvdW5kS2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+
IGZvdW5kUHJpbWFyeUtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBmb3Vu
ZFZhbHVlczsKKworICAgIGlmIChtX2N1cnNvci0+bV9jdXJzb3IpCisgICAgICAgIG1fY3Vyc29y
LT5tX3NhdmVkQ3Vyc29yID0gbV9jdXJzb3ItPm1fY3Vyc29yLT5jbG9uZSgpOworCisgICAgY29u
c3Qgc2l6ZV90IG1heFNpemVFc3RpbWF0ZSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgc2l6ZV90
IHNpemVFc3RpbWF0ZSA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtYmVyVG9G
ZXRjaDsgKytpKSB7CisgICAgICAgIGlmICghbV9jdXJzb3ItPm1fY3Vyc29yIHx8ICFtX2N1cnNv
ci0+bV9jdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oMCkpIHsKKyAgICAgICAgICAgIG1fY3Vyc29y
LT5tX2N1cnNvciA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGZvdW5kS2V5cy5hcHBlbmQobV9jdXJzb3ItPm1fY3Vyc29yLT5rZXkoKSk7CisgICAgICAgIGZv
dW5kUHJpbWFyeUtleXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpKTsK
KworICAgICAgICBzd2l0Y2ggKG1fY3Vyc29yLT5tX2N1cnNvclR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBJbmRleGVkREI6OkN1cnNvcktleU9ubHk6CisgICAgICAgICAgICBmb3VuZFZhbHVlcy5hcHBl
bmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBJbmRleGVkREI6OkN1cnNvcktleUFuZFZhbHVlOgorICAgICAgICAgICAgc2l6ZUVzdGlt
YXRlICs9IG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKS0+c2l6ZSgpOworICAgICAgICAgICAg
Zm91bmRWYWx1ZXMuYXBwZW5kKG1fY3Vyc29yLT5tX2N1cnNvci0+dmFsdWUoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9j
dXJzb3ItPmtleSgpLT5zaXplRXN0aW1hdGUoKTsKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IG1f
Y3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpLT5zaXplRXN0aW1hdGUoKTsKKworICAgICAg
ICBpZiAoc2l6ZUVzdGltYXRlID4gbWF4U2l6ZUVzdGltYXRlKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaChm
b3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJREJD
dXJzb3JCYWNrZW5kOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50KQorewor
ICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQ3Vyc29yQmFja2VuZDo6cHJlZmV0Y2hSZXNldCIpOwor
ICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKKyAgICBtX3NhdmVkQ3Vyc29yID0gMDsKKwor
ICAgIGlmIChtX2Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2N1cnNvcikgewor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsKKyAgICAg
ICAgICAgIGJvb2wgb2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigpOworICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElE
QkN1cnNvckJhY2tlbmQ6OmNsb3NlKCkKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNv
ckJhY2tlbmQ6OmNsb3NlIik7CisgICAgbV9jbG9zZWQgPSB0cnVlOworICAgIG1fY3Vyc29yLmNs
ZWFyKCk7CisgICAgbV9zYXZlZEN1cnNvci5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDNmZjc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSURCQ3Vyc29yQmFja2VuZF9oCisjZGVmaW5l
IElEQkN1cnNvckJhY2tlbmRfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNp
bmNsdWRlICJJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJLZXlSYW5nZTsKKworY2xhc3MgSURCQ3Vyc29yQmFj
a2VuZCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmQ+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGN1cnNvciwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCQ3Vyc29yQmFja2VuZChjdXJzb3IsIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsK
KyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBjdXJzb3IsIEluZGV4ZWRE
Qjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRh
c2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkN1cnNvckJhY2tlbmQoY3Vyc29yLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgdHJh
bnNhY3Rpb24sIG9iamVjdFN0b3JlSWQpKTsKKyAgICB9CisgICAgfklEQkN1cnNvckJhY2tlbmQo
KTsKKworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25nLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwcmVm
ZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpOworICAg
IHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IH0KKworICAgIElEQktleSoga2V5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpLmdldCgpOyB9CisgICAgSURCS2V5KiBw
cmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKS5nZXQoKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBl
ID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCkuZ2V0
KCk7IH0KKworICAgIHZvaWQgY2xvc2UoKTsKKworcHJpdmF0ZToKKyAgICBJREJDdXJzb3JCYWNr
ZW5kKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiwgSW5kZXhlZERC
OjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworCisg
ICAgY2xhc3MgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOworICAgIGNsYXNzIEN1cnNvckFkdmFu
Y2VPcGVyYXRpb247CisgICAgY2xhc3MgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb247
CisKKyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7
CisgICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKKyAgICBjb25zdCBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlOworICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CisgICAgY29uc3Qg
aW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CisKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vy
c29ySW50ZXJmYWNlPiBtX2N1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJh
bnNhY3Rpb24uCisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gbV9z
YXZlZEN1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCisK
KyAgICBib29sIG1fY2xvc2VkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJDdXJzb3JCYWNr
ZW5kX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ5
NWIzNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW1wbC5o
IgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRlICJJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3Mu
aCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VF
eGNlcHRpb24uaCIKLSNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUgIklEQk9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vy
c29ySXRlcmF0aW9uT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykp
OwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwotcHJp
dmF0ZToKLSAgICBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW1wbD4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1fY3Vyc29yKGN1cnNvcikKLSAgICAg
ICAgLCBtX2tleShrZXkpCi0gICAgICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IG1fY3Vyc29yOwotICAg
IFJlZlB0cjxJREJLZXk+IG1fa2V5OwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJh
Y2tzOwotfTsKLQotY2xhc3MgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckFkdmFuY2VPcGVy
YXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiBjdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvckFkdmFu
Y2VPcGVyYXRpb24oY3Vyc29yLCBjb3VudCwgY2FsbGJhY2tzKSk7Ci0gICAgfQotICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7Ci1wcml2YXRlOgotICAgIEN1cnNvckFk
dmFuY2VPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yLCB1
bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQot
ICAgICAgICA6IG1fY3Vyc29yKGN1cnNvcikKLSAgICAgICAgLCBtX2NvdW50KGNvdW50KQotICAg
ICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbXBsPiBtX2N1cnNvcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fY291
bnQ7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci19OwotCi1jbGFzcyBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24gOiBw
dWJsaWMgSURCT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJP
cGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3Is
IGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdXJzb3JQcmVmZXRjaEl0ZXJhdGlv
bk9wZXJhdGlvbihjdXJzb3IsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykpOwotICAgIH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwotcHJpdmF0ZToKLSAgICBD
dXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiBjdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1fY3Vyc29yKGN1cnNvcikKLSAgICAgICAgLCBtX251
bWJlclRvRmV0Y2gobnVtYmVyVG9GZXRjaCkKLSAgICAgICAgLCBtX2NhbGxiYWNrcyhjYWxsYmFj
a3MpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gbV9j
dXJzb3I7Ci0gICAgaW50IG1fbnVtYmVyVG9GZXRjaDsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBtX2NhbGxiYWNrczsKLX07Ci0KLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNr
ZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29y
LCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQotICAgIDogbV90YXNrVHlwZSh0
YXNrVHlwZSkKLSAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQotICAgICwgbV9kYXRhYmFz
ZSgmKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKSkKLSAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCi0gICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKLSAgICAsIG1fY3Vy
c29yKGN1cnNvcikKLSAgICAsIG1fY2xvc2VkKGZhbHNlKQotewotICAgIG1fdHJhbnNhY3Rpb24t
PnJlZ2lzdGVyT3BlbkN1cnNvcih0aGlzKTsKLX0KLQotSURCQ3Vyc29yQmFja2VuZEltcGw6On5J
REJDdXJzb3JCYWNrZW5kSW1wbCgpCi17Ci0gICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3Rlck9w
ZW5DdXJzb3IodGhpcyk7Ci19Ci0KLQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGlu
dWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwg
IklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZSIpOwotICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBtX3RyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2sobV90YXNrVHlwZSwgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
a2V5LCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5j
ZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJh
Y2tlbmRJbXBsOjphZHZhbmNlIik7Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwotICAgIG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDdXJzb3JB
ZHZhbmNlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY291bnQsIGNhbGxiYWNrcykpOwotfQotCi12
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpwZXJmb3Jt
KCkKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnNvckFkdmFuY2VPcGVyYXRpb24iKTsKLSAg
ICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5hZHZhbmNl
KG1fY291bnQpKSB7Ci0gICAgICAgIG1fY3Vyc29yLT5tX2N1cnNvciA9IDA7Ci0gICAgICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oMCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhtX2N1cnNv
ci0+a2V5KCksIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCksIG1fY3Vyc29yLT52YWx1ZSgpKTsKLX0K
LQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Q3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOjpw
ZXJmb3JtKCkKLXsKLSAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlv
biIpOwotICAgIGlmICghbV9jdXJzb3ItPm1fY3Vyc29yIHx8ICFtX2N1cnNvci0+bV9jdXJzb3It
PmNvbnRpbnVlRnVuY3Rpb24obV9rZXkuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY3Vyc29yLT5tX2N1
cnNvciA9IDA7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oMCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhtX2N1cnNvci0+a2V5KCksIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCksIG1f
Y3Vyc29yLT52YWx1ZSgpKTsKLX0KLQotdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9u
Q29kZSYpCi17Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVs
ZXRlIik7Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uUmVhZE9ubHkpOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJ
REJLZXlSYW5nZTo6Y3JlYXRlKG1fY3Vyc29yLT5wcmltYXJ5S2V5KCkpOwotICAgIG1fZGF0YWJh
c2UtPmRlbGV0ZVJhbmdlKG1fdHJhbnNhY3Rpb24uZ2V0KCktPmlkKCksIG1fb2JqZWN0U3RvcmVJ
ZCwga2V5UmFuZ2UucmVsZWFzZSgpLCBwcnBDYWxsYmFja3MpOwotfQotCi12b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJikKLXsKLSAgICBM
T0coU3RvcmFnZUFQSSwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7
Ci0gICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwotICAg
IG1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rhc2tUeXBlLCBDdXJzb3JQcmVmZXRjaEl0
ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG51bWJlclRvRmV0Y2gsIGNhbGxiYWNrcykp
OwotfQotCi12b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlv
bk9wZXJhdGlvbjo6cGVyZm9ybSgpCi17Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJDdXJzb3JQcmVm
ZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbiIpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBm
b3VuZEtleXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBmb3VuZFByaW1hcnlLZXlzOwot
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gZm91bmRWYWx1ZXM7Ci0KLSAgICBpZiAo
bV9jdXJzb3ItPm1fY3Vyc29yKQotICAgICAgICBtX2N1cnNvci0+bV9zYXZlZEN1cnNvciA9IG1f
Y3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUoKTsKLQotICAgIGNvbnN0IHNpemVfdCBtYXhTaXplRXN0
aW1hdGUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgIHNpemVfdCBzaXplRXN0aW1hdGUgPSAwOwot
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bWJlclRvRmV0Y2g7ICsraSkgewotICAgICAg
ICBpZiAoIW1fY3Vyc29yLT5tX2N1cnNvciB8fCAhbV9jdXJzb3ItPm1fY3Vyc29yLT5jb250aW51
ZUZ1bmN0aW9uKDApKSB7Ci0gICAgICAgICAgICBtX2N1cnNvci0+bV9jdXJzb3IgPSAwOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3VuZEtleXMuYXBwZW5kKG1f
Y3Vyc29yLT5tX2N1cnNvci0+a2V5KCkpOwotICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVu
ZChtX2N1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlLZXkoKSk7Ci0KLSAgICAgICAgc3dpdGNoICht
X2N1cnNvci0+bV9jdXJzb3JUeXBlKSB7Ci0gICAgICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JL
ZXlPbmx5OgotICAgICAgICAgICAgZm91bmRWYWx1ZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSW5kZXhlZERCOjpDdXJz
b3JLZXlBbmRWYWx1ZToKLSAgICAgICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9j
dXJzb3ItPnZhbHVlKCktPnNpemUoKTsKLSAgICAgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZCht
X2N1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQot
ICAgICAgICBzaXplRXN0aW1hdGUgKz0gbV9jdXJzb3ItPm1fY3Vyc29yLT5rZXkoKS0+c2l6ZUVz
dGltYXRlKCk7Ci0gICAgICAgIHNpemVFc3RpbWF0ZSArPSBtX2N1cnNvci0+bV9jdXJzb3ItPnBy
aW1hcnlLZXkoKS0+c2l6ZUVzdGltYXRlKCk7Ci0KLSAgICAgICAgaWYgKHNpemVFc3RpbWF0ZSA+
IG1heFNpemVFc3RpbWF0ZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICgh
Zm91bmRLZXlzLnNpemUoKSkgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2goZm91bmRLZXlzLCBmb3VuZFByaW1h
cnlLZXlzLCBmb3VuZFZhbHVlcyk7Ci19Ci0KLXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnBy
ZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQpCi17Ci0gICAgTE9HKFN0b3JhZ2VB
UEksICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCIpOwotICAgIG1fY3Vyc29y
ID0gbV9zYXZlZEN1cnNvcjsKLSAgICBtX3NhdmVkQ3Vyc29yID0gMDsKLQotICAgIGlmIChtX2Ns
b3NlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2N1cnNvcikgewotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsKLSAgICAgICAgICAgIGJvb2wg
b2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigpOwotICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChvaywgb2spOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpjbG9zZSgpCi17Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJJREJDdXJzb3JCYWNrZW5k
SW1wbDo6Y2xvc2UiKTsKLSAgICBtX2Nsb3NlZCA9IHRydWU7Ci0gICAgbV9jdXJzb3IuY2xlYXIo
KTsKLSAgICBtX3NhdmVkQ3Vyc29yLmNsZWFyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNzY3YzEuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgL2Rl
di9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0KLSNpZm5kZWYgSURCQ3Vyc29yQmFja2Vu
ZEltcGxfaAotI2RlZmluZSBJREJDdXJzb3JCYWNrZW5kSW1wbF9oCi0KLSNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oIgot
I2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJREJLZXlSYW5nZTsKLQotY2xhc3MgSURCQ3Vyc29y
QmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVj
dFN0b3JlSWQpKTsKLSAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4g
Y3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNv
clR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCkpOwotICAgIH0KLSAg
ICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW1wbCgpOwotCi0gICAgLy8gSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNl
dChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IH0KLQotICAgIHZpcnR1YWwgSURC
S2V5KiBrZXkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1cnNvci0+a2V5KCkuZ2V0KCk7
IH0KLSAgICB2aXJ0dWFsIElEQktleSogcHJpbWFyeUtleSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCkuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNoYXJlZEJ1
ZmZlciogdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IElu
ZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVlKCkuZ2V0KCk7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIE9WRVJSSURFOwotCi1wcml2YXRlOgotICAgIElE
QkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJm
YWNlPiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6
OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQpOwotCi0gICAgY2xhc3MgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uOwotICAgIGNs
YXNzIEN1cnNvckFkdmFuY2VPcGVyYXRpb247Ci0gICAgY2xhc3MgQ3Vyc29yUHJlZmV0Y2hJdGVy
YXRpb25PcGVyYXRpb247Ci0KLSAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tU
eXBlIG1fdGFza1R5cGU7Ci0gICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsK
LSAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNl
OwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rp
b247Ci0gICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7Ci0KLSAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBtX2N1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95
ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNv
ckludGVyZmFjZT4gbV9zYXZlZEN1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1f
dHJhbnNhY3Rpb24uCi0KLSAgICBib29sIG1fY2xvc2VkOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNlbmRpZiAv
LyBJREJDdXJzb3JCYWNrZW5kSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OTJiNDEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZV9oCi0jZGVmaW5lIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2VfaAotCi0jaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SURCQ2FsbGJhY2tzOwotY2xhc3MgSURCS2V5OwotY2xhc3MgSURCUmVxdWVzdDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmRJ
bnRlcmZhY2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRj
aCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFBy
ZWZldGNoZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJh
Y2soKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgSURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2hhcmVk
QnVmZmVyKiB2YWx1ZSgpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuY3BwCmluZGV4IDQwMzYxMTEuLjkw
ZWM1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvcldpdGhWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yV2l0aFZhbHVlLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElE
QkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJS
ZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQorUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2VuZCwgSW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNv
dXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291
cmNlLCB0cmFuc2FjdGlvbikpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPElEQkN1
cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8
SURCQ3VycwogICAgIHJldHVybiBjdXJzb3JXaXRoVmFsdWUucmVsZWFzZSgpOwogfQogCi1JREJD
dXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKK0lEQkN1cnNvcldpdGhWYWx1ZTo6SURCQ3Vyc29yV2l0aFZhbHVlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIDogSURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVj
dGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlvbikKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKaW5kZXgg
MTU4MjNhMC4uMGJiNGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJDdXJzb3JXaXRoVmFsdWUgOiBwdWJsaWMgSURCQ3Vyc29y
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlv
biopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJ
REJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURC
Q3Vyc29yPik7CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yV2l0aFZhbHVlKCk7CiAKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yV2l0
aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0
aW9uKik7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZD4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3Vy
Y2UsIElEQlRyYW5zYWN0aW9uKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCmluZGV4IGVmMTg0MGQuLjE2MmU5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZC5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZjM1NDFhNy4uYzgwNTdkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1heWJlQ3JlYXRlVHJhbnNh
Y3Rpb25CYWNrZW5kKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSosIGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UmLCBJREJCYWNr
aW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAw
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JC
YWNrZW5kKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUN1
cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU0ZDA0MWIuLjk1ZDhjZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zNyw3ICszNyw3
IEBACiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFj
ZWhvbGRlci5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZC5o
IgogI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCkBAIC0yNzUsNyArMjc1LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21T
dHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAK
LXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpCit2b2lkIElE
QlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAi
SURCUmVxdWVzdDo6b25TdWNjZXNzKElEQkN1cnNvcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVl
dWVFdmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCmluZGV4IDdhZGJhZmYuLjVmNTliN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8v
IElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
S2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNz
UmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5jcHAKaW5kZXggODI4ZDE1MS4uN2FiODhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0j
aW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkN1cnNv
ckJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5oIgpAQCAtMTUzLDEyICsxNTMsMTIgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpoYXNQZW5kaW5nVGFza3MoKSBjb25zdAogICAgIHJldHVybiBtX3BlbmRpbmdQcmVlbXB0aXZl
RXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5KCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uq
IGN1cnNvcikKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cmVnaXN0ZXJPcGVuQ3Vy
c29yKElEQkN1cnNvckJhY2tlbmQqIGN1cnNvcikKIHsKICAgICBtX29wZW5DdXJzb3JzLmFkZChj
dXJzb3IpOwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnVucmVnaXN0ZXJP
cGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UqIGN1cnNvcikKK3ZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2Vu
ZCogY3Vyc29yKQogewogICAgIG1fb3BlbkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CkBAIC0y
NjUsNyArMjY1LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJG
aXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPioKIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpjbG9zZU9wZW5DdXJzb3JzKCkKIHsKLSAgICBmb3IgKEhhc2hTZXQ8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSo+OjppdGVyYXRvciBpID0gbV9vcGVuQ3Vyc29ycy5i
ZWdpbigpOyBpICE9IG1fb3BlbkN1cnNvcnMuZW5kKCk7ICsraSkKKyAgICBmb3IgKEhhc2hTZXQ8
SURCQ3Vyc29yQmFja2VuZCo+OjppdGVyYXRvciBpID0gbV9vcGVuQ3Vyc29ycy5iZWdpbigpOyBp
ICE9IG1fb3BlbkN1cnNvcnMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+Y2xvc2UoKTsKICAg
ICBtX29wZW5DdXJzb3JzLmNsZWFyKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGEKICAgICBzY2hlZHVsZVRhc2soQ2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZUlk
LCBjYWxsYmFja3MpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKQorUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9y
ZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogewogICAgIHJldHVybiBtX2RhdGFiYXNlLT5mYWN0b3J5QmFja2Vu
ZCgpLmNyZWF0ZUN1cnNvckJhY2tlbmQoKnRoaXMsIGN1cnNvciwgY3Vyc29yVHlwZSwgdGFza1R5
cGUsIG9iamVjdFN0b3JlSWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDdlNmIz
NDguLjYxOWE2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTU5LDggKzU5LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxJREJPcGVy
YXRpb24+IHRhc2ssIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRy
KSB7IHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ss
IHRhc2ssIGFib3J0VGFzayk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8SURCT3BlcmF0aW9u
PiwgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vy
c29yKElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZCopIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIE9WRVJSSURFIHsg
bV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cysrOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBs
ZXRlUHJlZW1wdGl2ZUV2ZW50KCkgT1ZFUlJJREUgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRz
LS07IEFTU0VSVChtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzID49IDApOyB9CkBAIC04MSw3ICs4
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEZWxldGVSYW5nZU9wZXJh
dGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+KSBPVkVSUklERSBGSU5BTDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdT
dG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlQ3Vyc29y
QmFja2VuZChJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNv
clR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3Jl
SWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICBUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsK
ICAgICBpbnQgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50czsKIAotICAgIEhhc2hTZXQ8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZSo+IG1fb3BlbkN1cnNvcnM7CisgICAgSGFzaFNldDxJREJDdXJz
b3JCYWNrZW5kKj4gbV9vcGVuQ3Vyc29yczsKICAgICAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IDUwN2I3MDkuLjU5MDJjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZS5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiwgUGFzc093blB0cjxJREJPcGVy
YXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8
SURCT3BlcmF0aW9uPiwgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxw
dHIpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5D
dXJzb3IoSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmQqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmQqKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZURlbGV0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlJiBiYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpID0gMDsKICAgICB2
aXJ0dWFsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSYgZGF0YWJhc2UoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVk
REI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVy
ZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBpbnQ2NF90IGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJh
dGlvbnMuY3BwCmluZGV4IGEzNjlhMDYuLjMyNWFlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIgogCi0jaW5jbHVk
ZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvckJhY2tl
bmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQklu
ZGV4V3JpdGVyLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTI4MCw3ICsyODAsNyBA
QCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oKQogCiAgICAgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZShzdGF0aWNfY2FzdDxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPihtX3Rhc2tUeXBlKSk7CiAKLSAgICBSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gbV90cmFuc2FjdGlvbi0+Y3JlYXRl
Q3Vyc29yQmFja2VuZCgqYmFja2luZ1N0b3JlQ3Vyc29yLCBtX2N1cnNvclR5cGUsIHRhc2tUeXBl
LCBtX29iamVjdFN0b3JlSWQpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjdXJzb3Ig
PSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVDdXJzb3JCYWNrZW5kKCpiYWNraW5nU3RvcmVDdXJzb3Is
IG1fY3Vyc29yVHlwZSwgdGFza1R5cGUsIG1fb2JqZWN0U3RvcmVJZCk7CiAgICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgp
LCBjdXJzb3ItPnZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQi5jcHAKaW5kZXggNzk2YTFhMS4uZGZiY2JmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZUxldmVsREIuaCIKLSNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCkBA
IC0xOTcsOSArMTk3LDkgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6bWF5YmVDcmVhdGUKICAgICByZXR1cm4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFj
a2VuZEltcGwqPihiYWNrZW5kKSwgdHJhbnNhY3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9i
amVjdFN0b3JlSWRzLCBtb2RlKTsKIH0KIAotUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZSYgYmFja2luZ1N0b3JlQ3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlw
ZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kPiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbkJhY2tlbmQsIElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZSYgYmFja2luZ1N0b3JlQ3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlw
ZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAgIHJldHVybiBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6Y3JlYXRlKCZiYWNraW5nU3RvcmVDdXJzb3IsIGN1cnNvclR5cGUsIHRh
c2tUeXBlLCAmdHJhbnNhY3Rpb25CYWNrZW5kLCBvYmplY3RTdG9yZUlkKTsKKyAgICByZXR1cm4g
SURCQ3Vyc29yQmFja2VuZDo6Y3JlYXRlKCZiYWNraW5nU3RvcmVDdXJzb3IsIGN1cnNvclR5cGUs
IHRhc2tUeXBlLCAmdHJhbnNhY3Rpb25CYWNrZW5kLCBvYmplY3RTdG9yZUlkKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZh
Y3RvcnlCYWNrZW5kTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuaAppbmRleCBkYWQxMGY4Li44NmY1MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gbWF5YmVDcmVhdGVUcmFuc2FjdGlvbkJhY2tlbmQoSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlKiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGUpIE9WRVJSSURFIEZJTkFMOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlJiwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSYsIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmVMZXZlbERCPiBvcGVuQmFja2luZ1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZjFjOTg2Li45MTBmNGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjQzLDcg
KzE2NDMsNyBAQAogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4
NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CiAJCTUxMDU5
RERCMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDU5REQ3MTgyMEIx
NzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCAqLzsgfTsKLQkJNTEw
NTlEREMxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDU5REQ4MTgyMEIx
NzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggKi87IH07CisJCTUxMDU5
RERDMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1OUREODE4MjBCMTc2
MDBERkY5QjEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDU5REREMTgyMEIxNzYwMERGRjlC
MSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDU5REQ5MTgyMEIxNzYwMERGRjlCMSAv
KiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJNTEwNTlEREUx
ODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDU5RERBMTgyMEIx
NzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggKi87IH07CiAJ
CTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi87IH07CkBAIC0xNjg3
LDcgKzE2ODcsNyBAQAogCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJE
RDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RkQwRDkxRTZBRjAwMEY4
OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTJERDhGMzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZUZhY3Rvcnku
aCAqLzsgfTsKIAkJNTEyRUE5QkMxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2Fs
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRUE5
QkIxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMkVBOUJFMTgyMDI4NTcwMDFE
MDFFMCAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMkVBOUJEMTgyMDI4NTcwMDFEMDFFMCAvKiBJREJPcGVyYXRpb24uaCAq
LzsgfTsKKwkJNTEyRUE5QkUxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRUE5QkQxODIwMjg1
NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLzsgfTsKIAkJNTEzMjdE
NjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyog
U2lua0RvY3VtZW50LmNwcCAqLzsgfTsKIAkJNTEzRjE0NTMwQUI2MzRDNDAwMDk0RERGIC8qIElj
b25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzRjE0NTEwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuY3BwICovOyB9OwpAQCAt
MTcyNSw4ICsxNzI1LDYgQEAKIAkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNEM3NjY5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAgKi87IH07CiAJCTUxNEM3NjdGMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNl
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
Qzc2NkEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE1Nzg4QzExMjA3ODUy
QzAwQTM3QzRBIC8qIFZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4OEMwMTIwNzg1MkMwMEEzN0M0QSAvKiBWaXNp
dGVkTGlua1N0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTE1QzMyMTUxODIxNkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NUMzMjEzMTgyMTZBNUIwMEE2REFBOSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgKi87IH07
Ci0JCTUxNUMzMjE2MTgyMTZBNUIwMEE2REFBOSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QzMyMTQxODIx
NkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CiAJCTUxNjAzMDBC
MENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MDMwMEEwQ0M0MjUxMjAwQzhBQzI1IC8q
IEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CiAJCTUxNjAzMDZDMENDNDM2MjMwMEM4QUMyNSAv
KiBGaWxlU3lzdGVtQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi87
IH07CiAJCTUxNjBGNDk4MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3
NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSAqLzsgfTsKQEAgLTE3NDQsNiArMTc0Miw4
IEBACiAJCTUxNjYwQUMzMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNjYwQUJGMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREIuaCAqLzsgfTsKIAkJNTE2NjBBQzYxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2NjBBQzQxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9y
ZUN1cnNvckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxNjYwQUM3MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE2NjBBQzUxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTE2NzMwQTMxODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tl
bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
NzMwQTExODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwICovOyB9OworCQk1
MTY3MzBBNDE4MkQ4RkJCMDAzRkFGNUMgLyogSURCQ3Vyc29yQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NzMwQTIxODJEOEZCQjAwM0ZB
RjVDIC8qIElEQkN1cnNvckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTY5NTM5NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFi
YXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTY5NTM5NTEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi87IH07
CiAJCTUxNjk1Mzk4MTMyOUEzQzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY5NTM5NjEzMjlBM0M4
MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBKU1Ry
ZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5j
cHAgKi87IH07CkBAIC0xNzgwLDcgKzE3ODAsNiBAQAogCQk1MUQ3MTlCRTE4MTEwNkUwMDAxNkRD
NTEgLyogSURCQ2FsbGJhY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUQ3MTk3NDE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ2FsbGJhY2tzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFENzE5QkYx
ODExMDZFMDAwMTZEQzUxIC8qIElEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk3NTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vy
c29yLmNwcCAqLzsgfTsKIAkJNTFENzE5QzAxODExMDZFMDAwMTZEQzUxIC8qIElEQkN1cnNvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFENzE5NzYx
ODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvci5oICovOyB9OwotCQk1MUQ3MTlDMjE4MTEwNkUw
MDAxNkRDNTEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFENzE5NzgxODExMDZERjAwMTZEQzUxIC8q
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQ3MTlDMzE4MTEwNkUwMDAxNkRDNTEgLyogSURCQ3Vy
c29yV2l0aFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDcxOTc5MTgxMTA2REYwMDE2REM1MSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuY3Bw
ICovOyB9OwogCQk1MUQ3MTlDNDE4MTEwNkUwMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk3
QTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi87IH07CiAJCTUxRDcx
OUM2MTgxMTA2RTAwMDE2REM1MSAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk3QzE4MTEwNkRGMDAxNkRDNTEgLyog
SURCRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtODQwOCw4ICs4NDA3LDYgQEAKIAkJNTE0Qzc2Njkw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NkEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291
cmNlUmVzcG9uc2VCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291
cmNlUmVzcG9uc2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4OEMw
MTIwNzg1MkMwMEEzN0M0QSAvKiBWaXNpdGVkTGlua1N0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTE1QzMyMTMxODIxNkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE1QzMyMTQx
ODIxNkE1QjAwQTZEQUE5IC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNjAzMDBBMENDNDI1MTIwMEM4QUMyNSAvKiBGaWxlU3lzdGVtUE9T
SVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbVBP
U0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MDMwNkIwQ0M0MzYyMzAw
QzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIaXN0b3J5SXRlbU1hYy5tbTsgcGF0aCA9IG1h
Yy9IaXN0b3J5SXRlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0Mjcs
NiArODQyNCw4IEBACiAJCTUxNjYwQUJGMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkxldmVsREIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjYwQUM0MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVDdXJz
b3JJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFja2lu
Z1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NjYwQUM1MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVy
ZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY3
MzBBMTE4MkQ4RkJCMDAzRkFGNUMgLyogSURCQ3Vyc29yQmFja2VuZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NzMwQTIxODJEOEZCQjAwM0ZBRjVDIC8qIElEQkN1cnNv
ckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yQmFj
a2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY5NTM5NTEzMjlBM0M4MDBC
OTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJY29uRGF0YWJhc2VCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE2OTUzOTYxMzI5QTNDODAwQjkyRDA0IC8qIEljb25EYXRhYmFzZUJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvbkRhdGFiYXNlQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVl
V2Fsa2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
VHJlZVdhbGtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDcw
LDcgKzg0NjksNiBAQAogCQk1MUQ3MTk3NTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkN1cnNvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTc2MTgxMTA2REYwMDE2REM1MSAvKiBJ
REJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDcxOTc3MTgxMTA2REYwMDE2REM1MSAv
KiBJREJDdXJzb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElEQkN1cnNvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDcxOTc4MTgxMTA2REYwMDE2REM1MSAvKiBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFENzE5NzkxODExMDZERjAwMTZEQzUxIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JXaXRoVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQ3MTk3QTE4MTEwNkRGMDAxNkRD
NTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQkN1cnNvcldpdGhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUQ3MTk3QjE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJREJDdXJzb3JXaXRoVmFsdWUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY5NTIsOSArMTY5NTAsOCBAQAogCQkJCTUxRDcxOTc1MTgxMTA2REYw
MDE2REM1MSAvKiBJREJDdXJzb3IuY3BwICovLAogCQkJCTUxRDcxOTc2MTgxMTA2REYwMDE2REM1
MSAvKiBJREJDdXJzb3IuaCAqLywKIAkJCQk1MUQ3MTk3NzE4MTEwNkRGMDAxNkRDNTEgLyogSURC
Q3Vyc29yLmlkbCAqLywKLQkJCQk1MTVDMzIxMzE4MjE2QTVCMDBBNkRBQTkgLyogSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwICovLAotCQkJCTUxNUMzMjE0MTgyMTZBNUIwMEE2REFBOSAvKiBJREJD
dXJzb3JCYWNrZW5kSW1wbC5oICovLAotCQkJCTUxRDcxOTc4MTgxMTA2REYwMDE2REM1MSAvKiBJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi8sCisJCQkJNTE2NzMwQTExODJEOEZCQjAwM0ZB
RjVDIC8qIElEQkN1cnNvckJhY2tlbmQuY3BwICovLAorCQkJCTUxNjczMEEyMTgyRDhGQkIwMDNG
QUY1QyAvKiBJREJDdXJzb3JCYWNrZW5kLmggKi8sCiAJCQkJNTFENzE5NzkxODExMDZERjAwMTZE
QzUxIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAgKi8sCiAJCQkJNTFENzE5N0ExODExMDZERjAw
MTZEQzUxIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5oICovLAogCQkJCTUxRDcxOTdCMTgxMTA2REYw
MDE2REM1MSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaWRsICovLApAQCAtMjI5MTMsNyArMjI5MTAs
NiBAQAogCQkJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjcxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjgxNEY0RERFNjAwM0U3
QTcwIC8qIEdlb2xvY2F0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNUMzMjE2MTgy
MTZBNUIwMEE2REFBOSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc4RTA5MUExN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvck1lZGlhU3RyZWFtLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkExNEY0RERFNjAwM0U3QTcwIC8q
IEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzQ3LDcgKzIzMzQzLDYgQEAKIAkJ
CQk4NDgyQjc1MjExOThDQjZCMDBCRkIwMDUgLyogSlNIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOTREMTRGMEMyNzVDNjgwMDZCQzYxNyAvKiBKU0hpc3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQ3MTlDMjE4MTEwNkUwMDAxNkRDNTEgLyog
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTJERjAw
QTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFuY2hvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNEEyREYyMEExQjg1MkEwMEM4MDdGOCAvKiBKU0hUTUxBcHBsZXRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUUyQUExRjBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MQXJlYUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1MTksNiArMjM1MTQsNyBAQAogCQkJCUFBN0ZF
RUE3MTZBNEU2RjMwMDRDMEMzMyAvKiBKU1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUE3RkVFQTkxNkE0RTZGMzAwNEMwQzMzIC8qIEpTU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAv
KiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY3MzBBNDE4MkQ4RkJCMDAzRkFG
NUMgLyogSURCQ3Vyc29yQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUyNUE5NjUxMUNB
MjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU4
MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBp
biBIZWFkZXJzICovLApAQCAtMjY0MzIsNyArMjY0MjgsNiBAQAogCQkJCTgyQUIxNzczMTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTVDMzIx
NTE4MjE2QTVCMDBBNkRBQTkgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMzI4OUI1MTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI3
OCw2ICsyNzI3Myw3IEBACiAJCQkJMzcxRTY1Q0UxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VTZXJp
YWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTk3RjI2MTc1NjhBRTUwMDdCOTQ0MiAv
KiBQYWdlVGhyb3R0bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QUVBMTA0NDdERUUw
MEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
NjczMEEzMTgyRDhGQkIwMDNGQUY1QyAvKiBJREJDdXJzb3JCYWNrZW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRTFFQ0MyMEM5MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZGRDVCOTdBMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJp
bGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEEyMTJCMDI2RjcwMEMxQTM1
OSAvKiBQYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWRhZDIzOS4uZDA4
YmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTExLTA4ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNZXJnZSBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlIGFuZCBJREJDdXJzb3JCYWNrZW5kSW1wbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0
b3J5QmFja2VuZDo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmg6CisKIDIwMTMtMTEtMDgg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBtYWxsb2Mgb24gU3ltYmlhbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3Rv
cnlCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKaW5kZXggYzE1YzdjNi4uMGMxNmY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkZhY3RvcnlCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oIgogI2luY2x1ZGUg
IldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
Q2FsbGJhY2tzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJDdXJzb3JCYWNrZW5kLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JREJEYXRhYmFzZUNhbGxiYWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgpAQCAtMTA2LDcgKzEwNiw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBXZWJJREJGYWN0b3J5QmFja2VuZDo6bWF5YmVDcmVhdGVUcmFuCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gV2ViSURC
RmFjdG9yeUJhY2tlbmQ6OmNyZWF0ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlJiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90
KQorUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBXZWJJREJGYWN0b3J5QmFja2VuZDo6Y3Jl
YXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UmLCBJREJCYWNr
aW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3QpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNr
ZW5kLmgKaW5kZXggYmZlNWVmYy4uMjRlMDI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZh
Y3RvcnlCYWNrZW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbWF5YmVD
cmVhdGVUcmFuc2FjdGlvbkJhY2tlbmQoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlKiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERC
OjpUcmFuc2FjdGlvbk1vZGUpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlQ3Vyc29ySW50ZXJmYWNlJiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kPiBjcmVhdGVDdXJzb3JCYWNrZW5kKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSYsIFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUN1cnNvckludGVy
ZmFjZSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJREJGYWN0b3J5QmFja2VuZChjb25z
dCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcik7Cg==
</data>
<flag name="commit-queue"
          id="239409"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>