<?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>180344</bug_id>
          
          <creation_ts>2017-12-04 02:23:51 -0800</creation_ts>
          <short_desc>Modernize WebThread code for further refactoring</short_desc>
          <delta_ts>2017-12-05 12:27:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377630</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 02:23:51 -0800</bug_when>
    <thetext>Modernize WebThread code for further refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377633</commentid>
    <comment_count>1</comment_count>
      <attachid>328335</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 02:33:53 -0800</bug_when>
    <thetext>Created attachment 328335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377640</commentid>
    <comment_count>2</comment_count>
      <attachid>328337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 03:16:17 -0800</bug_when>
    <thetext>Created attachment 328337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377642</commentid>
    <comment_count>3</comment_count>
      <attachid>328338</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 03:28:35 -0800</bug_when>
    <thetext>Created attachment 328338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377647</commentid>
    <comment_count>4</comment_count>
      <attachid>328339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 03:39:43 -0800</bug_when>
    <thetext>Created attachment 328339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377697</commentid>
    <comment_count>5</comment_count>
      <attachid>328348</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 08:30:36 -0800</bug_when>
    <thetext>Created attachment 328348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378265</commentid>
    <comment_count>6</comment_count>
      <attachid>328348</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 12:06:41 -0800</bug_when>
    <thetext>Comment on attachment 328348
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378280</commentid>
    <comment_count>7</comment_count>
      <attachid>328348</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-05 12:26:40 -0800</bug_when>
    <thetext>Comment on attachment 328348
Patch

Clearing flags on attachment: 328348

Committed r225529: &lt;https://trac.webkit.org/changeset/225529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378281</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-05 12:26:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378282</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-05 12:27:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/35861741&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328335</attachid>
            <date>2017-12-04 02:33:53 -0800</date>
            <delta_ts>2017-12-04 03:16:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180344-20171204193352.patch</filename>
            <type>text/plain</type>
            <size>31235</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2NjYyOGNhMGNkYjQy
NGYwN2NhYzcxOTBkYzMzYTY2YmU5OTQ1ZC4uZjYxYjVhMzAzZWYzODI1ZDdiNzNmMzJiZThlYjU2
OTc2NzBlMGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE3LTEyLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBX
ZWJUaHJlYWQgY29kZSBmb3IgZnVydGhlciByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0b3VjaGluZyBUaHJlYWQgYW5kIGl0
cyBpbml0aWFsaXphdGlvbiBjb21wb25lbnQsIHdlIG5lZWQgdG8gdG91Y2gKKyAgICAgICAgd2Vi
IHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIHRvby4gSG93ZXZlciwgc2luY2Ugd2ViIHRocmVh
ZCBjb2RlIGlzIG9sZCwKKyAgICAgICAgaXQncyBzdHlsZSBpcyBub3QgZm9sbG93aW5nIHRvIFdl
YktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpcnN0
IG1vZGVybml6ZXMgV2ViVGhyZWFkIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgMS4gYFR5cGUqYCBpbnN0ZWFkIG9mIGBUeXBlICpgLgorICAgICAgICAyLiBVc2Ugc3Rk
OjpjYWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2UuCisgICAgICAgIDMuIFVzZSBzdGF0
aWNfY2FzdCBpbnN0ZWFkIG9mIEMtY2FzdC4KKyAgICAgICAgNC4gVXNlIG51bGxwdHIgaW5zdGVh
ZCBvZiBOVUxMLgorICAgICAgICA1LiBVc2UgYHJldGAgb3IgYCFyZXRgIGluc3RlYWQgb2YgYHJl
dCAhPSAwYCBvciBgcmV0ID09IDBgLgorICAgICAgICA2LiBEbyBub3QgdXNlICNwcmFnbWEgdW51
c2VkLgorICAgICAgICA3LiBVc2UgTk9fUkVUVVJOIHdpdGhvdXQgX19sbHZtX18gaWZkZWZzLgor
ICAgICAgICA4LiBpZi1lbHNlIHdpdGggb25lIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgYnJh
Y2VzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGRvIG5vdCBjaGFuZ2UgcHRocmVhZF9j
b25kaXRpb25fdCB0byBXVEY6OkNvbmRpdGlvbiBhbmQKKyAgICAgICAgcHRocmVhZF9tdXRleF90
IHRvIFdURjo6TG9jayBzaW5jZSB3ZWIgdGhyZWFkIGNvZGUgcmVxdWlyZXMgZXh0cmEgY2FyZSBh
Ym91dAorICAgICAgICB0aHJlYWRpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAo
LVtOU09iamVjdCByZWxlYXNlT25NYWluVGhyZWFkXSk6CisgICAgICAgIChTZW5kTWVzc2FnZSk6
CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVsZWdhdGVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAgICAgIChs
b2NrV2ViQ29yZVJlbGVhc2VMb2NrKToKKyAgICAgICAgKHVubG9ja1dlYkNvcmVSZWxlYXNlTG9j
ayk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAgICAgKEhh
bmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQ2FsbERlbGVn
YXRlKToKKyAgICAgICAgKFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
VGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViVGhyZWFkTWFrZU5TSW52b2Nh
dGlvbik6CisgICAgICAgIChNYWluUnVuTG9vcEF1dG9VbmxvY2spOgorICAgICAgICAoX1dlYlRo
cmVhZEF1dG9Mb2NrKToKKyAgICAgICAgKFdlYlJ1bkxvb3BMb2NrKToKKyAgICAgICAgKFdlYlJ1
bkxvb3BVbmxvY2spOgorICAgICAgICAoTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCk6CisgICAgICAg
IChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAg
ICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2NrKToKKyAg
ICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKToKKyAgICAgICAgKFdlYlRocmVhZFVubG9ja0Zyb21B
bnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAg
ICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAoV2ViVGhyZWFkSXNMb2NrZWQpOgorICAg
ICAgICAoV2ViVGhyZWFkTG9ja1BvcE1vZGFsKToKKyAgICAgICAgKFdlYlRocmVhZEN1cnJlbnRD
b250ZXh0KToKKyAgICAgICAgKFdlYlRocmVhZEVuYWJsZSk6CisgICAgICAgIChGcmVlVGhyZWFk
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0VGhyZWFkQ29udGV4dEtleSk6IERlbGV0
ZWQuCisKIDIwMTctMTItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vcmUgbGVha3MgaW4gVGV4dENvbWJpbmVyR1N0
cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KaW5kZXggOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1ZS4uN2U2
ZDg5MGFhMGIyNWU3NTFiYzM5NmRlMjhjNWZhNGRhMjQ5ZGE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzMsMTYgKzczLDE1
IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBOU09iamVjdChXZWJDb3JlVGhyZWFkQWRkaXRpb25z
KQogCiAtICh2b2lkKXJlbGVhc2VPbk1haW5UaHJlYWQgewotICAgIGlmIChbTlNUaHJlYWQgaXNN
YWluVGhyZWFkXSkgeworICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAgICAgICAg
W3NlbGYgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9iamVjdDpu
aWwgd2FpdFVudGlsRG9uZTpOT107Ci0gICAgfQogfQogCiBAZW5kCiAKLXR5cGVkZWYgdm9pZCAq
TlNBdXRvcmVsZWFzZVBvb2xNYXJrOwordHlwZWRlZiB2b2lkKiBOU0F1dG9yZWxlYXNlUG9vbE1h
cms7CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC05Miw3ICs5
MSw3IEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVhc2VQb29s
TWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxv
Y2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZB
YnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOworc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2so
cHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFic29s
dXRlVGltZSBpbnRlcnZhbCk7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgd2ViTG9jazsKIHN0
YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgYXV0b3JlbGVhc2VQb29sTWFyazsKQEAgLTExOCw4
ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaik7
CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVsZWdhdGVMb2NrID0gUFRIUkVBRF9NVVRFWF9J
TklUSUFMSVpFUjsKIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCBkZWxlZ2F0ZUNvbmRpdGlvbiA9IFBU
SFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBOU0ludm9jYXRpb24gKmRlbGVnYXRlSW52
b2NhdGlvbjsKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2UgPSBOVUxM
Oworc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGljIENGUnVu
TG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxl
Z2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBCT09MIHNl
bmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CkBAIC0xMzAsNyArMTI5LDcgQEAgc3RhdGljIENGUnVuTG9v
cE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwogc3RhdGljIFN0YXRp
Y0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBDb25kaXRp
b247CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICp3ZWJUaHJlYWRDb250ZXh0Oworc3RhdGlj
IFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7CiBzdGF0aWMgcHRocmVhZF9rZXlf
dCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2NrQ291bnQ7
CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CkBAIC0xNDMsMTcgKzE0Miwx
NiBAQCBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2Vs
ZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVh
ZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJU
aHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFibGVBcnJh
eSAqc0FzeW5jRGVsZWdhdGVzID0gbmlsOworc3RhdGljIE5TTXV0YWJsZUFycmF5KiBzQXN5bmNE
ZWxlZ2F0ZXMgPSBuaWw7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShOU0ludm9j
YXRpb24gKmludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2UoTlNJbnZv
Y2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAgICAgTWFp
blRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgSGFu
ZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZURlbGVnYXRl
U291cmNlKHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKICAgICBBU1NFUlQoIVdl
YlRocmVhZElzQ3VycmVudCgpKTsKIAogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCkBAIC0x
NjMsMTYgKzE2MSwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkICpp
bmZvKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgaW50IHJlc3VsdCA9IHB0aHJl
YWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJl
c3VsdCA9PSAwLCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3
aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgaWYgKFtbZGVs
ZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50
ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7CiAgICAgICAgIFtkZWxlZ2F0ZUlu
dm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAgICBOU0xv
ZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBlbHNlIHsK
KyAgICB9IGVsc2UKICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIsIE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgfQog
I2VuZGlmCiAKICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwpAQCAtMTgxLDYy
ICsxNzgsNjIgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykK
ICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7CiAKICAgICByZXN1
bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6
JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRl
IHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogI2lmIExPR19NQUlOX1RI
UkVBRF9MT0NLSU5HCiAgICAgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSA9IE5POwogI2VuZGlmCiB9
CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uICppbnZvY2F0
aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9j
YXRpb24pCiB7Ci0gICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIEFTU0VS
VChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xv
Y2soJmRlbGVnYXRlTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09
IDAsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAgIGlm
ICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlv
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2Up
OworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0
aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAotICAgICAgICBkZWxlZ2F0ZUludm9jYXRpb24gPSBpbnZv
Y2F0aW9uOwotICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKKyAgICBkZWxlZ2F0ZUludm9j
YXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAjaWYgTE9H
X01FU1NBR0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2lu
ZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIGlk
IGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6
JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICAgICAgTlNMb2coQCJub3RpZmljYXRpb24g
c2VuZDogJUAiLCBhcmd1bWVudDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTlNM
b2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUlu
dm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoW1tkZWxlZ2F0ZUludm9j
YXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11d
KSB7CisgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBn
ZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIE5TTG9nKEAibm90aWZp
Y2F0aW9uIHNlbmQ6ICVAIiwgYXJndW1lbnQwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTlNMb2co
QCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9j
YXRpb24gc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBD
b2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBvdXRz
aWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAgICBfV2Vi
VGhyZWFkVW5sb2NrKCk7Ci0KLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxl
Z2F0ZVNvdXJjZSk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFp
bigpKTsKLQotICAgICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlvbiwgJmRl
bGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpICE9IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFtb
ZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25D
ZW50ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRp
b24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1h
dGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3Jd
KTsKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUgPSBDRlJ1
bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdh
aXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBD
RlJlbGVhc2UobW9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7CisgICAg
eworICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQorICAgICAgICBKU0M6OkpTTG9j
azo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsKKyAgICAg
ICAgX1dlYlRocmVhZFVubG9jaygpOworCisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChk
ZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWlu
KCkpOwogCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVs
ZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAgICAgICAg
X1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICB3aGlsZSAoIWRlbGVnYXRlSGFuZGxl
ZCkgeworICAgICAgICAgICAgaWYgKFdlYlRpbWVkQ29uZGl0aW9uTG9jaygmZGVsZWdhdGVDb25k
aXRpb24sICZkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgeworICAgICAgICAg
ICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgaWYgKFtbZGVs
ZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50
ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRB
cmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5TU3RyaW5n
RnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAKKyAgICAg
ICAgICAgICAgICBDRlN0cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENG
UnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUg
KCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4g
bG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24s
IERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAobW9kZSkK
KyAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlvbik7Cisg
ICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2spOworCisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFs
c2UpOwogICAgIH0KIH0KIApAQCAtMjg1LDMwICsyODIsMjggQEAgdm9pZCBXZWJUaHJlYWRBZG9w
dEFuZFJlbGVhc2UoaWQgb2JqKQogI2VuZGlmICAgICAgICAKIAogICAgIGludCByZXN1bHQgPSBw
dGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQi
LCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgbG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmIChXZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkgPSBD
RkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBOVUxMKTsK
KyAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxvb3BTb3Vy
Y2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2FrZVVwKHdl
YlRocmVhZFJ1bkxvb3ApOwogCiAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJldl
YlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQg
PT0gMCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dlYkNvcmVS
ZWxlYXNlTG9jaygpCiB7CiAgICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9sb2NrKCZX
ZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2RlKQotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9V
TlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB1bmxv
Y2tXZWJDb3JlUmVsZWFzZUxvY2soKQogewogICAgIGludCBsb2NrY29kZSA9IHB0aHJlYWRfbXV0
ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2Rl
KQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNl
TG9jayB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIGxvY2tjb2RlKTsKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJlbGVhc2VM
b2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2b2lkIFdl
YkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2MywzNCArMzU4LDMz
IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3MgY2xzKQog
ICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhyZWxlYXNlTWV0aG9kLCBjbGFzc19n
ZXRJbnN0YW5jZU1ldGhvZChjbHMsIHdlYlRocmVhZExvY2tSZWxlYXNlU0VMKSk7CiB9CiAKLXZv
aWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCBfY21kKQor
dm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMKQogewot
ICAgIFVOVVNFRF9QQVJBTShfY21kKTsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxlZCgpKQor
ICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKICAgICAgICAgW3NlbGYgX3dlYmNvcmVf
cmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9ja1dlYkNvcmVSZWxl
YXNlTG9jaygpOwotICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKLSAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUgb2JqZWN0
LCBzbyB3ZSBjYW4KLSAgICAgICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJDb3JlUmVs
ZWFzZUxvY2sgbm93LgotICAgICAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7Ci0g
ICAgICAgICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCi0gICAgICAgICAgICAgICAgW3Nl
bGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWlu
aW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgICAgIC8vIHRocmVhZCBjb3VsZCBh
bHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKLSAgICAgICAg
ICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBpZiAoW3NlbGYg
cmV0YWluQ291bnRdID09IDEpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSByZWZlcmVu
Y2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZlbHkgcmVs
ZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KKyAgICAgICAgdW5sb2NrV2ViQ29yZVJl
bGVhc2VMb2NrKCk7CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAgICAgICAg
ICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgICAgICB1bmxv
Y2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUgb2JqZWN0
LCBzbyBhbm90aGVyCisgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAt
IGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgLy8gcmVsZWFzZSB0byBhdm9p
ZCBhIHJhY2UgY29uZGl0aW9uLgorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlT25XZWJU
aHJlYWRdOworICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKICAgICB9CiB9CiAK
LXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNlbGYsIFNF
TCBfY21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQg
c2VsZiwgU0VMKQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKICAgICBsb2NrV2ViQ29yZVJl
bGVhc2VMb2NrKCk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEg
IT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0
aFdlYlRocmVhZExvY2tdOwpAQCAtMzk5LDMwICszOTMsMjYgQEAgdm9pZCBXZWJDb3JlT2JqQ0Rl
YWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgdW5sb2Nr
V2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJl
bGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVh
c2VTb3VyY2Uodm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1
bHQgPT0gMCwgIlJlbGVhc2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVkIHdpdGgg
Y29kZTolZCIsIHJlc3VsdCk7CiAKLSAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gTlVM
TDsKKyAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKICAgICBpZiAoQ0ZB
cnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAgb2JqZWN0
cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2Jq
QXJyYXkpOworICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxw
dHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CiAgICAgICAgIENGQXJyYXlSZW1vdmVB
bGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICB9CiAKICAgICByZXN1bHQg
PSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBj
b2RlOiVkIiwgcmVzdWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxl
YXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmICghb2Jq
ZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBDRkFycmF5R2V0
Q291bnQob2JqZWN0cyk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewotICAgICAgICBpZCBvYmogPSAoaWQpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChv
YmplY3RzLCBpKTsKKyAgICBmb3IgKGlkIG9iaiBpbiBvYmplY3RzKSB7CiAjaWYgTE9HX1JFTEVB
U0VTCiAgICAgICAgIE5TTG9nKEAiUmVsZWFzZSByZWN2IFt3ZWIgdGhyZWFkXSA6ICVAIiwgb2Jq
KTsKICNlbmRpZgpAQCAtNDMyLDEzICs0MjIsMTMgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSh2b2lkICppbmZvKQogICAgIENGUmVsZWFzZShvYmplY3RzKTsKIH0K
IAotdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQor
dm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewog
ICAgIC8vIE5TSW52b2NhdGlvbiByZWxlYXNlZCBpbiBTZW5kTWVzc2FnZSgpCiAgICAgU2VuZERl
bGVnYXRlTWVzc2FnZShbaW52b2NhdGlvbiByZXRhaW5dKTsKIH0KIAotdm9pZCBXZWJUaHJlYWRQ
b3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nICpuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZvKQor
dm9pZCBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nKiBuYW1lLCBpZCBvYmplY3Qs
IGlkIHVzZXJJbmZvKQogewogICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpu
YW1lIG9iamVjdDpvYmplY3QgdXNlckluZm86dXNlckluZm9dOwpAQCAtNDQ5LDcgKzQzOSw3IEBA
IHZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyAqbmFtZSwgaWQgb2JqZWN0
LCBpZCB1c2VySW5mbykKICAgICB9CiB9CiAKLXZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5
bmMoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQordm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGVB
c3luYyhOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgQVNTRVJUKGludm9jYXRpb24p
OwogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKQEAgLTQ1OSwxMiArNDQ5LDEyIEBAIHZv
aWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQog
fQogCiAvLyBOb3RlOiBkZXNwaXRlIHRoZSBuYW1lLCByZXR1cm5zIGFuIGF1dG9yZWxlYXNlZCBv
YmplY3QuCi1OU0ludm9jYXRpb24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0
LCBTRUwgc2VsZWN0b3IpCitOU0ludm9jYXRpb24qIFdlYlRocmVhZE1ha2VOU0ludm9jYXRpb24o
aWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpCiB7Ci0gICAgTlNNZXRob2RTaWduYXR1cmUgKnNpZ25h
dHVyZSA9IFt0YXJnZXQgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6c2VsZWN0b3JdOworICAg
IE5TTWV0aG9kU2lnbmF0dXJlKiBzaWduYXR1cmUgPSBbdGFyZ2V0IG1ldGhvZFNpZ25hdHVyZUZv
clNlbGVjdG9yOnNlbGVjdG9yXTsKICAgICBBU1NFUlQoc2lnbmF0dXJlKTsKICAgICBpZiAoc2ln
bmF0dXJlKSB7Ci0gICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRp
b24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6c2lnbmF0dXJlXTsKKyAgICAgICAgTlNJ
bnZvY2F0aW9uKiBpbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhv
ZFNpZ25hdHVyZTpzaWduYXR1cmVdOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRTZWxlY3Rvcjpz
ZWxlY3Rvcl07CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDp0YXJnZXRdOwogICAgICAg
ICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVudHNdOwpAQCAtNDczLDE0ICs0NjMsMTEgQEAgTlNJ
bnZvY2F0aW9uICpXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRhcmdldCwgU0VMIHNlbGVj
dG9yKQogICAgIHJldHVybiBuaWw7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5SdW5Mb29wQXV0b1Vu
bG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0
aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2so
Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKikKIHsKLSAgICBV
TlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0eSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwogCi0gICAgaWYgKHNNYWluVGhyZWFkTW9kYWxDb3VudCAhPSAwKQorICAgIGlmIChzTWFpblRo
cmVhZE1vZGFsQ291bnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDRlJ1bkxvb3BSZW1v
dmVPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtNDkyLDcgKzQ3OSw3IEBAIHN0YXRp
YyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFk
SXNDdXJyZW50KCkpOwogCi0gICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQgPT0gMCkgeworICAg
IGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZl
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAgICAKICAgICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFs
c2UpOwogICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKQEAgLTUy
MywxMCArNTEwLDggQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKEF1dG9y
ZWxlYXNlUG9vbE9wZXJhdGlvbiBwb29sT3BlcmF0aW9uKQogICAgIGlzV2ViVGhyZWFkTG9ja2Vk
ID0gTk87CiB9CiAKLXN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVy
UmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCAqY29udGV4dCkK
K3N0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxv
b3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9ic2VydmVy
KTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFjdGl2aXR5LCBhY3Rpdml0eSA9PSBrQ0ZSdW5M
b29wQWZ0ZXJXYWl0aW5nIHx8IGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfHwg
YWN0aXZpdHkgPT0ga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMpOwogCkBAIC01MzcsMTAgKzUyMiw4
IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2Vy
dmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3RpCiAgICAgV2ViUnVuTG9vcExvY2tJbnRlcm5hbChQ
dXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wpOwogfQogCi1zdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5s
b2NrKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rp
dml0eSwgdm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2soQ0ZSdW5M
b29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkKikKIHsKLSAg
ICBVTlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWN0aXZp
dHksIGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHx8IGFjdGl2aXR5ID09IGtD
RlJ1bkxvb3BFeGl0KTsKICAgICBBU1NFUlQoIW1haW5UaHJlYWRMb2NrQ291bnQpOwpAQCAtNTUw
LDIyICs1MzMsMTkgQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9jayhDRlJ1bkxvb3BPYnNl
cnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWMKICAgICBXZWJSdW5Mb29wVW5s
b2NrSW50ZXJuYWwoUHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sKTsKIH0KIAotc3RhdGljIHZvaWQg
TWFpblJ1bkxvb3BVbmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZS
dW5Mb29wQWN0aXZpdHkgYWN0aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBNYWlu
UnVuTG9vcFVubG9ja0d1YXJkKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxv
b3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
b2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0eSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOwogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkbid0IGhhdmUgdGhlIHdlYiBsb2NrIGF0IHRoaXMgcG9pbnQuICBIb3dldmVyLCBN
b2JpbGVNYWlsIHNvbWV0aW1lcwogICAgIC8vIGdldCB0byBhIHN0YXRlIHdoZXJlIHRoZSBtYWlu
IHRocmVhZCBoYXMgd2ViIGxvY2sgYnV0IGl0IGRpZG4ndCByZWxlYXNlIGl0IG9uIGxhc3QKICAg
ICAvLyBydW5sb29wIGV4aXQsIGFuZCB3ZWIgdGhyZWFkIGdldHMgc3R1Y2sgYXQgd2FpdGluZyBm
b3IgdGhlIGxvY2suIElmIHRoaXMgaGFwcGVucywKICAgICAvLyB3ZSBuZWVkIHRvIGhlbHAgcmVs
ZWFzZSB0aGUgbG9jay4gIFNlZSA8cmRhcjovL3Byb2JsZW0vODAwNTE5Mj4uCi0gICAgaWYgKG1h
aW5UaHJlYWRMb2NrQ291bnQgIT0gMCAmJiBzTWFpblRocmVhZE1vZGFsQ291bnQgPT0gMCkgewor
ICAgIGlmIChtYWluVGhyZWFkTG9ja0NvdW50ICYmICFzTWFpblRocmVhZE1vZGFsQ291bnQpIHsK
ICAgICAgICAgTlNMb2coQCJXQVJOSU5HOiBNYWluIHRocmVhZCBkaWRuJ3QgcmVsZWFzZSB0aGUg
bG9jayBhdCBsYXN0IHJ1bmxvb3AgZXhpdCEiKTsKIAogICAgICAgICBNYWluUnVuTG9vcEF1dG9V
bmxvY2sob2JzZXJ2ZXIsIGFjdGl2aXR5LCBjb250ZXh0KTsKLSAgICAgICAgaWYgKG1haW5UaHJl
YWRMb2NrQ291bnQgIT0gMCkKKyAgICAgICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQpCiAgICAg
ICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50ID0gMDsKICAgICB9CiB9CkBAIC02MTIsNDEgKzU5
MiwyOSBAQCB2b2lkIFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCkKICAgICBpc05lc3RlZFdlYlRo
cmVhZFJ1bkxvb3AgPSBOTzsKIH0KIAotc3RhdGljIHZvaWQgRnJlZVRocmVhZENvbnRleHQodm9p
ZCAqdGhyZWFkQ29udGV4dCkKK3N0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJyZW50VGhyZWFk
Q29udGV4dCh2b2lkKQogewotICAgIGlmICh0aHJlYWRDb250ZXh0ICE9IE5VTEwpCi0gICAgICAg
ZnJlZSh0aHJlYWRDb250ZXh0KTsKLX0KLQotc3RhdGljIHZvaWQgSW5pdFRocmVhZENvbnRleHRL
ZXkoKQotewotICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdGhyZWFkQ29udGV4
dEtleSwgRnJlZVRocmVhZENvbnRleHQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgQ1JBU0go
KTsKLX0KLQotc3RhdGljIFdlYlRocmVhZENvbnRleHQgKkN1cnJlbnRUaHJlYWRDb250ZXh0KHZv
aWQpCi17Ci0gICAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRDb250cm9sID0gUFRIUkVBRF9P
TkNFX0lOSVQ7IAotICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIEluaXRUaHJlYWRDb250
ZXh0S2V5KTsgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2UoZmxhZywgW10geworICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9jcmVh
dGUoJnRocmVhZENvbnRleHRLZXksIFtdICh2b2lkKiB0aHJlYWRDb250ZXh0KSB7CisgICAgICAg
ICAgICBpZiAodGhyZWFkQ29udGV4dCkKKyAgICAgICAgICAgICAgICBmcmVlKHRocmVhZENvbnRl
eHQpOworICAgICAgICB9KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVycm9yKTsKKyAgICB9
KTsKIAotICAgIFdlYlRocmVhZENvbnRleHQgKnRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29u
dGV4dCopcHRocmVhZF9nZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsKLSAgICBpZiAodGhy
ZWFkQ29udGV4dCA9PSBOVUxMKSB7Ci0gICAgICAgIHRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFk
Q29udGV4dCAqKWNhbGxvYyhzaXplb2YoV2ViVGhyZWFkQ29udGV4dCksIDEpOworICAgIFdlYlRo
cmVhZENvbnRleHQqIHRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29udGV4dCopcHRocmVhZF9n
ZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsKKyAgICBpZiAoIXRocmVhZENvbnRleHQpIHsK
KyAgICAgICAgdGhyZWFkQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYlRocmVhZENvbnRleHQqPihj
YWxsb2Moc2l6ZW9mKFdlYlRocmVhZENvbnRleHQpLCAxKSk7CiAgICAgICAgIHB0aHJlYWRfc2V0
c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSwgdGhyZWFkQ29udGV4dCk7CiAgICAgfSAgICAgICAg
CiAgICAgcmV0dXJuIHRocmVhZENvbnRleHQ7CiB9CiAKLXN0YXRpYwotI2lmbmRlZiBfX2xsdm1f
XwotTk9fUkVUVVJOCi0jZW5kaWYKLXZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcpCitzdGF0
aWMgTk9fUkVUVVJOIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKIHsKICAgICBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpOwogCi0gICAgVU5VU0VEX1BBUkFNKGFyZyk7CiAgICAgLy8gV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nKCkgc2luY2UgdGhlCiAgICAgLy8gY29kZSBpbnZva2VkIGJ5IHRoZSBsYXR0ZXIgbmVlZHMg
dG8ga25vdyBpZiBpdCdzIHJ1bm5pbmcgb24gdGhlIFdlYlRocmVhZC4gU2VlCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzg1MDI0ODc+LgpAQCAtNjY1LDE5ICs2MzMsMTkgQEAgdm9pZCAqUnVuV2Vi
VGhyZWFkKHZvaWQgKmFyZykKICAgICB3ZWJUaHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogICAgIHdlYlRocmVhZE5TUnVuTG9vcCA9IFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5M
b29wXSByZXRhaW5dOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9vcExvY2tP
YnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BCZWZv
cmVUaW1lcnN8a0NGUnVuTG9vcEJlZm9yZVNvdXJjZXN8a0NGUnVuTG9vcEFmdGVyV2FpdGluZywg
WUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgTlVMTCk7CisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYg
d2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxw
dHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtD
RlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpOwog
ICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BMb2Nr
T2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgQ0ZSZWxlYXNlKHdlYlJ1
bkxvb3BMb2NrT2JzZXJ2ZXJSZWYpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgp
OwogCiAgICAgLy8gV2UgbXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3
ZWIgdGhyZWFkLiBDQSBjb21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBu
dW1iZXIgdGhhbiB0aGF0IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUo
TlVMTCwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmd8a0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAw
MCwgV2ViUnVuTG9vcFVubG9jaywgTlVMTCk7ICAgIAorICAgIENGUnVuTG9vcE9ic2VydmVyUmVm
IHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51
bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMjUw
MDAwMCwgV2ViUnVuTG9vcFVubG9jaywgbnVsbHB0cik7ICAgIAogICAgIENGUnVuTG9vcEFkZE9i
c2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICBDRlJlbGVhc2Uod2ViUnVuTG9vcFVubG9ja09ic2Vy
dmVyUmVmKTsgICAgCiAKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VD
b250ZXh0ID0gezAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OwotICAgIFdlYlRocmVhZFJlbGVhc2VT
b3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoTlVMTCwgLTEsICZSZWxlYXNlU291cmNlQ29u
dGV4dCk7CisgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9
IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKKyAgICBX
ZWJUaHJlYWRSZWxlYXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0x
LCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpOwogICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJl
YWRSdW5Mb29wLCBXZWJUaHJlYWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OwogCiAgICAgewpAQCAtNjg4LDkgKzY1Niw3IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICph
cmcpCiAgICAgd2hpbGUgKDEpCiAgICAgICAgIENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUsIERpc3RhbnRGdXR1cmUsIHRydWUpOwogCi0jaWZkZWYgX19sbHZtX18KLSAg
ICByZXR1cm4gTlVMTDsKLSNlbmRpZiAgCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRp
YyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKQEAgLTcwNiw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCBT
dGFydFdlYlRocmVhZCgpCiAgICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRo
ZSBtYWluIFVJIHRocmVhZCBzbyB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBs
YXRlciBzZXQgaXQncyB0aHJlYWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBv
YmplY3RzLgogICAgIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEmIHVudXNlZCA9IFdlYkNvcmU6
OnRocmVhZEdsb2JhbERhdGEoKTsKLSAgICAodm9pZCl1bnVzZWQ7CisgICAgVU5VU0VEX1BBUkFN
KHVudXNlZCk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAt
NzI3LDggKzY5Myw4IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBwdGhyZWFk
X211dGV4YXR0cl9kZXN0cm95KCZtdXRleF9hdHRyKTsKIAogICAgIENGUnVuTG9vcFJlZiBydW5M
b29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQg
ZGVsZWdhdGVTb3VyY2VDb250ZXh0ID0gezAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZURlbGVnYXRlU291cmNlfTsKLSAgICBkZWxlZ2F0ZVNv
dXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAwLCAmZGVsZWdhdGVTb3VyY2VDb250
ZXh0KTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGRlbGVnYXRlU291cmNlQ29udGV4dCA9
IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZX07CisgICAgZGVsZWdhdGVT
b3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMCwgJmRlbGVnYXRlU291cmNl
Q29udGV4dCk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRlIGNhbGxiYWNrcyB3
aGlsZSBzY3JvbGxpbmcsIGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9uZSBvdXRzdGFuZGlu
ZyB3aGVuIHdlIHN0YXJ0LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21tb24gcnVuIGxvb3AK
QEAgLTczNyw3ICs3MDMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICBz
QXN5bmNEZWxlZ2F0ZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKIAotICAgIG1h
aW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVM
TCwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAx
LCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIE5VTEwpOworICAgIG1haW5SdW5Mb29wQXV0b1VubG9j
a09ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJl
Zm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1
dG9VbmxvY2ssIG51bGxwdHIpOwogCiAgICAgcHRocmVhZF9hdHRyX3QgdGF0dHI7CiAgICAgcHRo
cmVhZF9hdHRyX2luaXQoJnRhdHRyKTsKQEAgLTc1OSw3ICs3MjUsNyBAQCBzdGF0aWMgdm9pZCBT
dGFydFdlYlRocmVhZCgpCiAgICAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdzIGZl
bnYgdG8gd29ya2VycyAmIHRoZSB3ZWIgdGhyZWFkLgogICAgICAgICBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKIAotICAg
ICAgICBwdGhyZWFkX2NyZWF0ZSgmd2ViVGhyZWFkLCAmdGF0dHIsIFJ1bldlYlRocmVhZCwgTlVM
TCk7CisgICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ3ZWJUaHJlYWQsICZ0YXR0ciwgUnVuV2ViVGhy
ZWFkLCBudWxscHRyKTsKICAgICAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnRhdHRyKTsKIAog
ICAgICAgICBzdGFydHVwQ29uZGl0aW9uLndhaXQoc3RhcnR1cExvY2spOwpAQCAtNzY4LDcgKzcz
NCw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBpbml0aWFsaXplQXBwbGlj
YXRpb25VSVRocmVhZCgpOwogfQogCi1zdGF0aWMgaW50IFdlYlRpbWVkQ29uZGl0aW9uTG9jayAo
cHRocmVhZF9jb25kX3QgKmNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90ICpsb2NrLCBDRkFic29s
dXRlVGltZSBpbnRlcnZhbCkKK3N0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrKHB0aHJl
YWRfY29uZF90KiBjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCogbG9jaywgQ0ZBYnNvbHV0ZVRp
bWUgaW50ZXJ2YWwpCiB7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRpbWU7CiAgICAgQ0ZBYnNvbHV0
ZVRpbWUgYXQgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwpAQCAtNzk0
LDE4ICs3NjAsMTYgQEAgc3RhdGljIGJvb2wgX1dlYlRyeVRocmVhZExvY2soYm9vbCBzaG91bGRU
cnkpCiAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIAotICAgIGludCByZXN1bHQ7CiAgICAg
Ym9vbCBidXN5ID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZFRyeSkgewotICAgICAgICByZXN1bHQg
PSBwdGhyZWFkX211dGV4X3RyeWxvY2soJndlYkxvY2spOwotICAgICAgICBpZiAocmVzdWx0ID09
IEVCVVNZKSB7CisgICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3RyeWxvY2soJndl
YkxvY2spOworICAgICAgICBpZiAocmVzdWx0ID09IEVCVVNZKQogICAgICAgICAgICAgYnVzeSA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXN1bHQgPT0gMCwgInRyeSB3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9jaygm
d2ViTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJ3ZWIg
bG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAidHJ5IHdlYiBsb2NrIGZhaWxlZCB3
aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCByZXN1bHQg
PSBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2spOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVk
IiwgcmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFidXN5KSB7CkBAIC04ODksMTYgKzg1
MywxNSBAQCB2b2lkIFdlYlRocmVhZFVubG9ja0Zyb21BbnlUaHJlYWQoKQogICAgIEFTU0VSVChv
dGhlclRocmVhZExvY2tDb3VudCk7CiAgICAgb3RoZXJUaHJlYWRMb2NrQ291bnQtLTsKICAgICAK
LSAgICBpbnQgcmVzdWx0OwotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJM
b2NrKTsgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiB1bmxvY2sg
ZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQo
cmVzdWx0LCAhcmVzdWx0LCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKIH0KIAogdm9pZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwoKQogewogICAgIEFTU0VS
VCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFp
blJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVM
TCwga0NGUnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIE5VTEwp
OworICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZl
ciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRyeSwgWUVT
LCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKTsKICAgICBDRlJ1bkxvb3BBZGRP
YnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCksIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZl
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICBDRlJlbGVhc2UobWFpblJ1bkxvb3BVbmxv
Y2tHdWFyZE9ic2VydmVyKTsKIH0KQEAgLTkxMywyNiArODc2LDI2IEBAIHZvaWQgX1dlYlRocmVh
ZFVubG9jayh2b2lkKQogI2VuZGlmCiAgICAgCiAgICAgaWYgKCFXZWJUaHJlYWRJc0N1cnJlbnQo
KSkgewotICAgICAgICBBU1NFUlQobWFpblRocmVhZExvY2tDb3VudCAhPSAwKTsKKyAgICAgICAg
QVNTRVJUKG1haW5UaHJlYWRMb2NrQ291bnQpOwogICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50
LS07CiAgICAgfSBlbHNlIHsgICAgCiAgICAgICAgIHdlYlRocmVhZExvY2tDb3VudC0tOwogICAg
ICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpbnQg
cmVzdWx0OwotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCi0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiB1bmxvY2sgZmFpbGVkIHdp
dGggY29kZTolZCIsIHJlc3VsdCk7ICAgIAorICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4
X3VubG9jaygmd2ViTG9jayk7IAorICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3Vs
dCwgIXJlc3VsdCwgIndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7ICAg
IAogfQogCiBib29sIFdlYlRocmVhZElzTG9ja2VkKHZvaWQpCiB7CiAgICAgaWYgKFdlYlRocmVh
ZElzQ3VycmVudCgpKQogICAgICAgICByZXR1cm4gd2ViVGhyZWFkTG9ja0NvdW50OwotICAgIGVs
c2UgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQorCisgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQog
ICAgICAgICByZXR1cm4gbWFpblRocmVhZExvY2tDb3VudDsKLSAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBvdGhlclRocmVhZExvY2tDb3VudDsKKworICAgIHJldHVybiBvdGhlclRocmVhZExvY2tD
b3VudDsKIH0KIAogYm9vbCBXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQodm9pZCkKQEAgLTk1
NSw3ICs5MTgsNyBAQCB2b2lkIFdlYlRocmVhZExvY2tQb3BNb2RhbCh2b2lkKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwotICAgIEFTU0VS
VChzTWFpblRocmVhZE1vZGFsQ291bnQgIT0gMCk7CisgICAgQVNTRVJUKHNNYWluVGhyZWFkTW9k
YWxDb3VudCk7CiAgICAgLS1zTWFpblRocmVhZE1vZGFsQ291bnQ7CiB9CiAKQEAgLTk3OSw3ICs5
NDIsNyBAQCBOU1J1bkxvb3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKQogICAgIHJldHVybiBb
TlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXTsKIH0KIAotV2ViVGhyZWFkQ29udGV4dCAqV2ViVGhy
ZWFkQ3VycmVudENvbnRleHQodm9pZCkKK1dlYlRocmVhZENvbnRleHQqIFdlYlRocmVhZEN1cnJl
bnRDb250ZXh0KHZvaWQpCiB7CiAgICAgcmV0dXJuIEN1cnJlbnRUaHJlYWRDb250ZXh0KCk7CiB9
CkBAIC05ODgsOCArOTUxLDggQEAgdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dl
YlByb2Nlc3MoKSwgIlRoZSBXZWJQcm9jZXNzIHNob3VsZCBuZXZlciBydW4gYSBXZWIgVGhyZWFk
Iik7CiAKLSAgICBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdENvbnRyb2wgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKLSAgICBwdGhyZWFkX29uY2UoJmluaXRDb250cm9sLCBTdGFydFdlYlRocmVhZCk7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxh
ZywgU3RhcnRXZWJUaHJlYWQpOwogfQogCiBib29sIFdlYlRocmVhZElzRW5hYmxlZCh2b2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328337</attachid>
            <date>2017-12-04 03:16:17 -0800</date>
            <delta_ts>2017-12-04 03:28:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180344-20171204201616.patch</filename>
            <type>text/plain</type>
            <size>31275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2NjYyOGNhMGNkYjQy
NGYwN2NhYzcxOTBkYzMzYTY2YmU5OTQ1ZC4uMjc3NjA2Y2I4OGEwYTUyZTE5ZGZkMmQ2Njc3Yzcy
M2YyNGEyZTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTEyLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBX
ZWJUaHJlYWQgY29kZSBmb3IgZnVydGhlciByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0b3VjaGluZyBUaHJlYWQgYW5kIGl0
cyBpbml0aWFsaXphdGlvbiBjb21wb25lbnQsIHdlIG5lZWQgdG8gdG91Y2gKKyAgICAgICAgd2Vi
IHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIHRvby4gSG93ZXZlciwgc2luY2Ugd2ViIHRocmVh
ZCBjb2RlIGlzIG9sZCwKKyAgICAgICAgaXQncyBzdHlsZSBpcyBub3QgZm9sbG93aW5nIHRvIFdl
YktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpcnN0
IG1vZGVybml6ZXMgV2ViVGhyZWFkIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgMS4gYFR5cGUqYCBpbnN0ZWFkIG9mIGBUeXBlICpgLgorICAgICAgICAyLiBVc2Ugc3Rk
OjpjYWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2UuCisgICAgICAgIDMuIFVzZSBzdGF0
aWNfY2FzdCBpbnN0ZWFkIG9mIEMtY2FzdC4KKyAgICAgICAgNC4gVXNlIG51bGxwdHIgaW5zdGVh
ZCBvZiBOVUxMLgorICAgICAgICA1LiBVc2UgYHJldGAgb3IgYCFyZXRgIGluc3RlYWQgb2YgYHJl
dCAhPSAwYCBvciBgcmV0ID09IDBgLgorICAgICAgICA2LiBEbyBub3QgdXNlICNwcmFnbWEgdW51
c2VkLgorICAgICAgICA3LiBpZi1lbHNlIHdpdGggb25lIHN0YXRlbWVudCBzaG91bGQgbm90IGhh
dmUgYnJhY2VzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGRvIG5vdCBjaGFuZ2UgcHRo
cmVhZF9jb25kaXRpb25fdCB0byBXVEY6OkNvbmRpdGlvbiBhbmQKKyAgICAgICAgcHRocmVhZF9t
dXRleF90IHRvIFdURjo6TG9jayBzaW5jZSB3ZWIgdGhyZWFkIGNvZGUgcmVxdWlyZXMgZXh0cmEg
Y2FyZSBhYm91dAorICAgICAgICB0aHJlYWRpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAg
ICAgICAoLVtOU09iamVjdCByZWxlYXNlT25NYWluVGhyZWFkXSk6CisgICAgICAgIChTZW5kTWVz
c2FnZSk6CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVs
ZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKToKKyAgICAgICAgKHVubG9ja1dlYkNvcmVSZWxl
YXNlTG9jayk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAg
ICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQ2Fs
bERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViVGhyZWFkTWFrZU5T
SW52b2NhdGlvbik6CisgICAgICAgIChNYWluUnVuTG9vcEF1dG9VbmxvY2spOgorICAgICAgICAo
X1dlYlRocmVhZEF1dG9Mb2NrKToKKyAgICAgICAgKFdlYlJ1bkxvb3BMb2NrKToKKyAgICAgICAg
KFdlYlJ1bkxvb3BVbmxvY2spOgorICAgICAgICAoTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCk6Cisg
ICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgor
ICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2Nr
KToKKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKToKKyAgICAgICAgKFdlYlRocmVhZFVubG9j
a0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToK
KyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAoV2ViVGhyZWFkSXNMb2NrZWQp
OgorICAgICAgICAoV2ViVGhyZWFkTG9ja1BvcE1vZGFsKToKKyAgICAgICAgKFdlYlRocmVhZEN1
cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYlRocmVhZEVuYWJsZSk6CisgICAgICAgIChGcmVl
VGhyZWFkQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0VGhyZWFkQ29udGV4dEtleSk6
IERlbGV0ZWQuCisKIDIwMTctMTItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vcmUgbGVha3MgaW4gVGV4dENvbWJp
bmVyR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1
ZS4uYWRmN2MxOGY5ZWViN2RkMTA0ODMwOTBmZDBjYzNiYWNkZTFjNmQ1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzMsMTYg
KzczLDE1IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBOU09iamVjdChXZWJDb3JlVGhyZWFkQWRk
aXRpb25zKQogCiAtICh2b2lkKXJlbGVhc2VPbk1haW5UaHJlYWQgewotICAgIGlmIChbTlNUaHJl
YWQgaXNNYWluVGhyZWFkXSkgeworICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAg
ICAgICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9i
amVjdDpuaWwgd2FpdFVudGlsRG9uZTpOT107Ci0gICAgfQogfQogCiBAZW5kCiAKLXR5cGVkZWYg
dm9pZCAqTlNBdXRvcmVsZWFzZVBvb2xNYXJrOwordXNpbmcgTlNBdXRvcmVsZWFzZVBvb2xNYXJr
ID0gdm9pZCo7CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC05
Miw3ICs5MSw3IEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVh
c2VQb29sTWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRp
dGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9j
aywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOworc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlv
bkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBD
RkFic29sdXRlVGltZSBpbnRlcnZhbCk7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgd2ViTG9j
azsKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgYXV0b3JlbGVhc2VQb29sTWFyazsKQEAg
LTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlk
IG9iaik7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVsZWdhdGVMb2NrID0gUFRIUkVBRF9N
VVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCBkZWxlZ2F0ZUNvbmRpdGlv
biA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBOU0ludm9jYXRpb24gKmRlbGVn
YXRlSW52b2NhdGlvbjsKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2Ug
PSBOVUxMOworc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9P
TCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBC
T09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CkBAIC0xMzAsNyArMTI5LDcgQEAgc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwogc3RhdGlj
IFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBD
b25kaXRpb247CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICp3ZWJUaHJlYWRDb250ZXh0Owor
c3RhdGljIFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7CiBzdGF0aWMgcHRocmVh
ZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2Nr
Q291bnQ7CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CkBAIC0xNDMsMTcg
KzE0MiwxNiBAQCBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwo
aWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdl
YlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dp
dGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFi
bGVBcnJheSAqc0FzeW5jRGVsZWdhdGVzID0gbmlsOworc3RhdGljIE5TTXV0YWJsZUFycmF5KiBz
QXN5bmNEZWxlZ2F0ZXMgPSBuaWw7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAg
ICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKIH0KIAotc3RhdGljIHZv
aWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZURl
bGVnYXRlU291cmNlKHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKICAgICBBU1NF
UlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5H
CkBAIC0xNjMsMTYgKzE2MSwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2
b2lkICppbmZvKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7CiAgICAgICAgIFtkZWxl
Z2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAg
ICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIs
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0g
ICAgfQogI2VuZGlmCiAKICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwpAQCAt
MTgxLDYyICsxNzgsNjIgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAq
aW5mbykKICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7CiAKICAg
ICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRl
bGVnYXRlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogI2lmIExPR19N
QUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSA9IE5POwogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24q
IGludm9jYXRpb24pCiB7Ci0gICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAg
IEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211
dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVz
dWx0ID09IDAsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwor
ICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgU2VuZE1lc3NhZ2UoaW52
b2NhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZWdhdGVT
b3VyY2UpOworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9j
ayk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAotICAgICAgICBkZWxlZ2F0ZUludm9jYXRpb24g
PSBpbnZvY2F0aW9uOwotICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKKyAgICBkZWxlZ2F0
ZUludm9jYXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAj
aWYgTE9HX01FU1NBR0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRd
IGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJn
dW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICAgICAgTlNMb2coQCJub3RpZmlj
YXRpb24gc2VuZDogJUAiLCBhcmd1bWVudDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxl
Z2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoW1tkZWxlZ2F0
ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBj
bGFzc11dKSB7CisgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIE5TTG9nKEAi
bm90aWZpY2F0aW9uIHNlbmQ6ICVAIiwgYXJndW1lbnQwKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
TlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0
ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAg
ICBfV2ViVGhyZWFkVW5sb2NrKCk7Ci0KLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25h
bChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29w
R2V0TWFpbigpKTsKLQotICAgICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlv
biwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpICE9IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUlu
dm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJ
bmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKTsKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUg
PSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFm
dGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBt
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDRlJlbGVhc2UobW9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7
CisgICAgeworICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQorICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
KyAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOworCisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BH
ZXRNYWluKCkpOwogCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAw
LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAg
ICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICB3aGlsZSAoIWRlbGVnYXRl
SGFuZGxlZCkgeworICAgICAgICAgICAgaWYgKFdlYlRpbWVkQ29uZGl0aW9uTG9jaygmZGVsZWdh
dGVDb25kaXRpb24sICZkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgeworICAg
ICAgICAgICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlv
biBnZXRBcmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5T
U3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAK
KyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRN
b2RlKENGUnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVs
ZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFp
biBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3Jt
YXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kZSkKKyAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlv
bik7CisgICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2sp
OworCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgX1dlYlRyeVRocmVhZExv
Y2soZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMjg1LDMwICsyODIsMjggQEAgdm9pZCBXZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogI2VuZGlmICAgICAgICAKIAogICAgIGludCByZXN1
bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVh
c2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmIChXZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBO
VUxMKTsKKyAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2Fr
ZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwogCiAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXN1bHQgPT0gMCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dl
YkNvcmVSZWxlYXNlTG9jaygpCiB7CiAgICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2RlKQotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNlTG9jayBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRV9VTlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKQogewogICAgIGludCBsb2NrY29kZSA9IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxv
Y2tjb2RlKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVS
ZWxlYXNlTG9jayB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIGxvY2tjb2RlKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJl
bGVhc2VMb2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2MywzNCAr
MzU4LDMzIEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3Mg
Y2xzKQogICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhyZWxlYXNlTWV0aG9kLCBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChjbHMsIHdlYlRocmVhZExvY2tSZWxlYXNlU0VMKSk7CiB9
CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCBf
Y21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VM
KQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxl
ZCgpKQorICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKICAgICAgICAgW3NlbGYgX3dl
YmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9ja1dlYkNv
cmVSZWxlYXNlTG9jaygpOwotICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyB3ZSBjYW4KLSAgICAgICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJD
b3JlUmVsZWFzZUxvY2sgbm93LgotICAgICAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2Nr
KCk7Ci0gICAgICAgICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCi0gICAgICAgICAgICAg
ICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2Ug
cmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgICAgIC8vIHRocmVhZCBj
b3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKLSAg
ICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBpZiAo
W3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBy
ZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZl
bHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KKyAgICAgICAgdW5sb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAg
ICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgICAg
ICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyBhbm90aGVyCisgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVs
ZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgLy8gcmVsZWFzZSB0
byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uLgorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNl
T25XZWJUaHJlYWRdOworICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKICAgICB9
CiB9CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNl
bGYsIFNFTCBfY21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0lt
cGwoaWQgc2VsZiwgU0VMKQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKICAgICBsb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
IHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxl
YXNlV2l0aFdlYlRocmVhZExvY2tdOwpAQCAtMzk5LDMwICszOTMsMjcgQEAgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
dW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQgPT0gMCwgIlJlbGVhc2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVk
IHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAKLSAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3Rz
ID0gTlVMTDsKKyAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKICAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAg
b2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBXZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkpOworICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5
KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CiAgICAgICAgIENGQXJyYXlS
ZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICB9CiAKICAgICBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJSZWxlYXNlIHVubG9jayBmYWlsZWQg
d2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQs
ICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlm
ICghb2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBDRkFy
cmF5R2V0Q291bnQob2JqZWN0cyk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewotICAgICAgICBpZCBvYmogPSAoaWQpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChvYmplY3RzLCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChvYmplY3RzKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWQgb2JqID0g
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChvYmplY3RzLCBpKTsKICNpZiBMT0dfUkVMRUFTRVMKICAg
ICAgICAgTlNMb2coQCJSZWxlYXNlIHJlY3YgW3dlYiB0aHJlYWRdIDogJUAiLCBvYmopOwogI2Vu
ZGlmCkBAIC00MzIsMTMgKzQyMywxMyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxl
YXNlU291cmNlKHZvaWQgKmluZm8pCiAgICAgQ0ZSZWxlYXNlKG9iamVjdHMpOwogfQogCi12b2lk
IFdlYlRocmVhZENhbGxEZWxlZ2F0ZShOU0ludm9jYXRpb24gKmludm9jYXRpb24pCit2b2lkIFdl
YlRocmVhZENhbGxEZWxlZ2F0ZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgLy8g
TlNJbnZvY2F0aW9uIHJlbGVhc2VkIGluIFNlbmRNZXNzYWdlKCkKICAgICBTZW5kRGVsZWdhdGVN
ZXNzYWdlKFtpbnZvY2F0aW9uIHJldGFpbl0pOwogfQogCi12b2lkIFdlYlRocmVhZFBvc3ROb3Rp
ZmljYXRpb24oTlNTdHJpbmcgKm5hbWUsIGlkIG9iamVjdCwgaWQgdXNlckluZm8pCit2b2lkIFdl
YlRocmVhZFBvc3ROb3RpZmljYXRpb24oTlNTdHJpbmcqIG5hbWUsIGlkIG9iamVjdCwgaWQgdXNl
ckluZm8pCiB7CiAgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOm5hbWUgb2Jq
ZWN0Om9iamVjdCB1c2VySW5mbzp1c2VySW5mb107CkBAIC00NDksNyArNDQwLDcgQEAgdm9pZCBX
ZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nICpuYW1lLCBpZCBvYmplY3QsIGlkIHVz
ZXJJbmZvKQogICAgIH0KIH0KIAotdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGVBc3luYyhOU0lu
dm9jYXRpb24gKmludm9jYXRpb24pCit2b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0ZUFzeW5jKE5T
SW52b2NhdGlvbiogaW52b2NhdGlvbikKIHsKICAgICBBU1NFUlQoaW52b2NhdGlvbik7CiAgICAg
aWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQpAQCAtNDU5LDEyICs0NTAsMTIgQEAgdm9pZCBXZWJU
aHJlYWRDYWxsRGVsZWdhdGVBc3luYyhOU0ludm9jYXRpb24gKmludm9jYXRpb24pCiB9CiAKIC8v
IE5vdGU6IGRlc3BpdGUgdGhlIG5hbWUsIHJldHVybnMgYW4gYXV0b3JlbGVhc2VkIG9iamVjdC4K
LU5TSW52b2NhdGlvbiAqV2ViVGhyZWFkTWFrZU5TSW52b2NhdGlvbihpZCB0YXJnZXQsIFNFTCBz
ZWxlY3RvcikKK05TSW52b2NhdGlvbiogV2ViVGhyZWFkTWFrZU5TSW52b2NhdGlvbihpZCB0YXJn
ZXQsIFNFTCBzZWxlY3RvcikKIHsKLSAgICBOU01ldGhvZFNpZ25hdHVyZSAqc2lnbmF0dXJlID0g
W3RhcmdldCBtZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcjpzZWxlY3Rvcl07CisgICAgTlNNZXRo
b2RTaWduYXR1cmUqIHNpZ25hdHVyZSA9IFt0YXJnZXQgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0
b3I6c2VsZWN0b3JdOwogICAgIEFTU0VSVChzaWduYXR1cmUpOwogICAgIGlmIChzaWduYXR1cmUp
IHsKLSAgICAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZv
Y2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpzaWduYXR1cmVdOworICAgICAgICBOU0ludm9jYXRp
b24qIGludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0
dXJlOnNpZ25hdHVyZV07CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldFNlbGVjdG9yOnNlbGVjdG9y
XTsKICAgICAgICAgW2ludm9jYXRpb24gc2V0VGFyZ2V0OnRhcmdldF07CiAgICAgICAgIFtpbnZv
Y2F0aW9uIHJldGFpbkFyZ3VtZW50c107CkBAIC00NzMsMTQgKzQ2NCwxMSBAQCBOU0ludm9jYXRp
b24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpCiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAotc3RhdGljIHZvaWQgTWFpblJ1bkxvb3BBdXRvVW5sb2NrKENG
UnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwg
dm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhDRlJ1bkxv
b3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHksIHZvaWQqKQogewotICAgIFVOVVNFRF9Q
QVJBTShvYnNlcnZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGl2aXR5KTsKLSAgICBVTlVTRURf
UEFSQU0oY29udGV4dCk7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAg
ICBpZiAoc01haW5UaHJlYWRNb2RhbENvdW50ICE9IDApCisgICAgaWYgKHNNYWluVGhyZWFkTW9k
YWxDb3VudCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIENGUnVuTG9vcFJlbW92ZU9ic2Vy
dmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CkBAIC00OTIsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQg
X1dlYlRocmVhZEF1dG9Mb2NrKHZvaWQpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7CiAKLSAgICBpZiAobWFpblRocmVhZExvY2tDb3VudCA9PSAwKSB7CisgICAgaWYgKCFt
YWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVu
TG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7ICAgIAogICAgICAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7CiAg
ICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwpAQCAtNTIzLDEwICs1
MTEsOCBAQCBzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5sb2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQ
b29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24pCiAgICAgaXNXZWJUaHJlYWRMb2NrZWQgPSBOTzsK
IH0KIAotc3RhdGljIHZvaWQgV2ViUnVuTG9vcExvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2Jz
ZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkICpjb250ZXh0KQorc3RhdGlj
IHZvaWQgV2ViUnVuTG9vcExvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2
aXR5IGFjdGl2aXR5LCB2b2lkKikKIHsKLSAgICBVTlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwotICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoYWN0aXZpdHksIGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BBZnRl
cldhaXRpbmcgfHwgYWN0aXZpdHkgPT0ga0NGUnVuTG9vcEJlZm9yZVRpbWVycyB8fCBhY3Rpdml0
eSA9PSBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyk7CiAKQEAgLTUzNywxMCArNTIzLDggQEAgc3Rh
dGljIHZvaWQgV2ViUnVuTG9vcExvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENG
UnVuTG9vcEFjdGl2aXR5IGFjdGkKICAgICBXZWJSdW5Mb29wTG9ja0ludGVybmFsKFB1c2hPclBv
cEF1dG9yZWxlYXNlUG9vbCk7CiB9CiAKLXN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2soQ0ZS
dW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2
b2lkICpjb250ZXh0KQorc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9jayhDRlJ1bkxvb3BPYnNl
cnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0aXZpdHksIHZvaWQqKQogewotICAgIFVOVVNF
RF9QQVJBTShvYnNlcnZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhY3Rpdml0eSwgYWN0
aXZpdHkgPT0ga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfHwgYWN0aXZpdHkgPT0ga0NGUnVuTG9v
cEV4aXQpOwogICAgIEFTU0VSVCghbWFpblRocmVhZExvY2tDb3VudCk7CkBAIC01NTAsMjIgKzUz
NCwxOSBAQCBzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5sb2NrKENGUnVuTG9vcE9ic2VydmVyUmVm
IG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhYwogICAgIFdlYlJ1bkxvb3BVbmxvY2tJbnRl
cm5hbChQdXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wpOwogfQogCi1zdGF0aWMgdm9pZCBNYWluUnVu
TG9vcFVubG9ja0d1YXJkKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BB
Y3Rpdml0eSBhY3Rpdml0eSwgdm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lkIE1haW5SdW5Mb29w
VW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2
aXR5IGFjdGl2aXR5LCB2b2lkKiBjb250ZXh0KQogewotICAgIFVOVVNFRF9QQVJBTShvYnNlcnZl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGl2aXR5KTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGRuJ3QgaGF2ZSB0aGUgd2ViIGxvY2sgYXQgdGhpcyBwb2ludC4gIEhvd2V2ZXIsIE1vYmlsZU1h
aWwgc29tZXRpbWVzCiAgICAgLy8gZ2V0IHRvIGEgc3RhdGUgd2hlcmUgdGhlIG1haW4gdGhyZWFk
IGhhcyB3ZWIgbG9jayBidXQgaXQgZGlkbid0IHJlbGVhc2UgaXQgb24gbGFzdAogICAgIC8vIHJ1
bmxvb3AgZXhpdCwgYW5kIHdlYiB0aHJlYWQgZ2V0cyBzdHVjayBhdCB3YWl0aW5nIGZvciB0aGUg
bG9jay4gSWYgdGhpcyBoYXBwZW5zLAogICAgIC8vIHdlIG5lZWQgdG8gaGVscCByZWxlYXNlIHRo
ZSBsb2NrLiAgU2VlIDxyZGFyOi8vcHJvYmxlbS84MDA1MTkyPi4KLSAgICBpZiAobWFpblRocmVh
ZExvY2tDb3VudCAhPSAwICYmIHNNYWluVGhyZWFkTW9kYWxDb3VudCA9PSAwKSB7CisgICAgaWYg
KG1haW5UaHJlYWRMb2NrQ291bnQgJiYgIXNNYWluVGhyZWFkTW9kYWxDb3VudCkgewogICAgICAg
ICBOU0xvZyhAIldBUk5JTkc6IE1haW4gdGhyZWFkIGRpZG4ndCByZWxlYXNlIHRoZSBsb2NrIGF0
IGxhc3QgcnVubG9vcCBleGl0ISIpOwogCiAgICAgICAgIE1haW5SdW5Mb29wQXV0b1VubG9jayhv
YnNlcnZlciwgYWN0aXZpdHksIGNvbnRleHQpOwotICAgICAgICBpZiAobWFpblRocmVhZExvY2tD
b3VudCAhPSAwKQorICAgICAgICBpZiAobWFpblRocmVhZExvY2tDb3VudCkKICAgICAgICAgICAg
IG1haW5UaHJlYWRMb2NrQ291bnQgPSAwOwogICAgIH0KIH0KQEAgLTYxMiw0MSArNTkzLDI5IEBA
IHZvaWQgV2ViUnVuTG9vcERpc2FibGVOZXN0ZWQoKQogICAgIGlzTmVzdGVkV2ViVGhyZWFkUnVu
TG9vcCA9IE5POwogfQogCi1zdGF0aWMgdm9pZCBGcmVlVGhyZWFkQ29udGV4dCh2b2lkICp0aHJl
YWRDb250ZXh0KQorc3RhdGljIFdlYlRocmVhZENvbnRleHQqIEN1cnJlbnRUaHJlYWRDb250ZXh0
KHZvaWQpCiB7Ci0gICAgaWYgKHRocmVhZENvbnRleHQgIT0gTlVMTCkKLSAgICAgICBmcmVlKHRo
cmVhZENvbnRleHQpOwotfQotCi1zdGF0aWMgdm9pZCBJbml0VGhyZWFkQ29udGV4dEtleSgpCi17
Ci0gICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZ0aHJlYWRDb250ZXh0S2V5LCBG
cmVlVGhyZWFkQ29udGV4dCk7Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBDUkFTSCgpOwotfQot
Ci1zdGF0aWMgV2ViVGhyZWFkQ29udGV4dCAqQ3VycmVudFRocmVhZENvbnRleHQodm9pZCkKLXsK
LSAgICBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdENvbnRyb2wgPSBQVEhSRUFEX09OQ0VfSU5J
VDsgCi0gICAgcHRocmVhZF9vbmNlKCZpbml0Q29udHJvbCwgSW5pdFRocmVhZENvbnRleHRLZXkp
OyAgICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShmbGFnLCBbXSB7CisgICAgICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdGhy
ZWFkQ29udGV4dEtleSwgW10gKHZvaWQqIHRocmVhZENvbnRleHQpIHsKKyAgICAgICAgICAgIGlm
ICh0aHJlYWRDb250ZXh0KQorICAgICAgICAgICAgICAgIGZyZWUodGhyZWFkQ29udGV4dCk7Cisg
ICAgICAgIH0pOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXJyb3IpOworICAgIH0pOwogCi0g
ICAgV2ViVGhyZWFkQ29udGV4dCAqdGhyZWFkQ29udGV4dCA9IChXZWJUaHJlYWRDb250ZXh0Kilw
dGhyZWFkX2dldHNwZWNpZmljKHRocmVhZENvbnRleHRLZXkpOwotICAgIGlmICh0aHJlYWRDb250
ZXh0ID09IE5VTEwpIHsKLSAgICAgICAgdGhyZWFkQ29udGV4dCA9IChXZWJUaHJlYWRDb250ZXh0
ICopY2FsbG9jKHNpemVvZihXZWJUaHJlYWRDb250ZXh0KSwgMSk7CisgICAgV2ViVGhyZWFkQ29u
dGV4dCogdGhyZWFkQ29udGV4dCA9IChXZWJUaHJlYWRDb250ZXh0KilwdGhyZWFkX2dldHNwZWNp
ZmljKHRocmVhZENvbnRleHRLZXkpOworICAgIGlmICghdGhyZWFkQ29udGV4dCkgeworICAgICAg
ICB0aHJlYWRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViVGhyZWFkQ29udGV4dCo+KGNhbGxvYyhz
aXplb2YoV2ViVGhyZWFkQ29udGV4dCksIDEpKTsKICAgICAgICAgcHRocmVhZF9zZXRzcGVjaWZp
Yyh0aHJlYWRDb250ZXh0S2V5LCB0aHJlYWRDb250ZXh0KTsKICAgICB9ICAgICAgICAKICAgICBy
ZXR1cm4gdGhyZWFkQ29udGV4dDsKIH0KIAotc3RhdGljCi0jaWZuZGVmIF9fbGx2bV9fCi1OT19S
RVRVUk4KLSNlbmRpZgotdm9pZCAqUnVuV2ViVGhyZWFkKHZvaWQgKmFyZykKK3N0YXRpYyB2b2lk
KiBSdW5XZWJUaHJlYWQodm9pZCopCiB7CiAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpz
aW5nbGV0b24oKS5wcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKIAotICAgIFVOVVNF
RF9QQVJBTShhcmcpOwogICAgIC8vIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBuZWVkcyB0
byBiZSBjYWxsZWQgYmVmb3JlIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNpbmNlIHRoZQog
ICAgIC8vIGNvZGUgaW52b2tlZCBieSB0aGUgbGF0dGVyIG5lZWRzIHRvIGtub3cgaWYgaXQncyBy
dW5uaW5nIG9uIHRoZSBXZWJUaHJlYWQuIFNlZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS84NTAy
NDg3Pi4KQEAgLTY2NSwxOSArNjM0LDE5IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcp
CiAgICAgd2ViVGhyZWFkUnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICB3ZWJU
aHJlYWROU1J1bkxvb3AgPSBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcmV0YWluXTsKIAot
ICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1
bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzfGtDRlJ1bkxv
b3BCZWZvcmVTb3VyY2VzfGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9v
cExvY2ssIE5VTEwpOworICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BMb2NrT2Jz
ZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVm
b3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0
aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKTsKICAgICBDRlJ1bkxvb3BBZGRP
YnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwogICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wTG9ja09ic2VydmVy
UmVmKTsKICAgICAKICAgICBXZWJUaHJlYWRJbml0UnVuUXVldWUoKTsKIAogICAgIC8vIFdlIG11
c3QgaGF2ZSB0aGUgbG9jayB3aGVuIENBIHBhaW50cyBpbiB0aGUgd2ViIHRocmVhZC4gQ0EgY29t
bWl0cyBhdCAyMDAwMDAwIHNvIHdlIHVzZSBsYXJnZXIgb3JkZXIgbnVtYmVyIHRoYW4gdGhhdCB0
byBmcmVlIHRoZSBsb2NrLgotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BVbmxv
Y2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BC
ZWZvcmVXYWl0aW5nfGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDI1MDAwMDAsIFdlYlJ1bkxvb3BVbmxv
Y2ssIE5VTEwpOyAgICAKKyAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wVW5sb2Nr
T2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29w
QmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDI1MDAwMDAsIFdlYlJ1bkxvb3BV
bmxvY2ssIG51bGxwdHIpOyAgICAKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRS
dW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7CiAgICAgQ0ZSZWxlYXNlKHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZik7ICAgIAogCi0g
ICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBOVUxM
LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBIYW5kbGVXZWJUaHJl
YWRSZWxlYXNlU291cmNlfTsKLSAgICBXZWJUaHJlYWRSZWxlYXNlU291cmNlID0gQ0ZSdW5Mb29w
U291cmNlQ3JlYXRlKE5VTEwsIC0xLCAmUmVsZWFzZVNvdXJjZUNvbnRleHQpOworICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZX07CisgICAgV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAtMSwgJlJlbGVhc2VTb3VyY2VD
b250ZXh0KTsKICAgICBDRlJ1bkxvb3BBZGRTb3VyY2Uod2ViVGhyZWFkUnVuTG9vcCwgV2ViVGhy
ZWFkUmVsZWFzZVNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAgIHsKQEAgLTY4
OCw5ICs2NTcsNyBAQCB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQogICAgIHdoaWxlICgx
KQogICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCBEaXN0
YW50RnV0dXJlLCB0cnVlKTsKIAotI2lmZGVmIF9fbGx2bV9fCi0gICAgcmV0dXJuIE5VTEw7Ci0j
ZW5kaWYgIAorICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgdm9pZCBTdGFydFdlYlRo
cmVhZCgpCkBAIC03MDYsNyArNjczLDcgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQog
ICAgIC8vIEluaXRpYWxpemUgVGhyZWFkR2xvYmFsRGF0YSBvbiB0aGUgbWFpbiBVSSB0aHJlYWQg
c28gdGhhdCB0aGUgV2ViQ29yZSB0aHJlYWQKICAgICAvLyBjYW4gbGF0ZXIgc2V0IGl0J3MgdGhy
ZWFkLXNwZWNpZmljIGRhdGEgdG8gcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0cy4KICAgICBXZWJD
b3JlOjpUaHJlYWRHbG9iYWxEYXRhJiB1bnVzZWQgPSBXZWJDb3JlOjp0aHJlYWRHbG9iYWxEYXRh
KCk7Ci0gICAgKHZvaWQpdW51c2VkOworICAgIFVOVVNFRF9QQVJBTSh1bnVzZWQpOwogCiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTcyNyw4ICs2OTQsOCBAQCBz
dGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJv
eSgmbXV0ZXhfYXR0cik7CiAKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IENGUnVuTG9vcEdl
dEN1cnJlbnQoKTsKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGRlbGVnYXRlU291cmNlQ29u
dGV4dCA9IHswLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM
LCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZX07Ci0gICAgZGVsZWdhdGVTb3VyY2UgPSBDRlJ1bkxvb3BT
b3VyY2VDcmVhdGUoTlVMTCwgMCwgJmRlbGVnYXRlU291cmNlQ29udGV4dCk7CisgICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgSGFuZGxlRGVsZWdhdGVTb3VyY2V9OworICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29w
U291cmNlQ3JlYXRlKG51bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOwogCiAgICAg
Ly8gV2Ugc2hvdWxkbid0IGdldCBkZWxlZ2F0ZSBjYWxsYmFja3Mgd2hpbGUgc2Nyb2xsaW5nLCBi
dXQgdGhlcmUgbWlnaHQgYmUKICAgICAvLyBvbmUgb3V0c3RhbmRpbmcgd2hlbiB3ZSBzdGFydC4g
IEFkZCB0aGUgc291cmNlIGZvciBhbGwgY29tbW9uIHJ1biBsb29wCkBAIC03MzcsNyArNzA0LDcg
QEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogCiAgICAgc0FzeW5jRGVsZWdhdGVzID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CiAKLSAgICBtYWluUnVuTG9vcEF1dG9Vbmxv
Y2tPYnNlcnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BCZWZv
cmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRv
VW5sb2NrLCBOVUxMKTsKKyAgICBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciA9IENGUnVu
TG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NG
UnVuTG9vcEV4aXQsIFlFUywgMzAwMDAwMSwgTWFpblJ1bkxvb3BBdXRvVW5sb2NrLCBudWxscHRy
KTsKIAogICAgIHB0aHJlYWRfYXR0cl90IHRhdHRyOwogICAgIHB0aHJlYWRfYXR0cl9pbml0KCZ0
YXR0cik7CkBAIC03NTksNyArNzI2LDcgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQog
ICAgICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdvcmtlcnMgJiB0
aGUgd2ViIHRocmVhZC4KICAgICAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaW5nbGV0
b24oKS5zYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CiAKLSAgICAgICAgcHRocmVhZF9jcmVh
dGUoJndlYlRocmVhZCwgJnRhdHRyLCBSdW5XZWJUaHJlYWQsIE5VTEwpOworICAgICAgICBwdGhy
ZWFkX2NyZWF0ZSgmd2ViVGhyZWFkLCAmdGF0dHIsIFJ1bldlYlRocmVhZCwgbnVsbHB0cik7CiAg
ICAgICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZ0YXR0cik7CiAKICAgICAgICAgc3RhcnR1cENv
bmRpdGlvbi53YWl0KHN0YXJ0dXBMb2NrKTsKQEAgLTc2OCw3ICs3MzUsNyBAQCBzdGF0aWMgdm9p
ZCBTdGFydFdlYlRocmVhZCgpCiAgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQoKTsK
IH0KIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpj
b25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwp
CitzdGF0aWMgaW50IFdlYlRpbWVkQ29uZGl0aW9uTG9jayhwdGhyZWFkX2NvbmRfdCogY29uZGl0
aW9uLCBwdGhyZWFkX211dGV4X3QqIGxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFsKQogewog
ICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lOwogICAgIENGQWJzb2x1dGVUaW1lIGF0ID0gQ0ZBYnNv
bHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKQEAgLTc5NCwxOCArNzYxLDE2IEBAIHN0
YXRpYyBib29sIF9XZWJUcnlUaHJlYWRMb2NrKGJvb2wgc2hvdWxkVHJ5KQogICAgIH0KICAgICAg
ICAgCiAgICAgICAgICAgICAKLSAgICBpbnQgcmVzdWx0OwogICAgIGJvb2wgYnVzeSA9IGZhbHNl
OwogICAgIGlmIChzaG91bGRUcnkpIHsKLSAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF90
cnlsb2NrKCZ3ZWJMb2NrKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBFQlVTWSkgeworICAgICAg
ICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF90cnlsb2NrKCZ3ZWJMb2NrKTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSBFQlVTWSkKICAgICAgICAgICAgIGJ1c3kgPSB0cnVlOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJ0cnkg
d2ViIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7Ci0gICAgfQotICAgIGVsc2Ug
ewotICAgICAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2spOwotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAid2ViIGxvY2sgZmFpbGVkIHdpdGgg
Y29kZTolZCIsIHJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoIXJlc3VsdCwgInRyeSB3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9s
b2NrKCZ3ZWJMb2NrKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0LCAid2ViIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAgICAg
fQogICAgIAogICAgIGlmICghYnVzeSkgewpAQCAtODg5LDE2ICs4NTQsMTUgQEAgdm9pZCBXZWJU
aHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKCkKICAgICBBU1NFUlQob3RoZXJUaHJlYWRMb2NrQ291
bnQpOwogICAgIG90aGVyVGhyZWFkTG9ja0NvdW50LS07CiAgICAgCi0gICAgaW50IHJlc3VsdDsK
LSAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2ViTG9jayk7IAotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJ3ZWIgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6
JWQiLCByZXN1bHQpOworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2Vi
TG9jayk7IAorICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCwg
IndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiB9CiAKIHZvaWQgV2Vi
VGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKCkKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wVW5sb2NrR3Vh
cmRPYnNlcnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BFbnRy
eSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBOVUxMKTsKKyAgICBDRlJ1bkxvb3BP
YnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNl
cnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywgMCwgTWFpblJ1bkxvb3BV
bmxvY2tHdWFyZCwgbnVsbHB0cik7CiAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29w
R2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CiAgICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZlcik7
CiB9CkBAIC05MTMsMjYgKzg3NywyNiBAQCB2b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9pZCkKICNl
bmRpZgogICAgIAogICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgQVNT
RVJUKG1haW5UaHJlYWRMb2NrQ291bnQgIT0gMCk7CisgICAgICAgIEFTU0VSVChtYWluVGhyZWFk
TG9ja0NvdW50KTsKICAgICAgICAgbWFpblRocmVhZExvY2tDb3VudC0tOwogICAgIH0gZWxzZSB7
ICAgIAogICAgICAgICB3ZWJUaHJlYWRMb2NrQ291bnQtLTsKICAgICAgICAgd2ViVGhyZWFkU2hv
dWxkWWllbGQgPSBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgaW50IHJlc3VsdDsKLSAgICByZXN1
bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2ViTG9jayk7IAotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocmVzdWx0ID09IDAsICJ3ZWIgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1
bHQpOyAgICAKKyAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2sp
OyAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIg
dW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOyAgICAKIH0KIAogYm9vbCBXZWJU
aHJlYWRJc0xvY2tlZCh2b2lkKQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIHdlYlRocmVhZExvY2tDb3VudDsKLSAgICBlbHNlIGlmIChwdGhyZWFkX21h
aW5fbnAoKSkKKworICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgcmV0dXJuIG1h
aW5UaHJlYWRMb2NrQ291bnQ7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gb3RoZXJUaHJlYWRM
b2NrQ291bnQ7CisKKyAgICByZXR1cm4gb3RoZXJUaHJlYWRMb2NrQ291bnQ7CiB9CiAKIGJvb2wg
V2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKHZvaWQpCkBAIC05NTUsNyArOTE5LDcgQEAgdm9p
ZCBXZWJUaHJlYWRMb2NrUG9wTW9kYWwodm9pZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsKLSAgICBBU1NFUlQoc01haW5UaHJlYWRNb2Rh
bENvdW50ICE9IDApOworICAgIEFTU0VSVChzTWFpblRocmVhZE1vZGFsQ291bnQpOwogICAgIC0t
c01haW5UaHJlYWRNb2RhbENvdW50OwogfQogCkBAIC05NzksNyArOTQzLDcgQEAgTlNSdW5Mb29w
KiBXZWJUaHJlYWROU1J1bkxvb3Aodm9pZCkKICAgICByZXR1cm4gW05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF07CiB9CiAKLVdlYlRocmVhZENvbnRleHQgKldlYlRocmVhZEN1cnJlbnRDb250ZXh0
KHZvaWQpCitXZWJUaHJlYWRDb250ZXh0KiBXZWJUaHJlYWRDdXJyZW50Q29udGV4dCh2b2lkKQog
ewogICAgIHJldHVybiBDdXJyZW50VGhyZWFkQ29udGV4dCgpOwogfQpAQCAtOTg4LDggKzk1Miw4
IEBAIHZvaWQgV2ViVGhyZWFkRW5hYmxlKHZvaWQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJQcm9jZXNzKCksICJUaGUg
V2ViUHJvY2VzcyBzaG91bGQgbmV2ZXIgcnVuIGEgV2ViIFRocmVhZCIpOwogCi0gICAgc3RhdGlj
IHB0aHJlYWRfb25jZV90IGluaXRDb250cm9sID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0gICAgcHRo
cmVhZF9vbmNlKCZpbml0Q29udHJvbCwgU3RhcnRXZWJUaHJlYWQpOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBmbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFN0YXJ0V2ViVGhyZWFk
KTsKIH0KIAogYm9vbCBXZWJUaHJlYWRJc0VuYWJsZWQodm9pZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328338</attachid>
            <date>2017-12-04 03:28:35 -0800</date>
            <delta_ts>2017-12-04 03:39:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180344-20171204202834.patch</filename>
            <type>text/plain</type>
            <size>31277</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2NjYyOGNhMGNkYjQy
NGYwN2NhYzcxOTBkYzMzYTY2YmU5OTQ1ZC4uMjc3NjA2Y2I4OGEwYTUyZTE5ZGZkMmQ2Njc3Yzcy
M2YyNGEyZTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTEyLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBX
ZWJUaHJlYWQgY29kZSBmb3IgZnVydGhlciByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0b3VjaGluZyBUaHJlYWQgYW5kIGl0
cyBpbml0aWFsaXphdGlvbiBjb21wb25lbnQsIHdlIG5lZWQgdG8gdG91Y2gKKyAgICAgICAgd2Vi
IHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIHRvby4gSG93ZXZlciwgc2luY2Ugd2ViIHRocmVh
ZCBjb2RlIGlzIG9sZCwKKyAgICAgICAgaXQncyBzdHlsZSBpcyBub3QgZm9sbG93aW5nIHRvIFdl
YktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpcnN0
IG1vZGVybml6ZXMgV2ViVGhyZWFkIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgMS4gYFR5cGUqYCBpbnN0ZWFkIG9mIGBUeXBlICpgLgorICAgICAgICAyLiBVc2Ugc3Rk
OjpjYWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2UuCisgICAgICAgIDMuIFVzZSBzdGF0
aWNfY2FzdCBpbnN0ZWFkIG9mIEMtY2FzdC4KKyAgICAgICAgNC4gVXNlIG51bGxwdHIgaW5zdGVh
ZCBvZiBOVUxMLgorICAgICAgICA1LiBVc2UgYHJldGAgb3IgYCFyZXRgIGluc3RlYWQgb2YgYHJl
dCAhPSAwYCBvciBgcmV0ID09IDBgLgorICAgICAgICA2LiBEbyBub3QgdXNlICNwcmFnbWEgdW51
c2VkLgorICAgICAgICA3LiBpZi1lbHNlIHdpdGggb25lIHN0YXRlbWVudCBzaG91bGQgbm90IGhh
dmUgYnJhY2VzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGRvIG5vdCBjaGFuZ2UgcHRo
cmVhZF9jb25kaXRpb25fdCB0byBXVEY6OkNvbmRpdGlvbiBhbmQKKyAgICAgICAgcHRocmVhZF9t
dXRleF90IHRvIFdURjo6TG9jayBzaW5jZSB3ZWIgdGhyZWFkIGNvZGUgcmVxdWlyZXMgZXh0cmEg
Y2FyZSBhYm91dAorICAgICAgICB0aHJlYWRpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAg
ICAgICAoLVtOU09iamVjdCByZWxlYXNlT25NYWluVGhyZWFkXSk6CisgICAgICAgIChTZW5kTWVz
c2FnZSk6CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVs
ZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKToKKyAgICAgICAgKHVubG9ja1dlYkNvcmVSZWxl
YXNlTG9jayk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAg
ICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQ2Fs
bERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViVGhyZWFkTWFrZU5T
SW52b2NhdGlvbik6CisgICAgICAgIChNYWluUnVuTG9vcEF1dG9VbmxvY2spOgorICAgICAgICAo
X1dlYlRocmVhZEF1dG9Mb2NrKToKKyAgICAgICAgKFdlYlJ1bkxvb3BMb2NrKToKKyAgICAgICAg
KFdlYlJ1bkxvb3BVbmxvY2spOgorICAgICAgICAoTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCk6Cisg
ICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgor
ICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2Nr
KToKKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKToKKyAgICAgICAgKFdlYlRocmVhZFVubG9j
a0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToK
KyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAoV2ViVGhyZWFkSXNMb2NrZWQp
OgorICAgICAgICAoV2ViVGhyZWFkTG9ja1BvcE1vZGFsKToKKyAgICAgICAgKFdlYlRocmVhZEN1
cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYlRocmVhZEVuYWJsZSk6CisgICAgICAgIChGcmVl
VGhyZWFkQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0VGhyZWFkQ29udGV4dEtleSk6
IERlbGV0ZWQuCisKIDIwMTctMTItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vcmUgbGVha3MgaW4gVGV4dENvbWJp
bmVyR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1
ZS4uN2Q5NzI2MWZlZjVmMWQxNDRhNTFlMGNhN2IxNGNhODgyOTQ5Yzg3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzMsMTYg
KzczLDE1IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBOU09iamVjdChXZWJDb3JlVGhyZWFkQWRk
aXRpb25zKQogCiAtICh2b2lkKXJlbGVhc2VPbk1haW5UaHJlYWQgewotICAgIGlmIChbTlNUaHJl
YWQgaXNNYWluVGhyZWFkXSkgeworICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAg
ICAgICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9i
amVjdDpuaWwgd2FpdFVudGlsRG9uZTpOT107Ci0gICAgfQogfQogCiBAZW5kCiAKLXR5cGVkZWYg
dm9pZCAqTlNBdXRvcmVsZWFzZVBvb2xNYXJrOwordXNpbmcgTlNBdXRvcmVsZWFzZVBvb2xNYXJr
ID0gdm9pZCo7CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC05
Miw3ICs5MSw3IEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVh
c2VQb29sTWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRp
dGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9j
aywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOworc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlv
bkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBD
RkFic29sdXRlVGltZSBpbnRlcnZhbCk7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgd2ViTG9j
azsKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgYXV0b3JlbGVhc2VQb29sTWFyazsKQEAg
LTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlk
IG9iaik7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVsZWdhdGVMb2NrID0gUFRIUkVBRF9N
VVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCBkZWxlZ2F0ZUNvbmRpdGlv
biA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBOU0ludm9jYXRpb24gKmRlbGVn
YXRlSW52b2NhdGlvbjsKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2Ug
PSBOVUxMOworc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9P
TCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBC
T09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CkBAIC0xMzAsNyArMTI5LDcgQEAgc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwogc3RhdGlj
IFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBD
b25kaXRpb247CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICp3ZWJUaHJlYWRDb250ZXh0Owor
c3RhdGljIFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7CiBzdGF0aWMgcHRocmVh
ZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2Nr
Q291bnQ7CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CkBAIC0xNDMsMTcg
KzE0MiwxNiBAQCBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwo
aWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdl
YlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dp
dGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFi
bGVBcnJheSAqc0FzeW5jRGVsZWdhdGVzID0gbmlsOworc3RhdGljIE5TTXV0YWJsZUFycmF5KiBz
QXN5bmNEZWxlZ2F0ZXMgPSBuaWw7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAg
ICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKIH0KIAotc3RhdGljIHZv
aWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZURl
bGVnYXRlU291cmNlKHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKICAgICBBU1NF
UlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5H
CkBAIC0xNjMsMTYgKzE2MSwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2
b2lkICppbmZvKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7CiAgICAgICAgIFtkZWxl
Z2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAg
ICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIs
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0g
ICAgfQogI2VuZGlmCiAKICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwpAQCAt
MTgxLDYyICsxNzgsNjIgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAq
aW5mbykKICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7CiAKICAg
ICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRl
bGVnYXRlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogI2lmIExPR19N
QUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSA9IE5POwogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24q
IGludm9jYXRpb24pCiB7Ci0gICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAg
IEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211
dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVz
dWx0ID09IDAsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwor
ICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgU2VuZE1lc3NhZ2UoaW52
b2NhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZWdhdGVT
b3VyY2UpOworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9j
ayk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAotICAgICAgICBkZWxlZ2F0ZUludm9jYXRpb24g
PSBpbnZvY2F0aW9uOwotICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKKyAgICBkZWxlZ2F0
ZUludm9jYXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAj
aWYgTE9HX01FU1NBR0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRd
IGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJn
dW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICAgICAgTlNMb2coQCJub3RpZmlj
YXRpb24gc2VuZDogJUAiLCBhcmd1bWVudDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxl
Z2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoW1tkZWxlZ2F0
ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBj
bGFzc11dKSB7CisgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIE5TTG9nKEAi
bm90aWZpY2F0aW9uIHNlbmQ6ICVAIiwgYXJndW1lbnQwKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
TlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0
ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAg
ICBfV2ViVGhyZWFkVW5sb2NrKCk7Ci0KLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25h
bChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29w
R2V0TWFpbigpKTsKLQotICAgICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlv
biwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpICE9IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUlu
dm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJ
bmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKTsKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUg
PSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFm
dGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBt
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDRlJlbGVhc2UobW9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7
CisgICAgeworICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQorICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
KyAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOworCisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BH
ZXRNYWluKCkpOwogCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAw
LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAg
ICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICB3aGlsZSAoIWRlbGVnYXRl
SGFuZGxlZCkgeworICAgICAgICAgICAgaWYgKFdlYlRpbWVkQ29uZGl0aW9uTG9jaygmZGVsZWdh
dGVDb25kaXRpb24sICZkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgeworICAg
ICAgICAgICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlv
biBnZXRBcmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5T
U3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAK
KyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRN
b2RlKENGUnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVs
ZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFp
biBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3Jt
YXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kZSkKKyAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlv
bik7CisgICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2sp
OworCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgX1dlYlRyeVRocmVhZExv
Y2soZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMjg1LDMwICsyODIsMjggQEAgdm9pZCBXZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogI2VuZGlmICAgICAgICAKIAogICAgIGludCByZXN1
bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVh
c2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmIChXZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBO
VUxMKTsKKyAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2Fr
ZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwogCiAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXN1bHQgPT0gMCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dl
YkNvcmVSZWxlYXNlTG9jaygpCiB7CiAgICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2RlKQotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNlTG9jayBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRV9VTlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKQogewogICAgIGludCBsb2NrY29kZSA9IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxv
Y2tjb2RlKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVS
ZWxlYXNlTG9jayB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIGxvY2tjb2RlKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJl
bGVhc2VMb2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2MywzNCAr
MzU4LDMzIEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3Mg
Y2xzKQogICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhyZWxlYXNlTWV0aG9kLCBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChjbHMsIHdlYlRocmVhZExvY2tSZWxlYXNlU0VMKSk7CiB9
CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCBf
Y21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VM
KQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxl
ZCgpKQorICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKICAgICAgICAgW3NlbGYgX3dl
YmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9ja1dlYkNv
cmVSZWxlYXNlTG9jaygpOwotICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyB3ZSBjYW4KLSAgICAgICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJD
b3JlUmVsZWFzZUxvY2sgbm93LgotICAgICAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2Nr
KCk7Ci0gICAgICAgICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCi0gICAgICAgICAgICAg
ICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2Ug
cmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgICAgIC8vIHRocmVhZCBj
b3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKLSAg
ICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBpZiAo
W3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBy
ZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZl
bHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KKyAgICAgICAgdW5sb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAg
ICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgICAg
ICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyBhbm90aGVyCisgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVs
ZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgLy8gcmVsZWFzZSB0
byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uLgorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNl
T25XZWJUaHJlYWRdOworICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKICAgICB9
CiB9CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNl
bGYsIFNFTCBfY21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0lt
cGwoaWQgc2VsZiwgU0VMKQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKICAgICBsb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
IHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxl
YXNlV2l0aFdlYlRocmVhZExvY2tdOwpAQCAtMzk5LDMwICszOTMsMjcgQEAgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
dW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQgPT0gMCwgIlJlbGVhc2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVk
IHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAKLSAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3Rz
ID0gTlVMTDsKKyAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKICAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAg
b2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBXZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkpOworICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5
KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CiAgICAgICAgIENGQXJyYXlS
ZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICB9CiAKICAgICBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJSZWxlYXNlIHVubG9jayBmYWlsZWQg
d2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQs
ICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlm
ICghb2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBDRkFy
cmF5R2V0Q291bnQob2JqZWN0cyk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewotICAgICAgICBpZCBvYmogPSAoaWQpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChvYmplY3RzLCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChvYmplY3RzKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgYXV0byBvYmog
PSBDRkFycmF5R2V0VmFsdWVBdEluZGV4KG9iamVjdHMsIGkpOwogI2lmIExPR19SRUxFQVNFUwog
ICAgICAgICBOU0xvZyhAIlJlbGVhc2UgcmVjdiBbd2ViIHRocmVhZF0gOiAlQCIsIG9iaik7CiAj
ZW5kaWYKQEAgLTQzMiwxMyArNDIzLDEzIEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJl
bGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKICAgICBDRlJlbGVhc2Uob2JqZWN0cyk7CiB9CiAKLXZv
aWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikKK3ZvaWQg
V2ViVGhyZWFkQ2FsbERlbGVnYXRlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKIHsKICAgICAv
LyBOU0ludm9jYXRpb24gcmVsZWFzZWQgaW4gU2VuZE1lc3NhZ2UoKQogICAgIFNlbmREZWxlZ2F0
ZU1lc3NhZ2UoW2ludm9jYXRpb24gcmV0YWluXSk7CiB9CiAKLXZvaWQgV2ViVGhyZWFkUG9zdE5v
dGlmaWNhdGlvbihOU1N0cmluZyAqbmFtZSwgaWQgb2JqZWN0LCBpZCB1c2VySW5mbykKK3ZvaWQg
V2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyogbmFtZSwgaWQgb2JqZWN0LCBpZCB1
c2VySW5mbykKIHsKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6bmFtZSBv
YmplY3Q6b2JqZWN0IHVzZXJJbmZvOnVzZXJJbmZvXTsKQEAgLTQ0OSw3ICs0NDAsNyBAQCB2b2lk
IFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oTlNTdHJpbmcgKm5hbWUsIGlkIG9iamVjdCwgaWQg
dXNlckluZm8pCiAgICAgfQogfQogCi12b2lkIFdlYlRocmVhZENhbGxEZWxlZ2F0ZUFzeW5jKE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbikKK3ZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIEFTU0VSVChpbnZvY2F0aW9uKTsKICAg
ICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCkBAIC00NTksMTIgKzQ1MCwxMiBAQCB2b2lkIFdl
YlRocmVhZENhbGxEZWxlZ2F0ZUFzeW5jKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikKIH0KIAog
Ly8gTm90ZTogZGVzcGl0ZSB0aGUgbmFtZSwgcmV0dXJucyBhbiBhdXRvcmVsZWFzZWQgb2JqZWN0
LgotTlNJbnZvY2F0aW9uICpXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRhcmdldCwgU0VM
IHNlbGVjdG9yKQorTlNJbnZvY2F0aW9uKiBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRh
cmdldCwgU0VMIHNlbGVjdG9yKQogewotICAgIE5TTWV0aG9kU2lnbmF0dXJlICpzaWduYXR1cmUg
PSBbdGFyZ2V0IG1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOnNlbGVjdG9yXTsKKyAgICBOU01l
dGhvZFNpZ25hdHVyZSogc2lnbmF0dXJlID0gW3RhcmdldCBtZXRob2RTaWduYXR1cmVGb3JTZWxl
Y3RvcjpzZWxlY3Rvcl07CiAgICAgQVNTRVJUKHNpZ25hdHVyZSk7CiAgICAgaWYgKHNpZ25hdHVy
ZSkgewotICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGlu
dm9jYXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOnNpZ25hdHVyZV07CisgICAgICAgIE5TSW52b2Nh
dGlvbiogaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWdu
YXR1cmU6c2lnbmF0dXJlXTsKICAgICAgICAgW2ludm9jYXRpb24gc2V0U2VsZWN0b3I6c2VsZWN0
b3JdOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRUYXJnZXQ6dGFyZ2V0XTsKICAgICAgICAgW2lu
dm9jYXRpb24gcmV0YWluQXJndW1lbnRzXTsKQEAgLTQ3MywxNCArNDY0LDExIEBAIE5TSW52b2Nh
dGlvbiAqV2ViVGhyZWFkTWFrZU5TSW52b2NhdGlvbihpZCB0YXJnZXQsIFNFTCBzZWxlY3RvcikK
ICAgICByZXR1cm4gbmlsOwogfQogCi1zdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2so
Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5
LCB2b2lkICpjb250ZXh0KQorc3RhdGljIHZvaWQgTWFpblJ1bkxvb3BBdXRvVW5sb2NrKENGUnVu
TG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSwgdm9pZCopCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKG9ic2VydmVyKTsKLSAgICBVTlVTRURfUEFSQU0oYWN0aXZpdHkpOwotICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAot
ICAgIGlmIChzTWFpblRocmVhZE1vZGFsQ291bnQgIT0gMCkKKyAgICBpZiAoc01haW5UaHJlYWRN
b2RhbENvdW50KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQ0ZSdW5Mb29wUmVtb3ZlT2Jz
ZXJ2ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZl
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTQ5Miw3ICs0ODAsNyBAQCBzdGF0aWMgdm9p
ZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKIAotICAgIGlmIChtYWluVGhyZWFkTG9ja0NvdW50ID09IDApIHsKKyAgICBpZiAo
IW1haW5UaHJlYWRMb2NrQ291bnQpIHsKICAgICAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBtYWluUnVuTG9vcEF1dG9VbmxvY2tPYnNlcnZlciwga0NGUnVu
TG9vcENvbW1vbk1vZGVzKTsgICAgCiAgICAgICAgIF9XZWJUcnlUaHJlYWRMb2NrKGZhbHNlKTsK
ICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CkBAIC01MjMsMTAg
KzUxMSw4IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2tJbnRlcm5hbChBdXRvcmVsZWFz
ZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKICAgICBpc1dlYlRocmVhZExvY2tlZCA9IE5P
OwogfQogCi1zdGF0aWMgdm9pZCBXZWJSdW5Mb29wTG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBv
YnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0
aWMgdm9pZCBXZWJSdW5Mb29wTG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0
aXZpdHkgYWN0aXZpdHksIHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShvYnNlcnZlcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhY3Rpdml0eSwgYWN0aXZpdHkgPT0ga0NGUnVuTG9vcEFm
dGVyV2FpdGluZyB8fCBhY3Rpdml0eSA9PSBrQ0ZSdW5Mb29wQmVmb3JlVGltZXJzIHx8IGFjdGl2
aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVTb3VyY2VzKTsKIApAQCAtNTM3LDEwICs1MjMsOCBAQCBz
dGF0aWMgdm9pZCBXZWJSdW5Mb29wTG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwg
Q0ZSdW5Mb29wQWN0aXZpdHkgYWN0aQogICAgIFdlYlJ1bkxvb3BMb2NrSW50ZXJuYWwoUHVzaE9y
UG9wQXV0b3JlbGVhc2VQb29sKTsKIH0KIAotc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9jayhD
RlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0aXZpdHks
IHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5sb2NrKENGUnVuTG9vcE9i
c2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCopCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKG9ic2VydmVyKTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFjdGl2aXR5LCBh
Y3Rpdml0eSA9PSBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8fCBhY3Rpdml0eSA9PSBrQ0ZSdW5M
b29wRXhpdCk7CiAgICAgQVNTRVJUKCFtYWluVGhyZWFkTG9ja0NvdW50KTsKQEAgLTU1MCwyMiAr
NTM0LDE5IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IGFjCiAgICAgV2ViUnVuTG9vcFVubG9ja0lu
dGVybmFsKFB1c2hPclBvcEF1dG9yZWxlYXNlUG9vbCk7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5S
dW5Mb29wVW5sb2NrR3VhcmQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9v
cEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkICpjb250ZXh0KQorc3RhdGljIHZvaWQgTWFpblJ1bkxv
b3BVbmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0
aXZpdHkgYWN0aXZpdHksIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9ic2Vy
dmVyKTsKLSAgICBVTlVTRURfUEFSQU0oYWN0aXZpdHkpOwotICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAogICAgIC8vIFdlIHNo
b3VsZG4ndCBoYXZlIHRoZSB3ZWIgbG9jayBhdCB0aGlzIHBvaW50LiAgSG93ZXZlciwgTW9iaWxl
TWFpbCBzb21ldGltZXMKICAgICAvLyBnZXQgdG8gYSBzdGF0ZSB3aGVyZSB0aGUgbWFpbiB0aHJl
YWQgaGFzIHdlYiBsb2NrIGJ1dCBpdCBkaWRuJ3QgcmVsZWFzZSBpdCBvbiBsYXN0CiAgICAgLy8g
cnVubG9vcCBleGl0LCBhbmQgd2ViIHRocmVhZCBnZXRzIHN0dWNrIGF0IHdhaXRpbmcgZm9yIHRo
ZSBsb2NrLiBJZiB0aGlzIGhhcHBlbnMsCiAgICAgLy8gd2UgbmVlZCB0byBoZWxwIHJlbGVhc2Ug
dGhlIGxvY2suICBTZWUgPHJkYXI6Ly9wcm9ibGVtLzgwMDUxOTI+LgotICAgIGlmIChtYWluVGhy
ZWFkTG9ja0NvdW50ICE9IDAgJiYgc01haW5UaHJlYWRNb2RhbENvdW50ID09IDApIHsKKyAgICBp
ZiAobWFpblRocmVhZExvY2tDb3VudCAmJiAhc01haW5UaHJlYWRNb2RhbENvdW50KSB7CiAgICAg
ICAgIE5TTG9nKEAiV0FSTklORzogTWFpbiB0aHJlYWQgZGlkbid0IHJlbGVhc2UgdGhlIGxvY2sg
YXQgbGFzdCBydW5sb29wIGV4aXQhIik7CiAKICAgICAgICAgTWFpblJ1bkxvb3BBdXRvVW5sb2Nr
KG9ic2VydmVyLCBhY3Rpdml0eSwgY29udGV4dCk7Ci0gICAgICAgIGlmIChtYWluVGhyZWFkTG9j
a0NvdW50ICE9IDApCisgICAgICAgIGlmIChtYWluVGhyZWFkTG9ja0NvdW50KQogICAgICAgICAg
ICAgbWFpblRocmVhZExvY2tDb3VudCA9IDA7CiAgICAgfQogfQpAQCAtNjEyLDQxICs1OTMsMjkg
QEAgdm9pZCBXZWJSdW5Mb29wRGlzYWJsZU5lc3RlZCgpCiAgICAgaXNOZXN0ZWRXZWJUaHJlYWRS
dW5Mb29wID0gTk87CiB9CiAKLXN0YXRpYyB2b2lkIEZyZWVUaHJlYWRDb250ZXh0KHZvaWQgKnRo
cmVhZENvbnRleHQpCitzdGF0aWMgV2ViVGhyZWFkQ29udGV4dCogQ3VycmVudFRocmVhZENvbnRl
eHQodm9pZCkKIHsKLSAgICBpZiAodGhyZWFkQ29udGV4dCAhPSBOVUxMKQotICAgICAgIGZyZWUo
dGhyZWFkQ29udGV4dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIEluaXRUaHJlYWRDb250ZXh0S2V5KCkK
LXsKLSAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9jcmVhdGUoJnRocmVhZENvbnRleHRLZXks
IEZyZWVUaHJlYWRDb250ZXh0KTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIENSQVNIKCk7Ci19
Ci0KLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICpDdXJyZW50VGhyZWFkQ29udGV4dCh2b2lkKQot
ewotICAgIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0Q29udHJvbCA9IFBUSFJFQURfT05DRV9J
TklUOyAKLSAgICBwdGhyZWFkX29uY2UoJmluaXRDb250cm9sLCBJbml0VGhyZWFkQ29udGV4dEtl
eSk7ICAgIAorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKGZsYWcsIFtdIHsKKyAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZ0
aHJlYWRDb250ZXh0S2V5LCBbXSAodm9pZCogdGhyZWFkQ29udGV4dCkgeworICAgICAgICAgICAg
aWYgKHRocmVhZENvbnRleHQpCisgICAgICAgICAgICAgICAgZnJlZSh0aHJlYWRDb250ZXh0KTsK
KyAgICAgICAgfSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFlcnJvcik7CisgICAgfSk7CiAK
LSAgICBXZWJUaHJlYWRDb250ZXh0ICp0aHJlYWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRleHQq
KXB0aHJlYWRfZ2V0c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSk7Ci0gICAgaWYgKHRocmVhZENv
bnRleHQgPT0gTlVMTCkgewotICAgICAgICB0aHJlYWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRl
eHQgKiljYWxsb2Moc2l6ZW9mKFdlYlRocmVhZENvbnRleHQpLCAxKTsKKyAgICBXZWJUaHJlYWRD
b250ZXh0KiB0aHJlYWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRleHQqKXB0aHJlYWRfZ2V0c3Bl
Y2lmaWModGhyZWFkQ29udGV4dEtleSk7CisgICAgaWYgKCF0aHJlYWRDb250ZXh0KSB7CisgICAg
ICAgIHRocmVhZENvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJUaHJlYWRDb250ZXh0Kj4oY2FsbG9j
KHNpemVvZihXZWJUaHJlYWRDb250ZXh0KSwgMSkpOwogICAgICAgICBwdGhyZWFkX3NldHNwZWNp
ZmljKHRocmVhZENvbnRleHRLZXksIHRocmVhZENvbnRleHQpOwogICAgIH0gICAgICAgIAogICAg
IHJldHVybiB0aHJlYWRDb250ZXh0OwogfQogCi1zdGF0aWMKLSNpZm5kZWYgX19sbHZtX18KLU5P
X1JFVFVSTgotI2VuZGlmCi12b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQorc3RhdGljIHZv
aWQqIFJ1bldlYlRocmVhZCh2b2lkKikKIHsKICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6
OnNpbmdsZXRvbigpLnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogCi0gICAgVU5V
U0VEX1BBUkFNKGFyZyk7CiAgICAgLy8gV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpIG5lZWRz
IHRvIGJlIGNhbGxlZCBiZWZvcmUgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCkgc2luY2UgdGhl
CiAgICAgLy8gY29kZSBpbnZva2VkIGJ5IHRoZSBsYXR0ZXIgbmVlZHMgdG8ga25vdyBpZiBpdCdz
IHJ1bm5pbmcgb24gdGhlIFdlYlRocmVhZC4gU2VlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg1
MDI0ODc+LgpAQCAtNjY1LDE5ICs2MzQsMTkgQEAgdm9pZCAqUnVuV2ViVGhyZWFkKHZvaWQgKmFy
ZykKICAgICB3ZWJUaHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogICAgIHdl
YlRocmVhZE5TUnVuTG9vcCA9IFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSByZXRhaW5dOwog
Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IENG
UnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnN8a0NGUnVu
TG9vcEJlZm9yZVNvdXJjZXN8a0NGUnVuTG9vcEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5M
b29wTG9jaywgTlVMTCk7CisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9vcExvY2tP
YnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BC
ZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldh
aXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpOwogICAgIENGUnVuTG9vcEFk
ZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYsIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgQ0ZSZWxlYXNlKHdlYlJ1bkxvb3BMb2NrT2JzZXJ2
ZXJSZWYpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgpOwogCiAgICAgLy8gV2Ug
bXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3ZWIgdGhyZWFkLiBDQSBj
b21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBudW1iZXIgdGhhbiB0aGF0
IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9vcFVu
bG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVMTCwga0NGUnVuTG9v
cEJlZm9yZVdhaXRpbmd8a0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVuTG9vcFVu
bG9jaywgTlVMTCk7ICAgIAorICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BVbmxv
Y2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxv
b3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVuTG9v
cFVubG9jaywgbnVsbHB0cik7ICAgIAogICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVh
ZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsKICAgICBDRlJlbGVhc2Uod2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmKTsgICAgCiAK
LSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0gezAsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2V9OwotICAgIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1bkxv
b3BTb3VyY2VDcmVhdGUoTlVMTCwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7CisgICAgQ0ZS
dW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKKyAgICBXZWJUaHJlYWRSZWxlYXNl
U291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNvdXJj
ZUNvbnRleHQpOwogICAgIENGUnVuTG9vcEFkZFNvdXJjZSh3ZWJUaHJlYWRSdW5Mb29wLCBXZWJU
aHJlYWRSZWxlYXNlU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgewpAQCAt
Njg4LDkgKzY1Nyw3IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcpCiAgICAgd2hpbGUg
KDEpCiAgICAgICAgIENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIERp
c3RhbnRGdXR1cmUsIHRydWUpOwogCi0jaWZkZWYgX19sbHZtX18KLSAgICByZXR1cm4gTlVMTDsK
LSNlbmRpZiAgCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyB2b2lkIFN0YXJ0V2Vi
VGhyZWFkKCkKQEAgLTcwNiw3ICs2NzMsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgp
CiAgICAgLy8gSW5pdGlhbGl6ZSBUaHJlYWRHbG9iYWxEYXRhIG9uIHRoZSBtYWluIFVJIHRocmVh
ZCBzbyB0aGF0IHRoZSBXZWJDb3JlIHRocmVhZAogICAgIC8vIGNhbiBsYXRlciBzZXQgaXQncyB0
aHJlYWQtc3BlY2lmaWMgZGF0YSB0byBwb2ludCB0byB0aGUgc2FtZSBvYmplY3RzLgogICAgIFdl
YkNvcmU6OlRocmVhZEdsb2JhbERhdGEmIHVudXNlZCA9IFdlYkNvcmU6OnRocmVhZEdsb2JhbERh
dGEoKTsKLSAgICAodm9pZCl1bnVzZWQ7CisgICAgVU5VU0VEX1BBUkFNKHVudXNlZCk7CiAKICAg
ICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtNzI3LDggKzY5NCw4IEBA
IHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0
cm95KCZtdXRleF9hdHRyKTsKIAogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpOwotICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VD
b250ZXh0ID0gezAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIEhhbmRsZURlbGVnYXRlU291cmNlfTsKLSAgICBkZWxlZ2F0ZVNvdXJjZSA9IENGUnVuTG9v
cFNvdXJjZUNyZWF0ZShOVUxMLCAwLCAmZGVsZWdhdGVTb3VyY2VDb250ZXh0KTsKKyAgICBDRlJ1
bkxvb3BTb3VyY2VDb250ZXh0IGRlbGVnYXRlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZX07CisgICAgZGVsZWdhdGVTb3VyY2UgPSBDRlJ1bkxv
b3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMCwgJmRlbGVnYXRlU291cmNlQ29udGV4dCk7CiAKICAg
ICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGRlbGVnYXRlIGNhbGxiYWNrcyB3aGlsZSBzY3JvbGxpbmcs
IGJ1dCB0aGVyZSBtaWdodCBiZQogICAgIC8vIG9uZSBvdXRzdGFuZGluZyB3aGVuIHdlIHN0YXJ0
LiAgQWRkIHRoZSBzb3VyY2UgZm9yIGFsbCBjb21tb24gcnVuIGxvb3AKQEAgLTczNyw3ICs3MDQs
NyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAKICAgICBzQXN5bmNEZWxlZ2F0ZXMg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKIAotICAgIG1haW5SdW5Mb29wQXV0b1Vu
bG9ja09ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVMTCwga0NGUnVuTG9vcEJl
Zm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1
dG9VbmxvY2ssIE5VTEwpOworICAgIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyID0gQ0ZS
dW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBr
Q0ZSdW5Mb29wRXhpdCwgWUVTLCAzMDAwMDAxLCBNYWluUnVuTG9vcEF1dG9VbmxvY2ssIG51bGxw
dHIpOwogCiAgICAgcHRocmVhZF9hdHRyX3QgdGF0dHI7CiAgICAgcHRocmVhZF9hdHRyX2luaXQo
JnRhdHRyKTsKQEAgLTc1OSw3ICs3MjYsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgp
CiAgICAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29ya2VycyAm
IHRoZSB3ZWIgdGhyZWFkLgogICAgICAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNpbmds
ZXRvbigpLnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKIAotICAgICAgICBwdGhyZWFkX2Ny
ZWF0ZSgmd2ViVGhyZWFkLCAmdGF0dHIsIFJ1bldlYlRocmVhZCwgTlVMTCk7CisgICAgICAgIHB0
aHJlYWRfY3JlYXRlKCZ3ZWJUaHJlYWQsICZ0YXR0ciwgUnVuV2ViVGhyZWFkLCBudWxscHRyKTsK
ICAgICAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnRhdHRyKTsKIAogICAgICAgICBzdGFydHVw
Q29uZGl0aW9uLndhaXQoc3RhcnR1cExvY2spOwpAQCAtNzY4LDcgKzczNSw3IEBAIHN0YXRpYyB2
b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgp
OwogfQogCi1zdGF0aWMgaW50IFdlYlRpbWVkQ29uZGl0aW9uTG9jayAocHRocmVhZF9jb25kX3Qg
KmNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90ICpsb2NrLCBDRkFic29sdXRlVGltZSBpbnRlcnZh
bCkKK3N0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrKHB0aHJlYWRfY29uZF90KiBjb25k
aXRpb24sIHB0aHJlYWRfbXV0ZXhfdCogbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpCiB7
CiAgICAgc3RydWN0IHRpbWVzcGVjIHRpbWU7CiAgICAgQ0ZBYnNvbHV0ZVRpbWUgYXQgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwpAQCAtNzk0LDE4ICs3NjEsMTYgQEAg
c3RhdGljIGJvb2wgX1dlYlRyeVRocmVhZExvY2soYm9vbCBzaG91bGRUcnkpCiAgICAgfQogICAg
ICAgICAKICAgICAgICAgICAgIAotICAgIGludCByZXN1bHQ7CiAgICAgYm9vbCBidXN5ID0gZmFs
c2U7CiAgICAgaWYgKHNob3VsZFRyeSkgewotICAgICAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4
X3RyeWxvY2soJndlYkxvY2spOwotICAgICAgICBpZiAocmVzdWx0ID09IEVCVVNZKSB7CisgICAg
ICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3RyeWxvY2soJndlYkxvY2spOworICAgICAg
ICBpZiAocmVzdWx0ID09IEVCVVNZKQogICAgICAgICAgICAgYnVzeSA9IHRydWU7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgInRy
eSB3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmd2ViTG9jayk7Ci0gICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJ3ZWIgbG9jayBmYWlsZWQgd2l0
aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghcmVzdWx0LCAidHJ5IHdlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBy
ZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4
X2xvY2soJndlYkxvY2spOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1
bHQsICFyZXN1bHQsICJ3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKCFidXN5KSB7CkBAIC04ODksMTYgKzg1NCwxNSBAQCB2b2lkIFdl
YlRocmVhZFVubG9ja0Zyb21BbnlUaHJlYWQoKQogICAgIEFTU0VSVChvdGhlclRocmVhZExvY2tD
b3VudCk7CiAgICAgb3RoZXJUaHJlYWRMb2NrQ291bnQtLTsKICAgICAKLSAgICBpbnQgcmVzdWx0
OwotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29k
ZTolZCIsIHJlc3VsdCk7CisgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3
ZWJMb2NrKTsgCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0LCAhcmVzdWx0
LCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIH0KIAogdm9pZCBX
ZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwoKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFkSXND
dXJyZW50KCkpOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BVbmxvY2tH
dWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVMTCwga0NGUnVuTG9vcEVu
dHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIE5VTEwpOworICAgIENGUnVuTG9v
cE9ic2VydmVyUmVmIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZlciA9IENGUnVuTG9vcE9i
c2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRyeSwgWUVTLCAwLCBNYWluUnVuTG9v
cFVubG9ja0d1YXJkLCBudWxscHRyKTsKICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxv
b3BHZXRNYWluKCksIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZlciwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKICAgICBDRlJlbGVhc2UobWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVy
KTsKIH0KQEAgLTkxMywyNiArODc3LDI2IEBAIHZvaWQgX1dlYlRocmVhZFVubG9jayh2b2lkKQog
I2VuZGlmCiAgICAgCiAgICAgaWYgKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBB
U1NFUlQobWFpblRocmVhZExvY2tDb3VudCAhPSAwKTsKKyAgICAgICAgQVNTRVJUKG1haW5UaHJl
YWRMb2NrQ291bnQpOwogICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50LS07CiAgICAgfSBlbHNl
IHsgICAgCiAgICAgICAgIHdlYlRocmVhZExvY2tDb3VudC0tOwogICAgICAgICB3ZWJUaHJlYWRT
aG91bGRZaWVsZCA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpbnQgcmVzdWx0OwotICAgIHJl
c3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCi0gICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJl
c3VsdCk7ICAgIAorICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2ViTG9j
ayk7IAorICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCwgIndl
YiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7ICAgIAogfQogCiBib29sIFdl
YlRocmVhZElzTG9ja2VkKHZvaWQpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQog
ICAgICAgICByZXR1cm4gd2ViVGhyZWFkTG9ja0NvdW50OwotICAgIGVsc2UgaWYgKHB0aHJlYWRf
bWFpbl9ucCgpKQorCisgICAgaWYgKHB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICByZXR1cm4g
bWFpblRocmVhZExvY2tDb3VudDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBvdGhlclRocmVh
ZExvY2tDb3VudDsKKworICAgIHJldHVybiBvdGhlclRocmVhZExvY2tDb3VudDsKIH0KIAogYm9v
bCBXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQodm9pZCkKQEAgLTk1NSw3ICs5MTksNyBAQCB2
b2lkIFdlYlRocmVhZExvY2tQb3BNb2RhbCh2b2lkKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwotICAgIEFTU0VSVChzTWFpblRocmVhZE1v
ZGFsQ291bnQgIT0gMCk7CisgICAgQVNTRVJUKHNNYWluVGhyZWFkTW9kYWxDb3VudCk7CiAgICAg
LS1zTWFpblRocmVhZE1vZGFsQ291bnQ7CiB9CiAKQEAgLTk3OSw3ICs5NDMsNyBAQCBOU1J1bkxv
b3AqIFdlYlRocmVhZE5TUnVuTG9vcCh2b2lkKQogICAgIHJldHVybiBbTlNSdW5Mb29wIGN1cnJl
bnRSdW5Mb29wXTsKIH0KIAotV2ViVGhyZWFkQ29udGV4dCAqV2ViVGhyZWFkQ3VycmVudENvbnRl
eHQodm9pZCkKK1dlYlRocmVhZENvbnRleHQqIFdlYlRocmVhZEN1cnJlbnRDb250ZXh0KHZvaWQp
CiB7CiAgICAgcmV0dXJuIEN1cnJlbnRUaHJlYWRDb250ZXh0KCk7CiB9CkBAIC05ODgsOCArOTUy
LDggQEAgdm9pZCBXZWJUaHJlYWRFbmFibGUodm9pZCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYlByb2Nlc3MoKSwgIlRo
ZSBXZWJQcm9jZXNzIHNob3VsZCBuZXZlciBydW4gYSBXZWIgVGhyZWFkIik7CiAKLSAgICBzdGF0
aWMgcHRocmVhZF9vbmNlX3QgaW5pdENvbnRyb2wgPSBQVEhSRUFEX09OQ0VfSU5JVDsKLSAgICBw
dGhyZWFkX29uY2UoJmluaXRDb250cm9sLCBTdGFydFdlYlRocmVhZCk7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgU3RhcnRXZWJUaHJl
YWQpOwogfQogCiBib29sIFdlYlRocmVhZElzRW5hYmxlZCh2b2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328339</attachid>
            <date>2017-12-04 03:39:43 -0800</date>
            <delta_ts>2017-12-04 08:30:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180344-20171204203941.patch</filename>
            <type>text/plain</type>
            <size>31291</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2NjYyOGNhMGNkYjQy
NGYwN2NhYzcxOTBkYzMzYTY2YmU5OTQ1ZC4uMjc3NjA2Y2I4OGEwYTUyZTE5ZGZkMmQ2Njc3Yzcy
M2YyNGEyZTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTEyLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBX
ZWJUaHJlYWQgY29kZSBmb3IgZnVydGhlciByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0b3VjaGluZyBUaHJlYWQgYW5kIGl0
cyBpbml0aWFsaXphdGlvbiBjb21wb25lbnQsIHdlIG5lZWQgdG8gdG91Y2gKKyAgICAgICAgd2Vi
IHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIHRvby4gSG93ZXZlciwgc2luY2Ugd2ViIHRocmVh
ZCBjb2RlIGlzIG9sZCwKKyAgICAgICAgaXQncyBzdHlsZSBpcyBub3QgZm9sbG93aW5nIHRvIFdl
YktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpcnN0
IG1vZGVybml6ZXMgV2ViVGhyZWFkIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgMS4gYFR5cGUqYCBpbnN0ZWFkIG9mIGBUeXBlICpgLgorICAgICAgICAyLiBVc2Ugc3Rk
OjpjYWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2UuCisgICAgICAgIDMuIFVzZSBzdGF0
aWNfY2FzdCBpbnN0ZWFkIG9mIEMtY2FzdC4KKyAgICAgICAgNC4gVXNlIG51bGxwdHIgaW5zdGVh
ZCBvZiBOVUxMLgorICAgICAgICA1LiBVc2UgYHJldGAgb3IgYCFyZXRgIGluc3RlYWQgb2YgYHJl
dCAhPSAwYCBvciBgcmV0ID09IDBgLgorICAgICAgICA2LiBEbyBub3QgdXNlICNwcmFnbWEgdW51
c2VkLgorICAgICAgICA3LiBpZi1lbHNlIHdpdGggb25lIHN0YXRlbWVudCBzaG91bGQgbm90IGhh
dmUgYnJhY2VzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGRvIG5vdCBjaGFuZ2UgcHRo
cmVhZF9jb25kaXRpb25fdCB0byBXVEY6OkNvbmRpdGlvbiBhbmQKKyAgICAgICAgcHRocmVhZF9t
dXRleF90IHRvIFdURjo6TG9jayBzaW5jZSB3ZWIgdGhyZWFkIGNvZGUgcmVxdWlyZXMgZXh0cmEg
Y2FyZSBhYm91dAorICAgICAgICB0aHJlYWRpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAg
ICAgICAoLVtOU09iamVjdCByZWxlYXNlT25NYWluVGhyZWFkXSk6CisgICAgICAgIChTZW5kTWVz
c2FnZSk6CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVs
ZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKToKKyAgICAgICAgKHVubG9ja1dlYkNvcmVSZWxl
YXNlTG9jayk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAg
ICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQ2Fs
bERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViVGhyZWFkTWFrZU5T
SW52b2NhdGlvbik6CisgICAgICAgIChNYWluUnVuTG9vcEF1dG9VbmxvY2spOgorICAgICAgICAo
X1dlYlRocmVhZEF1dG9Mb2NrKToKKyAgICAgICAgKFdlYlJ1bkxvb3BMb2NrKToKKyAgICAgICAg
KFdlYlJ1bkxvb3BVbmxvY2spOgorICAgICAgICAoTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCk6Cisg
ICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgor
ICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2Nr
KToKKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKToKKyAgICAgICAgKFdlYlRocmVhZFVubG9j
a0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToK
KyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAoV2ViVGhyZWFkSXNMb2NrZWQp
OgorICAgICAgICAoV2ViVGhyZWFkTG9ja1BvcE1vZGFsKToKKyAgICAgICAgKFdlYlRocmVhZEN1
cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYlRocmVhZEVuYWJsZSk6CisgICAgICAgIChGcmVl
VGhyZWFkQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0VGhyZWFkQ29udGV4dEtleSk6
IERlbGV0ZWQuCisKIDIwMTctMTItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vcmUgbGVha3MgaW4gVGV4dENvbWJp
bmVyR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1
ZS4uYjA4MzQzZjg5NzZjOTVmYjI5ZmRmNmRkNjY0MDVhMGM0ZWIwZjEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzMsMTYg
KzczLDE1IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBOU09iamVjdChXZWJDb3JlVGhyZWFkQWRk
aXRpb25zKQogCiAtICh2b2lkKXJlbGVhc2VPbk1haW5UaHJlYWQgewotICAgIGlmIChbTlNUaHJl
YWQgaXNNYWluVGhyZWFkXSkgeworICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAg
ICAgICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9i
amVjdDpuaWwgd2FpdFVudGlsRG9uZTpOT107Ci0gICAgfQogfQogCiBAZW5kCiAKLXR5cGVkZWYg
dm9pZCAqTlNBdXRvcmVsZWFzZVBvb2xNYXJrOwordXNpbmcgTlNBdXRvcmVsZWFzZVBvb2xNYXJr
ID0gdm9pZCo7CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC05
Miw3ICs5MSw3IEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVh
c2VQb29sTWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRp
dGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9j
aywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOworc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlv
bkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBD
RkFic29sdXRlVGltZSBpbnRlcnZhbCk7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgd2ViTG9j
azsKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgYXV0b3JlbGVhc2VQb29sTWFyazsKQEAg
LTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlk
IG9iaik7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVsZWdhdGVMb2NrID0gUFRIUkVBRF9N
VVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCBkZWxlZ2F0ZUNvbmRpdGlv
biA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBOU0ludm9jYXRpb24gKmRlbGVn
YXRlSW52b2NhdGlvbjsKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2Ug
PSBOVUxMOworc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9P
TCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBC
T09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CkBAIC0xMzAsNyArMTI5LDcgQEAgc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwogc3RhdGlj
IFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBD
b25kaXRpb247CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICp3ZWJUaHJlYWRDb250ZXh0Owor
c3RhdGljIFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7CiBzdGF0aWMgcHRocmVh
ZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2Nr
Q291bnQ7CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CkBAIC0xNDMsMTcg
KzE0MiwxNiBAQCBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwo
aWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdl
YlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dp
dGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFi
bGVBcnJheSAqc0FzeW5jRGVsZWdhdGVzID0gbmlsOworc3RhdGljIE5TTXV0YWJsZUFycmF5KiBz
QXN5bmNEZWxlZ2F0ZXMgPSBuaWw7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAg
ICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKIH0KIAotc3RhdGljIHZv
aWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZURl
bGVnYXRlU291cmNlKHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKICAgICBBU1NF
UlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5H
CkBAIC0xNjMsMTYgKzE2MSwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2
b2lkICppbmZvKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7CiAgICAgICAgIFtkZWxl
Z2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAg
ICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIs
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0g
ICAgfQogI2VuZGlmCiAKICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwpAQCAt
MTgxLDYyICsxNzgsNjIgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAq
aW5mbykKICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7CiAKICAg
ICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRl
bGVnYXRlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogI2lmIExPR19N
QUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSA9IE5POwogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24q
IGludm9jYXRpb24pCiB7Ci0gICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAg
IEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211
dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVz
dWx0ID09IDAsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwor
ICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgU2VuZE1lc3NhZ2UoaW52
b2NhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZWdhdGVT
b3VyY2UpOworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9j
ayk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAotICAgICAgICBkZWxlZ2F0ZUludm9jYXRpb24g
PSBpbnZvY2F0aW9uOwotICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKKyAgICBkZWxlZ2F0
ZUludm9jYXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAj
aWYgTE9HX01FU1NBR0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRd
IGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJn
dW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICAgICAgTlNMb2coQCJub3RpZmlj
YXRpb24gc2VuZDogJUAiLCBhcmd1bWVudDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxl
Z2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoW1tkZWxlZ2F0
ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBj
bGFzc11dKSB7CisgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIE5TTG9nKEAi
bm90aWZpY2F0aW9uIHNlbmQ6ICVAIiwgYXJndW1lbnQwKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
TlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0
ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAg
ICBfV2ViVGhyZWFkVW5sb2NrKCk7Ci0KLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25h
bChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29w
R2V0TWFpbigpKTsKLQotICAgICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlv
biwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpICE9IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUlu
dm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJ
bmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKTsKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUg
PSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFm
dGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBt
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDRlJlbGVhc2UobW9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7
CisgICAgeworICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQorICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
KyAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOworCisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BH
ZXRNYWluKCkpOwogCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAw
LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAg
ICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICB3aGlsZSAoIWRlbGVnYXRl
SGFuZGxlZCkgeworICAgICAgICAgICAgaWYgKFdlYlRpbWVkQ29uZGl0aW9uTG9jaygmZGVsZWdh
dGVDb25kaXRpb24sICZkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgeworICAg
ICAgICAgICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlv
biBnZXRBcmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5T
U3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAK
KyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRN
b2RlKENGUnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVs
ZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFp
biBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3Jt
YXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kZSkKKyAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlv
bik7CisgICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2sp
OworCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgX1dlYlRyeVRocmVhZExv
Y2soZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMjg1LDMwICsyODIsMjggQEAgdm9pZCBXZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogI2VuZGlmICAgICAgICAKIAogICAgIGludCByZXN1
bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVh
c2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmIChXZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBO
VUxMKTsKKyAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2Fr
ZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwogCiAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXN1bHQgPT0gMCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dl
YkNvcmVSZWxlYXNlTG9jaygpCiB7CiAgICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2RlKQotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNlTG9jayBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRV9VTlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKQogewogICAgIGludCBsb2NrY29kZSA9IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxv
Y2tjb2RlKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVS
ZWxlYXNlTG9jayB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIGxvY2tjb2RlKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJl
bGVhc2VMb2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2MywzNCAr
MzU4LDMzIEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3Mg
Y2xzKQogICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhyZWxlYXNlTWV0aG9kLCBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChjbHMsIHdlYlRocmVhZExvY2tSZWxlYXNlU0VMKSk7CiB9
CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCBf
Y21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VM
KQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxl
ZCgpKQorICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKICAgICAgICAgW3NlbGYgX3dl
YmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9ja1dlYkNv
cmVSZWxlYXNlTG9jaygpOwotICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyB3ZSBjYW4KLSAgICAgICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJD
b3JlUmVsZWFzZUxvY2sgbm93LgotICAgICAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2Nr
KCk7Ci0gICAgICAgICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCi0gICAgICAgICAgICAg
ICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2Ug
cmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgICAgIC8vIHRocmVhZCBj
b3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKLSAg
ICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBpZiAo
W3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBy
ZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZl
bHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KKyAgICAgICAgdW5sb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAg
ICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgICAg
ICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyBhbm90aGVyCisgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVs
ZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgLy8gcmVsZWFzZSB0
byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uLgorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNl
T25XZWJUaHJlYWRdOworICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKICAgICB9
CiB9CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNl
bGYsIFNFTCBfY21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0lt
cGwoaWQgc2VsZiwgU0VMKQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKICAgICBsb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
IHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxl
YXNlV2l0aFdlYlRocmVhZExvY2tdOwpAQCAtMzk5LDMwICszOTMsMjcgQEAgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
dW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQgPT0gMCwgIlJlbGVhc2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVk
IHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAKLSAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3Rz
ID0gTlVMTDsKKyAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKICAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAg
b2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBXZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkpOworICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5
KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CiAgICAgICAgIENGQXJyYXlS
ZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICB9CiAKICAgICBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJSZWxlYXNlIHVubG9jayBmYWlsZWQg
d2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQs
ICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlm
ICghb2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBDRkFy
cmF5R2V0Q291bnQob2JqZWN0cyk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgewotICAgICAgICBpZCBvYmogPSAoaWQpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChvYmplY3RzLCBpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChvYmplY3RzKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgaWQgb2JqID0g
Y29uc3RfY2FzdDxpZD4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChvYmplY3RzLCBpKSk7CiAjaWYg
TE9HX1JFTEVBU0VTCiAgICAgICAgIE5TTG9nKEAiUmVsZWFzZSByZWN2IFt3ZWIgdGhyZWFkXSA6
ICVAIiwgb2JqKTsKICNlbmRpZgpAQCAtNDMyLDEzICs0MjMsMTMgQEAgc3RhdGljIHZvaWQgSGFu
ZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSh2b2lkICppbmZvKQogICAgIENGUmVsZWFzZShvYmpl
Y3RzKTsKIH0KIAotdm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKQordm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uKiBpbnZvY2F0
aW9uKQogewogICAgIC8vIE5TSW52b2NhdGlvbiByZWxlYXNlZCBpbiBTZW5kTWVzc2FnZSgpCiAg
ICAgU2VuZERlbGVnYXRlTWVzc2FnZShbaW52b2NhdGlvbiByZXRhaW5dKTsKIH0KIAotdm9pZCBX
ZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nICpuYW1lLCBpZCBvYmplY3QsIGlkIHVz
ZXJJbmZvKQordm9pZCBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nKiBuYW1lLCBp
ZCBvYmplY3QsIGlkIHVzZXJJbmZvKQogewogICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0
aW9uTmFtZTpuYW1lIG9iamVjdDpvYmplY3QgdXNlckluZm86dXNlckluZm9dOwpAQCAtNDQ5LDcg
KzQ0MCw3IEBAIHZvaWQgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyAqbmFtZSwg
aWQgb2JqZWN0LCBpZCB1c2VySW5mbykKICAgICB9CiB9CiAKLXZvaWQgV2ViVGhyZWFkQ2FsbERl
bGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQordm9pZCBXZWJUaHJlYWRDYWxs
RGVsZWdhdGVBc3luYyhOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgQVNTRVJUKGlu
dm9jYXRpb24pOwogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKQEAgLTQ1OSwxMiArNDUw
LDEyIEBAIHZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKQogfQogCiAvLyBOb3RlOiBkZXNwaXRlIHRoZSBuYW1lLCByZXR1cm5zIGFuIGF1dG9y
ZWxlYXNlZCBvYmplY3QuCi1OU0ludm9jYXRpb24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24o
aWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpCitOU0ludm9jYXRpb24qIFdlYlRocmVhZE1ha2VOU0lu
dm9jYXRpb24oaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IpCiB7Ci0gICAgTlNNZXRob2RTaWduYXR1
cmUgKnNpZ25hdHVyZSA9IFt0YXJnZXQgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6c2VsZWN0
b3JdOworICAgIE5TTWV0aG9kU2lnbmF0dXJlKiBzaWduYXR1cmUgPSBbdGFyZ2V0IG1ldGhvZFNp
Z25hdHVyZUZvclNlbGVjdG9yOnNlbGVjdG9yXTsKICAgICBBU1NFUlQoc2lnbmF0dXJlKTsKICAg
ICBpZiAoc2lnbmF0dXJlKSB7Ci0gICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtO
U0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6c2lnbmF0dXJlXTsKKyAg
ICAgICAgTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9u
V2l0aE1ldGhvZFNpZ25hdHVyZTpzaWduYXR1cmVdOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRT
ZWxlY3RvcjpzZWxlY3Rvcl07CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDp0YXJnZXRd
OwogICAgICAgICBbaW52b2NhdGlvbiByZXRhaW5Bcmd1bWVudHNdOwpAQCAtNDczLDE0ICs0NjQs
MTEgQEAgTlNJbnZvY2F0aW9uICpXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRhcmdldCwg
U0VMIHNlbGVjdG9yKQogICAgIHJldHVybiBuaWw7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5SdW5M
b29wQXV0b1VubG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0
aXZpdHkgYWN0aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1
dG9VbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKikK
IHsKLSAgICBVTlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0
eSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEFTU0VSVCghV2ViVGhyZWFkSXND
dXJyZW50KCkpOwogCi0gICAgaWYgKHNNYWluVGhyZWFkTW9kYWxDb3VudCAhPSAwKQorICAgIGlm
IChzTWFpblRocmVhZE1vZGFsQ291bnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDRlJ1
bkxvb3BSZW1vdmVPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtNDkyLDcgKzQ4MCw3
IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKQogewogICAgIEFTU0VSVCgh
V2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQgPT0g
MCkgeworICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBDRlJ1bkxvb3BB
ZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09i
c2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAgICAKICAgICAgICAgX1dlYlRyeVRocmVh
ZExvY2soZmFsc2UpOwogICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigp
KTsKQEAgLTUyMywxMCArNTExLDggQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9ja0ludGVy
bmFsKEF1dG9yZWxlYXNlUG9vbE9wZXJhdGlvbiBwb29sT3BlcmF0aW9uKQogICAgIGlzV2ViVGhy
ZWFkTG9ja2VkID0gTk87CiB9CiAKLXN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9v
cE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCAq
Y29udGV4dCkKK3N0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVm
LCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KG9ic2VydmVyKTsKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgQVNTRVJUKFdlYlRo
cmVhZElzQ3VycmVudCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFjdGl2aXR5LCBhY3Rpdml0eSA9
PSBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nIHx8IGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVU
aW1lcnMgfHwgYWN0aXZpdHkgPT0ga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMpOwogCkBAIC01Mzcs
MTAgKzUyMyw4IEBAIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVy
UmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3RpCiAgICAgV2ViUnVuTG9vcExvY2tJ
bnRlcm5hbChQdXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wpOwogfQogCi1zdGF0aWMgdm9pZCBXZWJS
dW5Mb29wVW5sb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rp
dml0eSBhY3Rpdml0eSwgdm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxv
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lk
KikKIHsKLSAgICBVTlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoYWN0aXZpdHksIGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHx8IGFjdGl2
aXR5ID09IGtDRlJ1bkxvb3BFeGl0KTsKICAgICBBU1NFUlQoIW1haW5UaHJlYWRMb2NrQ291bnQp
OwpAQCAtNTUwLDIyICs1MzQsMTkgQEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9jayhDRlJ1
bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWMKICAgICBXZWJS
dW5Mb29wVW5sb2NrSW50ZXJuYWwoUHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sKTsKIH0KIAotc3Rh
dGljIHZvaWQgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNl
cnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0aWMg
dm9pZCBNYWluUnVuTG9vcFVubG9ja0d1YXJkKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVy
LCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBVTlVT
RURfUEFSQU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0eSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwog
CiAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgdGhlIHdlYiBsb2NrIGF0IHRoaXMgcG9pbnQuICBI
b3dldmVyLCBNb2JpbGVNYWlsIHNvbWV0aW1lcwogICAgIC8vIGdldCB0byBhIHN0YXRlIHdoZXJl
IHRoZSBtYWluIHRocmVhZCBoYXMgd2ViIGxvY2sgYnV0IGl0IGRpZG4ndCByZWxlYXNlIGl0IG9u
IGxhc3QKICAgICAvLyBydW5sb29wIGV4aXQsIGFuZCB3ZWIgdGhyZWFkIGdldHMgc3R1Y2sgYXQg
d2FpdGluZyBmb3IgdGhlIGxvY2suIElmIHRoaXMgaGFwcGVucywKICAgICAvLyB3ZSBuZWVkIHRv
IGhlbHAgcmVsZWFzZSB0aGUgbG9jay4gIFNlZSA8cmRhcjovL3Byb2JsZW0vODAwNTE5Mj4uCi0g
ICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQgIT0gMCAmJiBzTWFpblRocmVhZE1vZGFsQ291bnQg
PT0gMCkgeworICAgIGlmIChtYWluVGhyZWFkTG9ja0NvdW50ICYmICFzTWFpblRocmVhZE1vZGFs
Q291bnQpIHsKICAgICAgICAgTlNMb2coQCJXQVJOSU5HOiBNYWluIHRocmVhZCBkaWRuJ3QgcmVs
ZWFzZSB0aGUgbG9jayBhdCBsYXN0IHJ1bmxvb3AgZXhpdCEiKTsKIAogICAgICAgICBNYWluUnVu
TG9vcEF1dG9VbmxvY2sob2JzZXJ2ZXIsIGFjdGl2aXR5LCBjb250ZXh0KTsKLSAgICAgICAgaWYg
KG1haW5UaHJlYWRMb2NrQ291bnQgIT0gMCkKKyAgICAgICAgaWYgKG1haW5UaHJlYWRMb2NrQ291
bnQpCiAgICAgICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50ID0gMDsKICAgICB9CiB9CkBAIC02
MTIsNDEgKzU5MywyOSBAQCB2b2lkIFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCkKICAgICBpc05l
c3RlZFdlYlRocmVhZFJ1bkxvb3AgPSBOTzsKIH0KIAotc3RhdGljIHZvaWQgRnJlZVRocmVhZENv
bnRleHQodm9pZCAqdGhyZWFkQ29udGV4dCkKK3N0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJy
ZW50VGhyZWFkQ29udGV4dCh2b2lkKQogewotICAgIGlmICh0aHJlYWRDb250ZXh0ICE9IE5VTEwp
Ci0gICAgICAgZnJlZSh0aHJlYWRDb250ZXh0KTsKLX0KLQotc3RhdGljIHZvaWQgSW5pdFRocmVh
ZENvbnRleHRLZXkoKQotewotICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdGhy
ZWFkQ29udGV4dEtleSwgRnJlZVRocmVhZENvbnRleHQpOwotICAgIGlmIChlcnJvcikKLSAgICAg
ICAgQ1JBU0goKTsKLX0KLQotc3RhdGljIFdlYlRocmVhZENvbnRleHQgKkN1cnJlbnRUaHJlYWRD
b250ZXh0KHZvaWQpCi17Ci0gICAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRDb250cm9sID0g
UFRIUkVBRF9PTkNFX0lOSVQ7IAotICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIEluaXRU
aHJlYWRDb250ZXh0S2V5KTsgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFk
X2tleV9jcmVhdGUoJnRocmVhZENvbnRleHRLZXksIFtdICh2b2lkKiB0aHJlYWRDb250ZXh0KSB7
CisgICAgICAgICAgICBpZiAodGhyZWFkQ29udGV4dCkKKyAgICAgICAgICAgICAgICBmcmVlKHRo
cmVhZENvbnRleHQpOworICAgICAgICB9KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVycm9y
KTsKKyAgICB9KTsKIAotICAgIFdlYlRocmVhZENvbnRleHQgKnRocmVhZENvbnRleHQgPSAoV2Vi
VGhyZWFkQ29udGV4dCopcHRocmVhZF9nZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsKLSAg
ICBpZiAodGhyZWFkQ29udGV4dCA9PSBOVUxMKSB7Ci0gICAgICAgIHRocmVhZENvbnRleHQgPSAo
V2ViVGhyZWFkQ29udGV4dCAqKWNhbGxvYyhzaXplb2YoV2ViVGhyZWFkQ29udGV4dCksIDEpOwor
ICAgIFdlYlRocmVhZENvbnRleHQqIHRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29udGV4dCop
cHRocmVhZF9nZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsKKyAgICBpZiAoIXRocmVhZENv
bnRleHQpIHsKKyAgICAgICAgdGhyZWFkQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYlRocmVhZENv
bnRleHQqPihjYWxsb2Moc2l6ZW9mKFdlYlRocmVhZENvbnRleHQpLCAxKSk7CiAgICAgICAgIHB0
aHJlYWRfc2V0c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSwgdGhyZWFkQ29udGV4dCk7CiAgICAg
fSAgICAgICAgCiAgICAgcmV0dXJuIHRocmVhZENvbnRleHQ7CiB9CiAKLXN0YXRpYwotI2lmbmRl
ZiBfX2xsdm1fXwotTk9fUkVUVVJOCi0jZW5kaWYKLXZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICph
cmcpCitzdGF0aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogewogICAgIEZsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudDo6c2luZ2xldG9uKCkucHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50
KCk7CiAKLSAgICBVTlVTRURfUEFSQU0oYXJnKTsKICAgICAvLyBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSBKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcoKSBzaW5jZSB0aGUKICAgICAvLyBjb2RlIGludm9rZWQgYnkgdGhlIGxhdHRlciBuZWVkcyB0
byBrbm93IGlmIGl0J3MgcnVubmluZyBvbiB0aGUgV2ViVGhyZWFkLiBTZWUKICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vODUwMjQ4Nz4uCkBAIC02NjUsMTkgKzYzNCwxOSBAQCB2b2lkICpSdW5XZWJU
aHJlYWQodm9pZCAqYXJnKQogICAgIHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCk7CiAgICAgd2ViVGhyZWFkTlNSdW5Mb29wID0gW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxv
b3BdIHJldGFpbl07CiAKLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoTlVMTCwga0NGUnVuTG9vcEJlZm9y
ZVRpbWVyc3xrQ0ZSdW5Mb29wQmVmb3JlU291cmNlc3xrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZ
RVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBOVUxMKTsKKyAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3
ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0
ciwga0NGUnVuTG9vcEJlZm9yZVRpbWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3VyY2VzIHwga0NG
UnVuTG9vcEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVsbHB0cik7CiAg
ICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcExvY2tP
YnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICBDRlJlbGVhc2Uod2ViUnVu
TG9vcExvY2tPYnNlcnZlclJlZik7CiAgICAgCiAgICAgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCk7
CiAKICAgICAvLyBXZSBtdXN0IGhhdmUgdGhlIGxvY2sgd2hlbiBDQSBwYWludHMgaW4gdGhlIHdl
YiB0aHJlYWQuIENBIGNvbW1pdHMgYXQgMjAwMDAwMCBzbyB3ZSB1c2UgbGFyZ2VyIG9yZGVyIG51
bWJlciB0aGFuIHRoYXQgdG8gZnJlZSB0aGUgbG9jay4KLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJl
ZiB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShO
VUxMLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZ3xrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAw
LCBXZWJSdW5Mb29wVW5sb2NrLCBOVUxMKTsgICAgCisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYg
d2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVs
bHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAw
MDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRyKTsgICAgCiAgICAgQ0ZSdW5Mb29wQWRkT2Jz
ZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwogICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2
ZXJSZWYpOyAgICAKIAotICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNv
bnRleHQgPSB7MCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZX07Ci0gICAgV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShOVUxMLCAtMSwgJlJlbGVhc2VTb3VyY2VDb250
ZXh0KTsKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0g
ezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OworICAgIFdl
YlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEs
ICZSZWxlYXNlU291cmNlQ29udGV4dCk7CiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRocmVh
ZFJ1bkxvb3AsIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CiAKICAgICB7CkBAIC02ODgsOSArNjU3LDcgQEAgdm9pZCAqUnVuV2ViVGhyZWFkKHZvaWQgKmFy
ZykKICAgICB3aGlsZSAoMSkKICAgICAgICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSwgRGlzdGFudEZ1dHVyZSwgdHJ1ZSk7CiAKLSNpZmRlZiBfX2xsdm1fXwotICAg
IHJldHVybiBOVUxMOwotI2VuZGlmICAKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGlj
IHZvaWQgU3RhcnRXZWJUaHJlYWQoKQpAQCAtNzA2LDcgKzY3Myw3IEBAIHN0YXRpYyB2b2lkIFN0
YXJ0V2ViVGhyZWFkKCkKICAgICAvLyBJbml0aWFsaXplIFRocmVhZEdsb2JhbERhdGEgb24gdGhl
IG1haW4gVUkgdGhyZWFkIHNvIHRoYXQgdGhlIFdlYkNvcmUgdGhyZWFkCiAgICAgLy8gY2FuIGxh
dGVyIHNldCBpdCdzIHRocmVhZC1zcGVjaWZpYyBkYXRhIHRvIHBvaW50IHRvIHRoZSBzYW1lIG9i
amVjdHMuCiAgICAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSYgdW51c2VkID0gV2ViQ29yZTo6
dGhyZWFkR2xvYmFsRGF0YSgpOwotICAgICh2b2lkKXVudXNlZDsKKyAgICBVTlVTRURfUEFSQU0o
dW51c2VkKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC03
MjcsOCArNjk0LDggQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIHB0aHJlYWRf
bXV0ZXhhdHRyX2Rlc3Ryb3koJm11dGV4X2F0dHIpOwogCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBk
ZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgSGFuZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291
cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKE5VTEwsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRl
eHQpOworICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VDb250ZXh0ID0g
ezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZURlbGVnYXRlU291cmNlfTsKKyAgICBkZWxlZ2F0ZVNv
dXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3VyY2VD
b250ZXh0KTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tzIHdo
aWxlIHNjcm9sbGluZywgYnV0IHRoZXJlIG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5kaW5n
IHdoZW4gd2Ugc3RhcnQuICBBZGQgdGhlIHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9vcApA
QCAtNzM3LDcgKzcwNCw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIAogICAgIHNB
c3luY0RlbGVnYXRlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwogCi0gICAgbWFp
blJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxM
LCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDMwMDAwMDEs
IE1haW5SdW5Mb29wQXV0b1VubG9jaywgTlVMTCk7CisgICAgbWFpblJ1bkxvb3BBdXRvVW5sb2Nr
T2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVm
b3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29wQXV0
b1VubG9jaywgbnVsbHB0cik7CiAKICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhy
ZWFkX2F0dHJfaW5pdCgmdGF0dHIpOwpAQCAtNzU5LDcgKzcyNiw3IEBAIHN0YXRpYyB2b2lkIFN0
YXJ0V2ViVGhyZWFkKCkKICAgICAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVu
diB0byB3b3JrZXJzICYgdGhlIHdlYiB0aHJlYWQuCiAgICAgICAgIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudDo6c2luZ2xldG9uKCkuc2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogCi0gICAg
ICAgIHB0aHJlYWRfY3JlYXRlKCZ3ZWJUaHJlYWQsICZ0YXR0ciwgUnVuV2ViVGhyZWFkLCBOVUxM
KTsKKyAgICAgICAgcHRocmVhZF9jcmVhdGUoJndlYlRocmVhZCwgJnRhdHRyLCBSdW5XZWJUaHJl
YWQsIG51bGxwdHIpOwogICAgICAgICBwdGhyZWFkX2F0dHJfZGVzdHJveSgmdGF0dHIpOwogCiAg
ICAgICAgIHN0YXJ0dXBDb25kaXRpb24ud2FpdChzdGFydHVwTG9jayk7CkBAIC03NjgsNyArNzM1
LDcgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIGluaXRpYWxpemVBcHBsaWNh
dGlvblVJVGhyZWFkKCk7CiB9CiAKLXN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrIChw
dGhyZWFkX2NvbmRfdCAqY29uZGl0aW9uLCBwdGhyZWFkX211dGV4X3QgKmxvY2ssIENGQWJzb2x1
dGVUaW1lIGludGVydmFsKQorc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2socHRocmVh
ZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFic29sdXRlVGlt
ZSBpbnRlcnZhbCkKIHsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKICAgICBDRkFic29sdXRl
VGltZSBhdCA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7CkBAIC03OTQs
MTggKzc2MSwxNiBAQCBzdGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRy
eSkKICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgCi0gICAgaW50IHJlc3VsdDsKICAgICBi
b29sIGJ1c3kgPSBmYWxzZTsKICAgICBpZiAoc2hvdWxkVHJ5KSB7Ci0gICAgICAgIHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2ViTG9jayk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0g
RUJVU1kpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2Vi
TG9jayk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gRUJVU1kpCiAgICAgICAgICAgICBidXN5ID0g
dHJ1ZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJl
c3VsdCA9PSAwLCAidHJ5IHdlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZ3
ZWJMb2NrKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJ0cnkgd2ViIGxvY2sgZmFpbGVkIHdp
dGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfbG9jaygmd2ViTG9jayk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0VfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCwgIndlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQi
LCByZXN1bHQpOwogICAgIH0KICAgICAKICAgICBpZiAoIWJ1c3kpIHsKQEAgLTg4OSwxNiArODU0
LDE1IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrRnJvbUFueVRocmVhZCgpCiAgICAgQVNTRVJUKG90
aGVyVGhyZWFkTG9ja0NvdW50KTsKICAgICBvdGhlclRocmVhZExvY2tDb3VudC0tOwogICAgIAot
ICAgIGludCByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxv
Y2spOyAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAid2ViIHVubG9jayBm
YWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF91bmxvY2soJndlYkxvY2spOyAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChy
ZXN1bHQsICFyZXN1bHQsICJ3ZWIgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OwogfQogCiB2b2lkIFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCgpCiB7CiAgICAgQVNTRVJU
KCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWlu
UnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxM
LCBrQ0ZSdW5Mb29wRW50cnksIFlFUywgMCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgTlVMTCk7
CisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVy
ID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEVudHJ5LCBZRVMs
IDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51bGxwdHIpOwogICAgIENGUnVuTG9vcEFkZE9i
c2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVy
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogICAgIENGUmVsZWFzZShtYWluUnVuTG9vcFVubG9j
a0d1YXJkT2JzZXJ2ZXIpOwogfQpAQCAtOTEzLDI2ICs4NzcsMjYgQEAgdm9pZCBfV2ViVGhyZWFk
VW5sb2NrKHZvaWQpCiAjZW5kaWYKICAgICAKICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgp
KSB7Ci0gICAgICAgIEFTU0VSVChtYWluVGhyZWFkTG9ja0NvdW50ICE9IDApOworICAgICAgICBB
U1NFUlQobWFpblRocmVhZExvY2tDb3VudCk7CiAgICAgICAgIG1haW5UaHJlYWRMb2NrQ291bnQt
LTsKICAgICB9IGVsc2UgeyAgICAKICAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50LS07CiAgICAg
ICAgIHdlYlRocmVhZFNob3VsZFlpZWxkID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGludCBy
ZXN1bHQ7Ci0gICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2spOyAKLSAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAid2ViIHVubG9jayBmYWlsZWQgd2l0
aCBjb2RlOiVkIiwgcmVzdWx0KTsgICAgCisgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZ3ZWJMb2NrKTsgCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0LCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsgICAg
CiB9CiAKIGJvb2wgV2ViVGhyZWFkSXNMb2NrZWQodm9pZCkKIHsKICAgICBpZiAoV2ViVGhyZWFk
SXNDdXJyZW50KCkpCiAgICAgICAgIHJldHVybiB3ZWJUaHJlYWRMb2NrQ291bnQ7Ci0gICAgZWxz
ZSBpZiAocHRocmVhZF9tYWluX25wKCkpCisKKyAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAg
ICAgICAgIHJldHVybiBtYWluVGhyZWFkTG9ja0NvdW50OwotICAgIGVsc2UKLSAgICAgICAgcmV0
dXJuIG90aGVyVGhyZWFkTG9ja0NvdW50OworCisgICAgcmV0dXJuIG90aGVyVGhyZWFkTG9ja0Nv
dW50OwogfQogCiBib29sIFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCh2b2lkKQpAQCAtOTU1
LDcgKzkxOSw3IEBAIHZvaWQgV2ViVGhyZWFkTG9ja1BvcE1vZGFsKHZvaWQpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7Ci0gICAgQVNTRVJU
KHNNYWluVGhyZWFkTW9kYWxDb3VudCAhPSAwKTsKKyAgICBBU1NFUlQoc01haW5UaHJlYWRNb2Rh
bENvdW50KTsKICAgICAtLXNNYWluVGhyZWFkTW9kYWxDb3VudDsKIH0KIApAQCAtOTc5LDcgKzk0
Myw3IEBAIE5TUnVuTG9vcCogV2ViVGhyZWFkTlNSdW5Mb29wKHZvaWQpCiAgICAgcmV0dXJuIFtO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwogfQogCi1XZWJUaHJlYWRDb250ZXh0ICpXZWJUaHJl
YWRDdXJyZW50Q29udGV4dCh2b2lkKQorV2ViVGhyZWFkQ29udGV4dCogV2ViVGhyZWFkQ3VycmVu
dENvbnRleHQodm9pZCkKIHsKICAgICByZXR1cm4gQ3VycmVudFRocmVhZENvbnRleHQoKTsKIH0K
QEAgLTk4OCw4ICs5NTIsOCBAQCB2b2lkIFdlYlRocmVhZEVuYWJsZSh2b2lkKQogewogICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2Vi
UHJvY2VzcygpLCAiVGhlIFdlYlByb2Nlc3Mgc2hvdWxkIG5ldmVyIHJ1biBhIFdlYiBUaHJlYWQi
KTsKIAotICAgIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0Q29udHJvbCA9IFBUSFJFQURfT05D
RV9JTklUOwotICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIFN0YXJ0V2ViVGhyZWFkKTsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShmbGFn
LCBTdGFydFdlYlRocmVhZCk7CiB9CiAKIGJvb2wgV2ViVGhyZWFkSXNFbmFibGVkKHZvaWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328348</attachid>
            <date>2017-12-04 08:30:36 -0800</date>
            <delta_ts>2017-12-05 12:26:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180344-20171205013035.patch</filename>
            <type>text/plain</type>
            <size>31213</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg2NjYyOGNhMGNkYjQy
NGYwN2NhYzcxOTBkYzMzYTY2YmU5OTQ1ZC4uMjc3NjA2Y2I4OGEwYTUyZTE5ZGZkMmQ2Njc3Yzcy
M2YyNGEyZTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTEyLTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBX
ZWJUaHJlYWQgY29kZSBmb3IgZnVydGhlciByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzQ0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0b3VjaGluZyBUaHJlYWQgYW5kIGl0
cyBpbml0aWFsaXphdGlvbiBjb21wb25lbnQsIHdlIG5lZWQgdG8gdG91Y2gKKyAgICAgICAgd2Vi
IHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIHRvby4gSG93ZXZlciwgc2luY2Ugd2ViIHRocmVh
ZCBjb2RlIGlzIG9sZCwKKyAgICAgICAgaXQncyBzdHlsZSBpcyBub3QgZm9sbG93aW5nIHRvIFdl
YktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGZpcnN0
IG1vZGVybml6ZXMgV2ViVGhyZWFkIGNvZGUgZm9yIGZ1cnRoZXIgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgMS4gYFR5cGUqYCBpbnN0ZWFkIG9mIGBUeXBlICpgLgorICAgICAgICAyLiBVc2Ugc3Rk
OjpjYWxsX29uY2UgaW5zdGVhZCBvZiBwdGhyZWFkX29uY2UuCisgICAgICAgIDMuIFVzZSBzdGF0
aWNfY2FzdCBpbnN0ZWFkIG9mIEMtY2FzdC4KKyAgICAgICAgNC4gVXNlIG51bGxwdHIgaW5zdGVh
ZCBvZiBOVUxMLgorICAgICAgICA1LiBVc2UgYHJldGAgb3IgYCFyZXRgIGluc3RlYWQgb2YgYHJl
dCAhPSAwYCBvciBgcmV0ID09IDBgLgorICAgICAgICA2LiBEbyBub3QgdXNlICNwcmFnbWEgdW51
c2VkLgorICAgICAgICA3LiBpZi1lbHNlIHdpdGggb25lIHN0YXRlbWVudCBzaG91bGQgbm90IGhh
dmUgYnJhY2VzLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGRvIG5vdCBjaGFuZ2UgcHRo
cmVhZF9jb25kaXRpb25fdCB0byBXVEY6OkNvbmRpdGlvbiBhbmQKKyAgICAgICAgcHRocmVhZF9t
dXRleF90IHRvIFdURjo6TG9jayBzaW5jZSB3ZWIgdGhyZWFkIGNvZGUgcmVxdWlyZXMgZXh0cmEg
Y2FyZSBhYm91dAorICAgICAgICB0aHJlYWRpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAg
ICAgICAoLVtOU09iamVjdCByZWxlYXNlT25NYWluVGhyZWFkXSk6CisgICAgICAgIChTZW5kTWVz
c2FnZSk6CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAgIChTZW5kRGVs
ZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKToKKyAgICAgICAgKHVubG9ja1dlYkNvcmVSZWxl
YXNlTG9jayk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAg
ICAgKEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQ2Fs
bERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMpOgorICAgICAgICAoV2ViVGhyZWFkTWFrZU5T
SW52b2NhdGlvbik6CisgICAgICAgIChNYWluUnVuTG9vcEF1dG9VbmxvY2spOgorICAgICAgICAo
X1dlYlRocmVhZEF1dG9Mb2NrKToKKyAgICAgICAgKFdlYlJ1bkxvb3BMb2NrKToKKyAgICAgICAg
KFdlYlJ1bkxvb3BVbmxvY2spOgorICAgICAgICAoTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCk6Cisg
ICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgor
ICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2Nr
KToKKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKToKKyAgICAgICAgKFdlYlRocmVhZFVubG9j
a0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToK
KyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAoV2ViVGhyZWFkSXNMb2NrZWQp
OgorICAgICAgICAoV2ViVGhyZWFkTG9ja1BvcE1vZGFsKToKKyAgICAgICAgKFdlYlRocmVhZEN1
cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYlRocmVhZEVuYWJsZSk6CisgICAgICAgIChGcmVl
VGhyZWFkQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0VGhyZWFkQ29udGV4dEtleSk6
IERlbGV0ZWQuCisKIDIwMTctMTItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vcmUgbGVha3MgaW4gVGV4dENvbWJp
bmVyR1N0cmVhbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1
ZS4uYWFhNzM3NzExMGE1ZmI3N2EyNDNlMGI4MDAwOWZhODdmYjU1OTQxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzMsMTYg
KzczLDE1IEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlvbiBOU09iamVjdChXZWJDb3JlVGhyZWFkQWRk
aXRpb25zKQogCiAtICh2b2lkKXJlbGVhc2VPbk1haW5UaHJlYWQgewotICAgIGlmIChbTlNUaHJl
YWQgaXNNYWluVGhyZWFkXSkgeworICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSkKICAg
ICAgICAgW3NlbGYgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlCiAgICAgICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IocmVsZWFzZSkgd2l0aE9i
amVjdDpuaWwgd2FpdFVudGlsRG9uZTpOT107Ci0gICAgfQogfQogCiBAZW5kCiAKLXR5cGVkZWYg
dm9pZCAqTlNBdXRvcmVsZWFzZVBvb2xNYXJrOwordXNpbmcgTlNBdXRvcmVsZWFzZVBvb2xNYXJr
ID0gdm9pZCo7CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC05
Miw3ICs5MSw3IEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVh
c2VQb29sTWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRp
dGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9j
aywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOworc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlv
bkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBD
RkFic29sdXRlVGltZSBpbnRlcnZhbCk7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgd2ViTG9j
azsKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgYXV0b3JlbGVhc2VQb29sTWFyazsKQEAg
LTExOCw4ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBNYWluVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlk
IG9iaik7CiAKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgZGVsZWdhdGVMb2NrID0gUFRIUkVBRF9N
VVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBwdGhyZWFkX2NvbmRfdCBkZWxlZ2F0ZUNvbmRpdGlv
biA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKLXN0YXRpYyBOU0ludm9jYXRpb24gKmRlbGVn
YXRlSW52b2NhdGlvbjsKLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2Ug
PSBOVUxMOworc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOworc3RhdGlj
IENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9P
TCBkZWxlZ2F0ZUhhbmRsZWQ7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyBC
T09MIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2U7CkBAIC0xMzAsNyArMTI5LDcgQEAgc3RhdGljIENG
UnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyOwogc3RhdGlj
IFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBD
b25kaXRpb247CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0ICp3ZWJUaHJlYWRDb250ZXh0Owor
c3RhdGljIFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7CiBzdGF0aWMgcHRocmVh
ZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2Nr
Q291bnQ7CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CkBAIC0xNDMsMTcg
KzE0MiwxNiBAQCBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwo
aWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdl
YlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dp
dGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiAKLXN0YXRpYyBOU011dGFi
bGVBcnJheSAqc0FzeW5jRGVsZWdhdGVzID0gbmlsOworc3RhdGljIE5TTXV0YWJsZUFycmF5KiBz
QXN5bmNEZWxlZ2F0ZXMgPSBuaWw7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBTZW5kTWVzc2FnZShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pCitzdGF0aWMgaW5saW5lIHZvaWQgU2VuZE1lc3NhZ2Uo
TlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIFtpbnZvY2F0aW9uIGludm9rZV07CiAg
ICAgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpbnZvY2F0aW9uKTsKIH0KIAotc3RhdGljIHZv
aWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZURl
bGVnYXRlU291cmNlKHZvaWQqKQogewotICAgIFVOVVNFRF9QQVJBTShpbmZvKTsKICAgICBBU1NF
UlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsKIAogI2lmIExPR19NQUlOX1RIUkVBRF9MT0NLSU5H
CkBAIC0xNjMsMTYgKzE2MSwxNSBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2
b2lkICppbmZvKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkgewogICAgICAgICBpZCBhcmd1bWVudDA7CiAgICAgICAgIFtkZWxl
Z2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwogICAgICAg
ICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIs
IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0g
ICAgfQogI2VuZGlmCiAKICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwpAQCAt
MTgxLDYyICsxNzgsNjIgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCAq
aW5mbykKICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7CiAKICAg
ICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRl
bGVnYXRlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogI2lmIExPR19N
QUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSA9IE5POwogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKQorc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24q
IGludm9jYXRpb24pCiB7Ci0gICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAg
IEFTU0VSVChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211
dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVz
dWx0ID09IDAsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwor
ICAgIGlmICghV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKKyAgICAgICAgU2VuZE1lc3NhZ2UoaW52
b2NhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZWdhdGVT
b3VyY2UpOworICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9j
ayk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAotICAgICAgICBkZWxlZ2F0ZUludm9jYXRpb24g
PSBpbnZvY2F0aW9uOwotICAgICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKKyAgICBkZWxlZ2F0
ZUludm9jYXRpb24gPSBpbnZvY2F0aW9uOworICAgIGRlbGVnYXRlSGFuZGxlZCA9IE5POwogCiAj
aWYgTE9HX01FU1NBR0VTCi0gICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRd
IGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJn
dW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICAgICAgTlNMb2coQCJub3RpZmlj
YXRpb24gc2VuZDogJUAiLCBhcmd1bWVudDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxl
Z2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoW1tkZWxlZ2F0
ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBj
bGFzc11dKSB7CisgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgW2RlbGVnYXRlSW52b2Nh
dGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07CisgICAgICAgIE5TTG9nKEAi
bm90aWZpY2F0aW9uIHNlbmQ6ICVAIiwgYXJndW1lbnQwKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
TlNMb2coQCJkZWxlZ2F0ZSBzZW5kOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0
ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgICAg
ICBfV2ViVGhyZWFkVW5sb2NrKCk7Ci0KLSAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25h
bChkZWxlZ2F0ZVNvdXJjZSk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29w
R2V0TWFpbigpKTsKLQotICAgICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlv
biwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpICE9IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWQgZGVsZWdhdGVJbmZvcm1hdGlvbjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmlj
YXRpb25DZW50ZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUlu
dm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJ
bmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2Vs
ZWN0b3JdKTsKLSAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUg
PSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFm
dGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZ
X0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBt
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDRlJlbGVhc2UobW9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7
CisgICAgeworICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQorICAgICAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsK
KyAgICAgICAgX1dlYlRocmVhZFVubG9jaygpOworCisgICAgICAgIENGUnVuTG9vcFNvdXJjZVNp
Z25hbChkZWxlZ2F0ZVNvdXJjZSk7CisgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BH
ZXRNYWluKCkpOwogCi0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAw
LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAg
ICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICB3aGlsZSAoIWRlbGVnYXRl
SGFuZGxlZCkgeworICAgICAgICAgICAgaWYgKFdlYlRpbWVkQ29uZGl0aW9uTG9jaygmZGVsZWdh
dGVDb25kaXRpb24sICZkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgeworICAg
ICAgICAgICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CisgICAgICAgICAgICAgICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlv
biBnZXRBcmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5T
U3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKTsKKyAgICAK
KyAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRN
b2RlKENGUnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVs
ZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWQgc2Vjb25kcy4gbWFp
biBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3Jt
YXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLCBtb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAo
bW9kZSkKKyAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgU2VuZE1lc3NhZ2UoaW52b2NhdGlv
bik7CisgICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2sp
OworCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgX1dlYlRyeVRocmVhZExv
Y2soZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMjg1LDMwICsyODIsMjggQEAgdm9pZCBXZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogI2VuZGlmICAgICAgICAKIAogICAgIGludCByZXN1
bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCByZXN1bHQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVh
c2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlmIChXZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkgPT0gbmlsKQotICAgICAgICBXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBO
VUxMKTsKKyAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2Fr
ZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwogCiAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShy
ZXN1bHQgPT0gMCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dl
YkNvcmVSZWxlYXNlTG9jaygpCiB7CiAgICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxvY2tjb2RlKQotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVSZWxlYXNlTG9jayBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRV9VTlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKQogewogICAgIGludCBsb2NrY29kZSA9IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotI3ByYWdtYSB1bnVzZWQgKGxv
Y2tjb2RlKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobG9ja2NvZGUgPT0gMCwgIldlYkNvcmVS
ZWxlYXNlTG9jayB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIGxvY2tjb2RlKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJl
bGVhc2VMb2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2MywzNCAr
MzU4LDMzIEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3Mg
Y2xzKQogICAgIG1ldGhvZF9leGNoYW5nZUltcGxlbWVudGF0aW9ucyhyZWxlYXNlTWV0aG9kLCBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChjbHMsIHdlYlRocmVhZExvY2tSZWxlYXNlU0VMKSk7CiB9
CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCBf
Y21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VM
KQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKLSAgICBpZiAoIVdlYlRocmVhZElzRW5hYmxl
ZCgpKQorICAgIGlmICghV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKICAgICAgICAgW3NlbGYgX3dl
YmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9ja1dlYkNv
cmVSZWxlYXNlTG9jaygpOwotICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyB3ZSBjYW4KLSAgICAgICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJD
b3JlUmVsZWFzZUxvY2sgbm93LgotICAgICAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2Nr
KCk7Ci0gICAgICAgICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCi0gICAgICAgICAgICAg
ICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2Ug
cmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgICAgIC8vIHRocmVhZCBj
b3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKLSAg
ICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBpZiAo
W3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBy
ZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZl
bHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KKyAgICAgICAgdW5sb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKICAg
ICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgICAg
ICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyBhbm90aGVyCisgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVs
ZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgLy8gcmVsZWFzZSB0
byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uLgorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNl
T25XZWJUaHJlYWRdOworICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKICAgICB9
CiB9CiAKLXZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNl
bGYsIFNFTCBfY21kKQordm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0lt
cGwoaWQgc2VsZiwgU0VMKQogewotICAgIFVOVVNFRF9QQVJBTShfY21kKTsKICAgICBsb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKCk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgp
IHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxl
YXNlV2l0aFdlYlRocmVhZExvY2tdOwpAQCAtMzk5LDI5ICszOTMsMjYgQEAgdm9pZCBXZWJDb3Jl
T2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAg
dW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2Uodm9pZCAqaW5mbykKK3N0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZm8pOwogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQgPT0gMCwgIlJlbGVhc2UgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVk
IHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAKLSAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3Rz
ID0gTlVMTDsKKyAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKICAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAg
b2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBXZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkpOworICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5
KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CiAgICAgICAgIENGQXJyYXlS
ZW1vdmVBbGxWYWx1ZXMoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKICAgICB9CiAKICAgICBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAsICJSZWxlYXNlIHVubG9jayBmYWlsZWQg
d2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQs
ICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKIAogICAgIGlm
ICghb2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBDRkFy
cmF5R2V0Q291bnQob2JqZWN0cyk7Ci0gICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KG9iamVjdHMpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZCBvYmogPSAo
aWQpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChvYmplY3RzLCBpKTsKICNpZiBMT0dfUkVMRUFTRVMK
ICAgICAgICAgTlNMb2coQCJSZWxlYXNlIHJlY3YgW3dlYiB0aHJlYWRdIDogJUAiLCBvYmopOwpA
QCAtNDMyLDEzICs0MjMsMTMgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZSh2b2lkICppbmZvKQogICAgIENGUmVsZWFzZShvYmplY3RzKTsKIH0KIAotdm9pZCBXZWJU
aHJlYWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQordm9pZCBXZWJUaHJl
YWRDYWxsRGVsZWdhdGUoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogewogICAgIC8vIE5TSW52
b2NhdGlvbiByZWxlYXNlZCBpbiBTZW5kTWVzc2FnZSgpCiAgICAgU2VuZERlbGVnYXRlTWVzc2Fn
ZShbaW52b2NhdGlvbiByZXRhaW5dKTsKIH0KIAotdm9pZCBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0
aW9uKE5TU3RyaW5nICpuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZvKQordm9pZCBXZWJUaHJl
YWRQb3N0Tm90aWZpY2F0aW9uKE5TU3RyaW5nKiBuYW1lLCBpZCBvYmplY3QsIGlkIHVzZXJJbmZv
KQogewogICAgIGlmIChwdGhyZWFkX21haW5fbnAoKSkKICAgICAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpuYW1lIG9iamVjdDpv
YmplY3QgdXNlckluZm86dXNlckluZm9dOwpAQCAtNDQ5LDcgKzQ0MCw3IEBAIHZvaWQgV2ViVGhy
ZWFkUG9zdE5vdGlmaWNhdGlvbihOU1N0cmluZyAqbmFtZSwgaWQgb2JqZWN0LCBpZCB1c2VySW5m
bykKICAgICB9CiB9CiAKLXZvaWQgV2ViVGhyZWFkQ2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0
aW9uICppbnZvY2F0aW9uKQordm9pZCBXZWJUaHJlYWRDYWxsRGVsZWdhdGVBc3luYyhOU0ludm9j
YXRpb24qIGludm9jYXRpb24pCiB7CiAgICAgQVNTRVJUKGludm9jYXRpb24pOwogICAgIGlmIChX
ZWJUaHJlYWRJc0N1cnJlbnQoKSkKQEAgLTQ1OSwxMiArNDUwLDEyIEBAIHZvaWQgV2ViVGhyZWFk
Q2FsbERlbGVnYXRlQXN5bmMoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKQogfQogCiAvLyBOb3Rl
OiBkZXNwaXRlIHRoZSBuYW1lLCByZXR1cm5zIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QuCi1OU0lu
dm9jYXRpb24gKldlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0LCBTRUwgc2VsZWN0
b3IpCitOU0ludm9jYXRpb24qIFdlYlRocmVhZE1ha2VOU0ludm9jYXRpb24oaWQgdGFyZ2V0LCBT
RUwgc2VsZWN0b3IpCiB7Ci0gICAgTlNNZXRob2RTaWduYXR1cmUgKnNpZ25hdHVyZSA9IFt0YXJn
ZXQgbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6c2VsZWN0b3JdOworICAgIE5TTWV0aG9kU2ln
bmF0dXJlKiBzaWduYXR1cmUgPSBbdGFyZ2V0IG1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOnNl
bGVjdG9yXTsKICAgICBBU1NFUlQoc2lnbmF0dXJlKTsKICAgICBpZiAoc2lnbmF0dXJlKSB7Ci0g
ICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlv
bldpdGhNZXRob2RTaWduYXR1cmU6c2lnbmF0dXJlXTsKKyAgICAgICAgTlNJbnZvY2F0aW9uKiBp
bnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0aE1ldGhvZFNpZ25hdHVyZTpz
aWduYXR1cmVdOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRTZWxlY3RvcjpzZWxlY3Rvcl07CiAg
ICAgICAgIFtpbnZvY2F0aW9uIHNldFRhcmdldDp0YXJnZXRdOwogICAgICAgICBbaW52b2NhdGlv
biByZXRhaW5Bcmd1bWVudHNdOwpAQCAtNDczLDE0ICs0NjQsMTEgQEAgTlNJbnZvY2F0aW9uICpX
ZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yKQogICAgIHJl
dHVybiBuaWw7CiB9CiAKLXN0YXRpYyB2b2lkIE1haW5SdW5Mb29wQXV0b1VubG9jayhDRlJ1bkxv
b3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWN0aXZpdHksIHZvaWQg
KmNvbnRleHQpCitzdGF0aWMgdm9pZCBNYWluUnVuTG9vcEF1dG9VbmxvY2soQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKikKIHsKLSAgICBVTlVTRURfUEFSQU0o
b2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0eSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOwogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgaWYg
KHNNYWluVGhyZWFkTW9kYWxDb3VudCAhPSAwKQorICAgIGlmIChzTWFpblRocmVhZE1vZGFsQ291
bnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDRlJ1bkxvb3BSZW1vdmVPYnNlcnZlcihD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtNDkyLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIF9XZWJU
aHJlYWRBdXRvTG9jayh2b2lkKQogewogICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwogCi0gICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQgPT0gMCkgeworICAgIGlmICghbWFpblRo
cmVhZExvY2tDb3VudCkgewogICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOyAgICAKICAgICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOwogICAgICAg
ICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKQEAgLTUyMywxMCArNTExLDgg
QEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9ja0ludGVybmFsKEF1dG9yZWxlYXNlUG9vbE9w
ZXJhdGlvbiBwb29sT3BlcmF0aW9uKQogICAgIGlzV2ViVGhyZWFkTG9ja2VkID0gTk87CiB9CiAK
LXN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVy
LCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCAqY29udGV4dCkKK3N0YXRpYyB2b2lk
IFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSBh
Y3Rpdml0eSwgdm9pZCopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9ic2VydmVyKTsKLSAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGFjdGl2aXR5LCBhY3Rpdml0eSA9PSBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0
aW5nIHx8IGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfHwgYWN0aXZpdHkgPT0g
a0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMpOwogCkBAIC01MzcsMTAgKzUyMyw4IEBAIHN0YXRpYyB2
b2lkIFdlYlJ1bkxvb3BMb2NrKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxv
b3BBY3Rpdml0eSBhY3RpCiAgICAgV2ViUnVuTG9vcExvY2tJbnRlcm5hbChQdXNoT3JQb3BBdXRv
cmVsZWFzZVBvb2wpOwogfQogCi1zdGF0aWMgdm9pZCBXZWJSdW5Mb29wVW5sb2NrKENGUnVuTG9v
cE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBhY3Rpdml0eSwgdm9pZCAq
Y29udGV4dCkKK3N0YXRpYyB2b2lkIFdlYlJ1bkxvb3BVbmxvY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJS
ZWYsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkKikKIHsKLSAgICBVTlVTRURfUEFS
QU0ob2JzZXJ2ZXIpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBBU1NFUlQoV2Vi
VGhyZWFkSXNDdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWN0aXZpdHksIGFjdGl2aXR5
ID09IGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHx8IGFjdGl2aXR5ID09IGtDRlJ1bkxvb3BFeGl0
KTsKICAgICBBU1NFUlQoIW1haW5UaHJlYWRMb2NrQ291bnQpOwpAQCAtNTUwLDIyICs1MzQsMTkg
QEAgc3RhdGljIHZvaWQgV2ViUnVuTG9vcFVubG9jayhDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNl
cnZlciwgQ0ZSdW5Mb29wQWN0aXZpdHkgYWMKICAgICBXZWJSdW5Mb29wVW5sb2NrSW50ZXJuYWwo
UHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sKTsKIH0KIAotc3RhdGljIHZvaWQgTWFpblJ1bkxvb3BV
bmxvY2tHdWFyZChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlciwgQ0ZSdW5Mb29wQWN0aXZp
dHkgYWN0aXZpdHksIHZvaWQgKmNvbnRleHQpCitzdGF0aWMgdm9pZCBNYWluUnVuTG9vcFVubG9j
a0d1YXJkKENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlJ1bkxvb3BBY3Rpdml0eSBh
Y3Rpdml0eSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0ob2JzZXJ2ZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShhY3Rpdml0eSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwog
ICAgIEFTU0VSVCghV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0
IGhhdmUgdGhlIHdlYiBsb2NrIGF0IHRoaXMgcG9pbnQuICBIb3dldmVyLCBNb2JpbGVNYWlsIHNv
bWV0aW1lcwogICAgIC8vIGdldCB0byBhIHN0YXRlIHdoZXJlIHRoZSBtYWluIHRocmVhZCBoYXMg
d2ViIGxvY2sgYnV0IGl0IGRpZG4ndCByZWxlYXNlIGl0IG9uIGxhc3QKICAgICAvLyBydW5sb29w
IGV4aXQsIGFuZCB3ZWIgdGhyZWFkIGdldHMgc3R1Y2sgYXQgd2FpdGluZyBmb3IgdGhlIGxvY2su
IElmIHRoaXMgaGFwcGVucywKICAgICAvLyB3ZSBuZWVkIHRvIGhlbHAgcmVsZWFzZSB0aGUgbG9j
ay4gIFNlZSA8cmRhcjovL3Byb2JsZW0vODAwNTE5Mj4uCi0gICAgaWYgKG1haW5UaHJlYWRMb2Nr
Q291bnQgIT0gMCAmJiBzTWFpblRocmVhZE1vZGFsQ291bnQgPT0gMCkgeworICAgIGlmIChtYWlu
VGhyZWFkTG9ja0NvdW50ICYmICFzTWFpblRocmVhZE1vZGFsQ291bnQpIHsKICAgICAgICAgTlNM
b2coQCJXQVJOSU5HOiBNYWluIHRocmVhZCBkaWRuJ3QgcmVsZWFzZSB0aGUgbG9jayBhdCBsYXN0
IHJ1bmxvb3AgZXhpdCEiKTsKIAogICAgICAgICBNYWluUnVuTG9vcEF1dG9VbmxvY2sob2JzZXJ2
ZXIsIGFjdGl2aXR5LCBjb250ZXh0KTsKLSAgICAgICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQg
IT0gMCkKKyAgICAgICAgaWYgKG1haW5UaHJlYWRMb2NrQ291bnQpCiAgICAgICAgICAgICBtYWlu
VGhyZWFkTG9ja0NvdW50ID0gMDsKICAgICB9CiB9CkBAIC02MTIsNDEgKzU5MywyOSBAQCB2b2lk
IFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCkKICAgICBpc05lc3RlZFdlYlRocmVhZFJ1bkxvb3Ag
PSBOTzsKIH0KIAotc3RhdGljIHZvaWQgRnJlZVRocmVhZENvbnRleHQodm9pZCAqdGhyZWFkQ29u
dGV4dCkKK3N0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJyZW50VGhyZWFkQ29udGV4dCh2b2lk
KQogewotICAgIGlmICh0aHJlYWRDb250ZXh0ICE9IE5VTEwpCi0gICAgICAgZnJlZSh0aHJlYWRD
b250ZXh0KTsKLX0KLQotc3RhdGljIHZvaWQgSW5pdFRocmVhZENvbnRleHRLZXkoKQotewotICAg
IGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdGhyZWFkQ29udGV4dEtleSwgRnJlZVRo
cmVhZENvbnRleHQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgQ1JBU0goKTsKLX0KLQotc3Rh
dGljIFdlYlRocmVhZENvbnRleHQgKkN1cnJlbnRUaHJlYWRDb250ZXh0KHZvaWQpCi17Ci0gICAg
c3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRDb250cm9sID0gUFRIUkVBRF9PTkNFX0lOSVQ7IAot
ICAgIHB0aHJlYWRfb25jZSgmaW5pdENvbnRyb2wsIEluaXRUaHJlYWRDb250ZXh0S2V5KTsgICAg
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxh
ZywgW10geworICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9jcmVhdGUoJnRocmVhZENv
bnRleHRLZXksIFtdICh2b2lkKiB0aHJlYWRDb250ZXh0KSB7CisgICAgICAgICAgICBpZiAodGhy
ZWFkQ29udGV4dCkKKyAgICAgICAgICAgICAgICBmcmVlKHRocmVhZENvbnRleHQpOworICAgICAg
ICB9KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVycm9yKTsKKyAgICB9KTsKIAotICAgIFdl
YlRocmVhZENvbnRleHQgKnRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29udGV4dCopcHRocmVh
ZF9nZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsKLSAgICBpZiAodGhyZWFkQ29udGV4dCA9
PSBOVUxMKSB7Ci0gICAgICAgIHRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29udGV4dCAqKWNh
bGxvYyhzaXplb2YoV2ViVGhyZWFkQ29udGV4dCksIDEpOworICAgIFdlYlRocmVhZENvbnRleHQq
IHRocmVhZENvbnRleHQgPSAoV2ViVGhyZWFkQ29udGV4dCopcHRocmVhZF9nZXRzcGVjaWZpYyh0
aHJlYWRDb250ZXh0S2V5KTsKKyAgICBpZiAoIXRocmVhZENvbnRleHQpIHsKKyAgICAgICAgdGhy
ZWFkQ29udGV4dCA9IHN0YXRpY19jYXN0PFdlYlRocmVhZENvbnRleHQqPihjYWxsb2Moc2l6ZW9m
KFdlYlRocmVhZENvbnRleHQpLCAxKSk7CiAgICAgICAgIHB0aHJlYWRfc2V0c3BlY2lmaWModGhy
ZWFkQ29udGV4dEtleSwgdGhyZWFkQ29udGV4dCk7CiAgICAgfSAgICAgICAgCiAgICAgcmV0dXJu
IHRocmVhZENvbnRleHQ7CiB9CiAKLXN0YXRpYwotI2lmbmRlZiBfX2xsdm1fXwotTk9fUkVUVVJO
Ci0jZW5kaWYKLXZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcpCitzdGF0aWMgdm9pZCogUnVu
V2ViVGhyZWFkKHZvaWQqKQogewogICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2luZ2xl
dG9uKCkucHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7CiAKLSAgICBVTlVTRURfUEFS
QU0oYXJnKTsKICAgICAvLyBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCkgbmVlZHMgdG8gYmUg
Y2FsbGVkIGJlZm9yZSBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKSBzaW5jZSB0aGUKICAgICAv
LyBjb2RlIGludm9rZWQgYnkgdGhlIGxhdHRlciBuZWVkcyB0byBrbm93IGlmIGl0J3MgcnVubmlu
ZyBvbiB0aGUgV2ViVGhyZWFkLiBTZWUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vODUwMjQ4Nz4u
CkBAIC02NjUsMTkgKzYzNCwxOSBAQCB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQogICAg
IHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgd2ViVGhyZWFk
TlNSdW5Mb29wID0gW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJldGFpbl07CiAKLSAgICBD
RlJ1bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29w
T2JzZXJ2ZXJDcmVhdGUoTlVMTCwga0NGUnVuTG9vcEJlZm9yZVRpbWVyc3xrQ0ZSdW5Mb29wQmVm
b3JlU291cmNlc3xrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2Nr
LCBOVUxMKTsKKyAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wTG9ja09ic2VydmVy
UmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVRp
bWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3VyY2VzIHwga0NGUnVuTG9vcEFmdGVyV2FpdGluZywg
WUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVsbHB0cik7CiAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiwga0NGUnVuTG9v
cENvbW1vbk1vZGVzKTsKICAgICBDRlJlbGVhc2Uod2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZik7
CiAgICAgCiAgICAgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCk7CiAKICAgICAvLyBXZSBtdXN0IGhh
dmUgdGhlIGxvY2sgd2hlbiBDQSBwYWludHMgaW4gdGhlIHdlYiB0aHJlYWQuIENBIGNvbW1pdHMg
YXQgMjAwMDAwMCBzbyB3ZSB1c2UgbGFyZ2VyIG9yZGVyIG51bWJlciB0aGFuIHRoYXQgdG8gZnJl
ZSB0aGUgbG9jay4KLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wVW5sb2NrT2Jz
ZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBrQ0ZSdW5Mb29wQmVmb3Jl
V2FpdGluZ3xrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBO
VUxMKTsgICAgCisgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9vcFVubG9ja09ic2Vy
dmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9y
ZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2Nr
LCBudWxscHRyKTsgICAgCiAgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9v
cCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwog
ICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYpOyAgICAKIAotICAgIENG
UnVuTG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNvbnRleHQgPSB7MCwgTlVMTCwgTlVM
TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgSGFuZGxlV2ViVGhyZWFkUmVs
ZWFzZVNvdXJjZX07Ci0gICAgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJj
ZUNyZWF0ZShOVUxMLCAtMSwgJlJlbGVhc2VTb3VyY2VDb250ZXh0KTsKKyAgICBDRlJ1bkxvb3BT
b3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIEhh
bmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OworICAgIFdlYlRocmVhZFJlbGVhc2VTb3VyY2Ug
PSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4
dCk7CiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKHdlYlRocmVhZFJ1bkxvb3AsIFdlYlRocmVhZFJl
bGVhc2VTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICB7CkBAIC02ODgsOSAr
NjU3LDcgQEAgdm9pZCAqUnVuV2ViVGhyZWFkKHZvaWQgKmFyZykKICAgICB3aGlsZSAoMSkKICAg
ICAgICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgRGlzdGFudEZ1
dHVyZSwgdHJ1ZSk7CiAKLSNpZmRlZiBfX2xsdm1fXwotICAgIHJldHVybiBOVUxMOwotI2VuZGlm
ICAKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQo
KQpAQCAtNzA2LDcgKzY3Myw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICAv
LyBJbml0aWFsaXplIFRocmVhZEdsb2JhbERhdGEgb24gdGhlIG1haW4gVUkgdGhyZWFkIHNvIHRo
YXQgdGhlIFdlYkNvcmUgdGhyZWFkCiAgICAgLy8gY2FuIGxhdGVyIHNldCBpdCdzIHRocmVhZC1z
cGVjaWZpYyBkYXRhIHRvIHBvaW50IHRvIHRoZSBzYW1lIG9iamVjdHMuCiAgICAgV2ViQ29yZTo6
VGhyZWFkR2xvYmFsRGF0YSYgdW51c2VkID0gV2ViQ29yZTo6dGhyZWFkR2xvYmFsRGF0YSgpOwot
ICAgICh2b2lkKXVudXNlZDsKKyAgICBVTlVTRURfUEFSQU0odW51c2VkKTsKIAogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC03MjcsOCArNjk0LDggQEAgc3RhdGlj
IHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJm11
dGV4X2F0dHIpOwogCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCk7Ci0gICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQg
PSB7MCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgSGFu
ZGxlRGVsZWdhdGVTb3VyY2V9OwotICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNl
Q3JlYXRlKE5VTEwsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOworICAgIENGUnVuTG9vcFNv
dXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIEhh
bmRsZURlbGVnYXRlU291cmNlfTsKKyAgICBkZWxlZ2F0ZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJj
ZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3VyY2VDb250ZXh0KTsKIAogICAgIC8vIFdl
IHNob3VsZG4ndCBnZXQgZGVsZWdhdGUgY2FsbGJhY2tzIHdoaWxlIHNjcm9sbGluZywgYnV0IHRo
ZXJlIG1pZ2h0IGJlCiAgICAgLy8gb25lIG91dHN0YW5kaW5nIHdoZW4gd2Ugc3RhcnQuICBBZGQg
dGhlIHNvdXJjZSBmb3IgYWxsIGNvbW1vbiBydW4gbG9vcApAQCAtNzM3LDcgKzcwNCw3IEBAIHN0
YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKIAogICAgIHNBc3luY0RlbGVnYXRlcyA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwogCi0gICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2Jz
ZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBrQ0ZSdW5Mb29wQmVmb3JlV2Fp
dGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29wQXV0b1VubG9j
aywgTlVMTCk7CisgICAgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIgPSBDRlJ1bkxvb3BP
YnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxv
b3BFeGl0LCBZRVMsIDMwMDAwMDEsIE1haW5SdW5Mb29wQXV0b1VubG9jaywgbnVsbHB0cik7CiAK
ICAgICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICAgICBwdGhyZWFkX2F0dHJfaW5pdCgmdGF0dHIp
OwpAQCAtNzU5LDcgKzcyNiw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICAg
ICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzICYgdGhlIHdl
YiB0aHJlYWQuCiAgICAgICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2luZ2xldG9uKCku
c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogCi0gICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ3
ZWJUaHJlYWQsICZ0YXR0ciwgUnVuV2ViVGhyZWFkLCBOVUxMKTsKKyAgICAgICAgcHRocmVhZF9j
cmVhdGUoJndlYlRocmVhZCwgJnRhdHRyLCBSdW5XZWJUaHJlYWQsIG51bGxwdHIpOwogICAgICAg
ICBwdGhyZWFkX2F0dHJfZGVzdHJveSgmdGF0dHIpOwogCiAgICAgICAgIHN0YXJ0dXBDb25kaXRp
b24ud2FpdChzdGFydHVwTG9jayk7CkBAIC03NjgsNyArNzM1LDcgQEAgc3RhdGljIHZvaWQgU3Rh
cnRXZWJUaHJlYWQoKQogICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJVGhyZWFkKCk7CiB9CiAK
LXN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrIChwdGhyZWFkX2NvbmRfdCAqY29uZGl0
aW9uLCBwdGhyZWFkX211dGV4X3QgKmxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFsKQorc3Rh
dGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwg
cHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFic29sdXRlVGltZSBpbnRlcnZhbCkKIHsKICAgICBz
dHJ1Y3QgdGltZXNwZWMgdGltZTsKICAgICBDRkFic29sdXRlVGltZSBhdCA9IENGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7CkBAIC03OTQsMTggKzc2MSwxNiBAQCBzdGF0aWMg
Ym9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRyeSkKICAgICB9CiAgICAgICAgIAog
ICAgICAgICAgICAgCi0gICAgaW50IHJlc3VsdDsKICAgICBib29sIGJ1c3kgPSBmYWxzZTsKICAg
ICBpZiAoc2hvdWxkVHJ5KSB7Ci0gICAgICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9j
aygmd2ViTG9jayk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRUJVU1kpIHsKKyAgICAgICAgaW50
IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2ViTG9jayk7CisgICAgICAgIGlmIChy
ZXN1bHQgPT0gRUJVU1kpCiAgICAgICAgICAgICBidXN5ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAidHJ5IHdlYiBs
b2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAg
ICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZ3ZWJMb2NrKTsKLSAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgPT0gMCwgIndlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6
JWQiLCByZXN1bHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFyZXN1bHQsICJ0cnkgd2ViIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9jaygm
d2ViTG9jayk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwgIXJl
c3VsdCwgIndlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogICAgIH0KICAg
ICAKICAgICBpZiAoIWJ1c3kpIHsKQEAgLTg4OSwxNiArODU0LDE1IEBAIHZvaWQgV2ViVGhyZWFk
VW5sb2NrRnJvbUFueVRocmVhZCgpCiAgICAgQVNTRVJUKG90aGVyVGhyZWFkTG9ja0NvdW50KTsK
ICAgICBvdGhlclRocmVhZExvY2tDb3VudC0tOwogICAgIAotICAgIGludCByZXN1bHQ7Ci0gICAg
cmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2spOyAKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwg
cmVzdWx0KTsKKyAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2sp
OyAKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIg
dW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogfQogCiB2b2lkIFdlYlRocmVh
ZFVubG9ja0d1YXJkRm9yTWFpbCgpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQo
KSk7CiAKLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2Jz
ZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBrQ0ZSdW5Mb29wRW50cnksIFlF
UywgMCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgTlVMTCk7CisgICAgQ0ZSdW5Mb29wT2JzZXJ2
ZXJSZWYgbWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJD
cmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2Nr
R3VhcmQsIG51bGxwdHIpOwogICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1h
aW4oKSwgbWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwogICAgIENGUmVsZWFzZShtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOwogfQpA
QCAtOTEzLDI2ICs4NzcsMjYgQEAgdm9pZCBfV2ViVGhyZWFkVW5sb2NrKHZvaWQpCiAjZW5kaWYK
ICAgICAKICAgICBpZiAoIVdlYlRocmVhZElzQ3VycmVudCgpKSB7Ci0gICAgICAgIEFTU0VSVCht
YWluVGhyZWFkTG9ja0NvdW50ICE9IDApOworICAgICAgICBBU1NFUlQobWFpblRocmVhZExvY2tD
b3VudCk7CiAgICAgICAgIG1haW5UaHJlYWRMb2NrQ291bnQtLTsKICAgICB9IGVsc2UgeyAgICAK
ICAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50LS07CiAgICAgICAgIHdlYlRocmVhZFNob3VsZFlp
ZWxkID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGludCByZXN1bHQ7Ci0gICAgcmVzdWx0ID0g
cHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2spOyAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KHJlc3VsdCA9PSAwLCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsg
ICAgCisgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LCAid2ViIHVubG9j
ayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsgICAgCiB9CiAKIGJvb2wgV2ViVGhyZWFk
SXNMb2NrZWQodm9pZCkKIHsKICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpCiAgICAgICAg
IHJldHVybiB3ZWJUaHJlYWRMb2NrQ291bnQ7Ci0gICAgZWxzZSBpZiAocHRocmVhZF9tYWluX25w
KCkpCisKKyAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBtYWluVGhy
ZWFkTG9ja0NvdW50OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIG90aGVyVGhyZWFkTG9ja0Nv
dW50OworCisgICAgcmV0dXJuIG90aGVyVGhyZWFkTG9ja0NvdW50OwogfQogCiBib29sIFdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCh2b2lkKQpAQCAtOTU1LDcgKzkxOSw3IEBAIHZvaWQgV2Vi
VGhyZWFkTG9ja1BvcE1vZGFsKHZvaWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7Ci0gICAgQVNTRVJUKHNNYWluVGhyZWFkTW9kYWxDb3Vu
dCAhPSAwKTsKKyAgICBBU1NFUlQoc01haW5UaHJlYWRNb2RhbENvdW50KTsKICAgICAtLXNNYWlu
VGhyZWFkTW9kYWxDb3VudDsKIH0KIApAQCAtOTc5LDcgKzk0Myw3IEBAIE5TUnVuTG9vcCogV2Vi
VGhyZWFkTlNSdW5Mb29wKHZvaWQpCiAgICAgcmV0dXJuIFtOU1J1bkxvb3AgY3VycmVudFJ1bkxv
b3BdOwogfQogCi1XZWJUaHJlYWRDb250ZXh0ICpXZWJUaHJlYWRDdXJyZW50Q29udGV4dCh2b2lk
KQorV2ViVGhyZWFkQ29udGV4dCogV2ViVGhyZWFkQ3VycmVudENvbnRleHQodm9pZCkKIHsKICAg
ICByZXR1cm4gQ3VycmVudFRocmVhZENvbnRleHQoKTsKIH0KQEAgLTk4OCw4ICs5NTIsOCBAQCB2
b2lkIFdlYlRocmVhZEVuYWJsZSh2b2lkKQogewogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRSghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViUHJvY2VzcygpLCAiVGhlIFdlYlBy
b2Nlc3Mgc2hvdWxkIG5ldmVyIHJ1biBhIFdlYiBUaHJlYWQiKTsKIAotICAgIHN0YXRpYyBwdGhy
ZWFkX29uY2VfdCBpbml0Q29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwotICAgIHB0aHJlYWRf
b25jZSgmaW5pdENvbnRyb2wsIFN0YXJ0V2ViVGhyZWFkKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBTdGFydFdlYlRocmVhZCk7CiB9
CiAKIGJvb2wgV2ViVGhyZWFkSXNFbmFibGVkKHZvaWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>