<?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>166888</bug_id>
          
          <creation_ts>2017-01-10 06:31:28 -0800</creation_ts>
          <short_desc>Decouple module loading initiator from ScriptElement</short_desc>
          <delta_ts>2017-01-11 07:19:06 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>166925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1265350</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-10 06:31:28 -0800</bug_when>
    <thetext>Decouple module loading initiator from ScriptElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265351</commentid>
    <comment_count>1</comment_count>
      <attachid>298460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-10 06:37:32 -0800</bug_when>
    <thetext>Created attachment 298460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265651</commentid>
    <comment_count>2</comment_count>
      <attachid>298545</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-10 18:49:59 -0800</bug_when>
    <thetext>Created attachment 298545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265658</commentid>
    <comment_count>3</comment_count>
      <attachid>298546</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-10 19:15:33 -0800</bug_when>
    <thetext>Created attachment 298546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265718</commentid>
    <comment_count>4</comment_count>
      <attachid>298546</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-11 02:21:26 -0800</bug_when>
    <thetext>Comment on attachment 298546
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=298546&amp;action=review

This LGTM, but it&apos;s worth having somebody else who knows the WebCore bits more than I do give the thumbs up.

&gt; Source/JavaScriptCore/runtime/JSScriptInitiator.h:2
&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;

2017

&gt; Source/JavaScriptCore/runtime/ScriptInitiator.h:2
&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;

2017

&gt; Source/WebCore/ForwardingHeaders/runtime/JSScriptInitiator.h:2
&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;

2017

&gt; Source/WebCore/ForwardingHeaders/runtime/ScriptInitiator.h:2
&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;

2017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265720</commentid>
    <comment_count>5</comment_count>
      <attachid>298546</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 02:30:17 -0800</bug_when>
    <thetext>Comment on attachment 298546
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=298546&amp;action=review

Thanks :)

&gt;&gt; Source/JavaScriptCore/runtime/JSScriptInitiator.h:2
&gt;&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;
&gt; 
&gt; 2017

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/ScriptInitiator.h:2
&gt;&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;
&gt; 
&gt; 2017

Fixed.

&gt;&gt; Source/WebCore/ForwardingHeaders/runtime/JSScriptInitiator.h:2
&gt;&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;
&gt; 
&gt; 2017

Fixed.

&gt;&gt; Source/WebCore/ForwardingHeaders/runtime/ScriptInitiator.h:2
&gt;&gt; + * Copyright (C) 2016 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;
&gt; 
&gt; 2017

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265722</commentid>
    <comment_count>6</comment_count>
      <attachid>298564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 02:33:36 -0800</bug_when>
    <thetext>Created attachment 298564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265723</commentid>
    <comment_count>7</comment_count>
      <attachid>298546</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-01-11 02:47:27 -0800</bug_when>
    <thetext>Comment on attachment 298546
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=298546&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        * runtime/JSScriptInitiator.cpp: Copied from Source/WebCore/dom/LoadableScript.cpp.
&gt; +        (JSC::JSScriptInitiator::destroy):
&gt; +        * runtime/JSScriptInitiator.h: Added.

I&apos;m not sure if &quot;initiator&quot; is a good name for this. How about ScriptLoader or ScriptFetcher?
Or perhaps ScriptOrigin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265724</commentid>
    <comment_count>8</comment_count>
      <attachid>298564</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-01-11 02:48:02 -0800</bug_when>
    <thetext>Comment on attachment 298564
Patch

r=me with my previous comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265730</commentid>
    <comment_count>9</comment_count>
      <attachid>298546</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 03:21:37 -0800</bug_when>
    <thetext>Comment on attachment 298546
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=298546&amp;action=review

Thank you for your review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +        * runtime/JSScriptInitiator.h: Added.
&gt; 
&gt; I&apos;m not sure if &quot;initiator&quot; is a good name for this. How about ScriptLoader or ScriptFetcher?
&gt; Or perhaps ScriptOrigin?

I think `ScriptFetcher` is better since ScriptLoader is ambiguous with ModuleLoader thing in JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265733</commentid>
    <comment_count>10</comment_count>
      <attachid>298567</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 04:09:58 -0800</bug_when>
    <thetext>Created attachment 298567
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265734</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-11 04:13:46 -0800</bug_when>
    <thetext>Committed r210585: &lt;http://trac.webkit.org/changeset/210585&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298460</attachid>
            <date>2017-01-10 06:37:32 -0800</date>
            <delta_ts>2017-01-10 18:49:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166888-20170110233555.patch</filename>
            <type>text/plain</type>
            <size>59074</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJiZjU3MzRkMjg0NWZmMzc4YTE1NWNjMTk1NGRhMGIwZDJiZjM4Li5mZTc1NDBkYTJlMDQ3NGU4
ZDMwOWEwZGU4YzRmNWY3MTZiMjk0NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBT
Y3JpcHRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU2NyaXB0SW5pdGlhdG9yIGFuZCBKU1NjcmlwdEluaXRpYXRvci4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNw
cC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmRlc3Ryb3kpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU2Ny
aXB0SW5pdGlhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NjcmlwdElu
aXRpYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmluaXRp
YXRvcik6CisgICAgICAgIChKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpKU1NjcmlwdEluaXRpYXRv
cik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEluaXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3Jp
cHQuY3BwLgorICAgICAgICAoSlNDOjpTY3JpcHRJbml0aWF0b3I6On5TY3JpcHRJbml0aWF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0wMS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgSlNTb3VyY2VDb2RlIHRvIHBy
b3BhZ2F0ZSBTb3VyY2VDb2RlIGluIG1vZHVsZSBwaXBlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxYzgy
MmI1OTMzNWI1YjNjMmI4MWIzODIxNzYxMDhiNmE1NjQ5NzYuLjE1MzZhODM2MDJhMGVhYjkzOGRh
MzVlOTYwMjNjZjNmNTVkMGQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNy0w
MS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBE
ZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBTY3JpcHRFbGVtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3
ZSB1c2UgU2NyaXB0RWxlbWVudCAoSlNFbGVtZW50IGZvciBTY3JpcHRFbGVtZW50KSBhcyB0aGUg
bW9kdWxlIGxvYWRpbmcgaW5pdGlhdG9yLgorICAgICAgICBUaGlzIGVsZW1lbnQgaXMgdXNlZCB0
byB0cmFuc2ZlciB0aGUgbWV0YWRhdGEgbGlrZSBjaGFyc2V0IHRocm91Z2hvdXQgdGhlIG1vZHVs
ZSBwaXBlbGluZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIG91ciBtb2R1bGUgbG9hZGVyIGluIHRo
ZSBicm93c2VyIHNpZGUgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggU2NyaXB0RWxlbWVudC4KKyAg
ICAgICAgSXQgaXMgbm90IGdvb2Qgc2luY2UgaXQgcHJldmVudCB1cyBmcm9tIHVzaW5nIHRoZSBt
b2R1bGUgbG9hZGVyIGluIHRoZSBub24tRE9NIGVudmlyb25tZW50IGxpa2UKKyAgICAgICAgV2Vi
IFdvcmtlcnMuCisKKyAgICAgICAgU28gd2UgZGVjb3VwbGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1h
dGlvbnMgZnJvbSBTY3JpcHRFbGVtZW50LiBXZSBtb3ZlIHRoZXNlIGluZm9ybWF0aW9uIHRvCisg
ICAgICAgIExvYWRhYmxlU2NyaXB0LiBBbmQgd2UgdXNlIEpTU2NyaXB0SW5pdGlhdG9yIHRvIHRy
YW5zZmVyIExvYWRhYmxlU2NyaXB0IHRocm91Z2ggdGhlIEpTIGltcGxlbWVudGVkCisgICAgICAg
IG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuIFdlIHNlbGVjdCBMb2FkYWJsZVNjcmlwdCBpbnN0ZWFk
IG9mIExvYWRhYmxlTW9kdWxlU2NyaXB0IHNpbmNlIHRoaXMgaW5pdGlhdG9yCisgICAgICAgIGlu
Zm9ybWF0aW9uIHdpbGwgYmUgbGV2ZXJhZ2VkIGV2ZW4gaW4gY2xhc3NpYyBzY3JpcHRzIG9uY2Ug
d2UgaW1wbGVtZW50IHRoZSBkeW5hbWljIGltcG9ydC4KKworICAgICAgICBObyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5j
cHAuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRJbml0aWF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkTW9kdWxlU2NyaXB0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNj
cmlwdDo6Q2FjaGVkTW9kdWxlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHQuaDoKKyAgICAgICAgTm93IHdlIGNhbiBtZXJnZSBDYWNoZWRN
b2R1bGVTY3JpcHQgdG8gTG9hZGFibGVTY3JpcHQuIEJ1dCB3ZSBkbyBub3QgZG8gdGhpcyBpbiB0
aGlzIHBhdGNoIHNpbmNlCisgICAgICAgIHdlIGZvY3VzIG9uIGRlY291cGxpbmcgdGhlIGluaXRp
YXRvciBpbmZvcm1hdGlvbiBmcm9tIFNjcmlwdEVsZW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZE1vZHVsZVNjcmlwdDo6bm9uY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkTW9kdWxlU2NyaXB0Ojpjcm9zc09yaWdpbk1vZGUpOiBEZWxldGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1
bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6fkxvYWRhYmxlQ2xhc3NpY1Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmlzTG9hZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bG9hZCk6CisgICAgICAgICog
ZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVs
ZVNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJsZU1v
ZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6bG9h
ZCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgICogZG9t
L0xvYWRhYmxlU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0Ojpy
ZXF1ZXN0U2NyaXB0V2l0aENhY2hlKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpMb2FkYWJsZVNjcmlwdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6cmVxdWVzdENsYXNzaWNTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKwogMjAxNy0wMS0wOSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQg
SlNTb3VyY2VDb2RlIHRvIHByb3BhZ2F0ZSBTb3VyY2VDb2RlIGluIG1vZHVsZSBwaXBlbGluZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU3YzA2OWFjODdiZTI0MTgwMTk4
MmYyYmQ0ZjQxZjI2NjRhZDMzOGUuLjBiYWRiNzMyNzkxNzU4NGFjYTg4YjA0YWM1ZDdiOWU4MjNl
OWYxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc4NSw2ICs3ODUs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAKICAgICBydW50aW1lL0pTUHJveHkuY3BwCiAgICAgcnVudGltZS9KU1Nj
b3BlLmNwcAorICAgIHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuY3BwCiAgICAgcnVudGltZS9K
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXQuY3BwCiAgICAg
cnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1NzYxOGQ1NjFjYzI2ZGIwMjVkNjhlMTU1N2NiN2EyOTU5Zjk0ZDRjLi5jYjBmMjkyZDZkY2Ey
NDFmMTQ2ODY4YTAzZTgzNjQzNWQ2NTVmNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjM3NCw2ICsyMzc0LDkgQEAKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpT
U3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZBM0FCMjExQzg0
OTQ1MjRBQjM5MDI2NyAvKiBKU1NvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291
cmNlQ29kZS5jcHAgKi87IH07CiAJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJj
ZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMw
MzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDgxNUY1Rjk5MUM0NkJFQjk4RDAw
MTYgLyogSlNTY3JpcHRJbml0aWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTFDMTk3QzI2MjQ4NDhFREE4NENFRDdGIC8qIEpTU2NyaXB0SW5p
dGlhdG9yLmNwcCAqLzsgfTsKKwkJOTA2NDMzN0RENEIwNDAyQkFGMzRBNTkyIC8qIEpTU2NyaXB0
SW5pdGlhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3JpcHRJbml0aWF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRUFFN0Q3Qjg4OUI0
NzdCQTkzQUJBNkMgLyogU2NyaXB0SW5pdGlhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0
SW5pdGlhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNDkwNCw2ICs0OTA3LDkgQEAKIAkJRkVGRDZGQzUx
RDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1NvdXJjZUNvZGUuY3BwOyBwYXRoID0g
SlNTb3VyY2VDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURG
MUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU1NvdXJjZUNvZGUuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMUMxOTdDMjYyNDg0OEVEQTg0Q0VEN0YgLyogSlNTY3Jp
cHRJbml0aWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNT
Y3JpcHRJbml0aWF0b3IuY3BwOyBwYXRoID0gSlNTY3JpcHRJbml0aWF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3Jp
cHRJbml0aWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNTY3JpcHRJ
bml0aWF0b3IuaDsgcGF0aCA9IEpTU2NyaXB0SW5pdGlhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRJbml0aWF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2NyaXB0SW5pdGlhdG9yLmg7IHBh
dGggPSBTY3JpcHRJbml0aWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjc0Niw2ICs2NzUyLDkgQEAKIAkJCQk0MjVCQTEzMzdF
NDM0NEUxQjI2OUE2NzEgLyogU291cmNlT3JpZ2luLmggKi8sCiAJCQkJRjczOTI2OTE4REM2NDMz
MEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8sCiAJCQkJMzAzMjE3NURGMUFENDdEODk5
OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovLAorCQkJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3
RiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgKi8sCisJCQkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMx
NkVBIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmggKi8sCisJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIx
NUI3IC8qIFNjcmlwdEluaXRpYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkxMjEsNiArOTEzMCw4IEBACiAJCQkJODY3
MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDM0MkYzNkY3MjQ0MDk2ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCREZDQjJCQkU5MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2RlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5MDY0MzM3REQ0QjA0MDJCQUYzNEE1OTIgLyogSlNTY3JpcHRJ
bml0aWF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAv
KiBTY3JpcHRJbml0aWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTA1MTAsNiArMTA1MjEsNyBA
QAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkEzQUIyMTFDODQ5NDUyNEFCMzkwMjY3IC8qIEpT
U291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDgxNUY1Rjk5MUM0NkJFQjk4RDAw
MTYgLyogSlNTY3JpcHRJbml0aWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDZjYjIxY2Q3MWNiZTFiNjYwNmQ1ODIz
OTJiYjlkZTQ0NGIzYzNiNTguLjhiNjE1YTFhM2E1MTUxMDU5NjcyMDY1ZDQ3MmI3ZThhZTg1ODY5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNTYs
MjEgKzE1NiwyMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAK
ICAgICBTVEFUSUNfQVNTRVJUKFN0cmluZ1R5cGUgPT0gNik7CiAgICAgU1RBVElDX0FTU0VSVChT
eW1ib2xUeXBlID09IDcpOwotICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0VHlwZSA9PSAyMik7Ci0g
ICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjMpOwotICAgIFNUQVRJQ19BU1NF
UlQoSlNGdW5jdGlvblR5cGUgPT0gMjUpOwotICAgIFNUQVRJQ19BU1NFUlQoQXJyYXlUeXBlID09
IDMzKTsKLSAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUgPT0gMzQpOwotICAgIFNU
QVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDUyKTsKLSAgICBTVEFUSUNfQVNTRVJUKElu
dDhBcnJheVR5cGUgPT0gMzUpOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MTZBcnJheVR5cGUgPT0g
MzYpOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzcpOwotICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzgpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDhD
bGFtcGVkQXJyYXlUeXBlID09IDM5KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQxNkFycmF5VHlw
ZSA9PSA0MCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUgPT0gNDEpOwotICAg
IFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0Mik7Ci0gICAgU1RBVElDX0FTU0VS
VChGbG9hdDY0QXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFUSUNfQVNTRVJUKE9iamVjdFR5cGUg
PT0gMjMpOworICAgIFNUQVRJQ19BU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDI0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBlID09IDI2KTsKKyAgICBTVEFUSUNfQVNTRVJUKEFy
cmF5VHlwZSA9PSAzNCk7CisgICAgU1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDM1
KTsKKyAgICBTVEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSA1Myk7CisgICAgU1RBVElD
X0FTU0VSVChJbnQ4QXJyYXlUeXBlID09IDM2KTsKKyAgICBTVEFUSUNfQVNTRVJUKEludDE2QXJy
YXlUeXBlID09IDM3KTsKKyAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09IDM4KTsK
KyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4QXJyYXlUeXBlID09IDM5KTsKKyAgICBTVEFUSUNfQVNT
RVJUKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9PSA0MCk7CisgICAgU1RBVElDX0FTU0VSVChVaW50
MTZBcnJheVR5cGUgPT0gNDEpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDMyQXJyYXlUeXBlID09
IDQyKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZsb2F0MzJBcnJheVR5cGUgPT0gNDMpOworICAgIFNU
QVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSA0NCk7CiAgICAgU1RBVElDX0FTU0VSVChN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAgIFNUQVRJQ19BU1NFUlQoSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBTVEFUSUNfQVNTRVJUKEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4ID09IDB4NDAwMDAwMDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDliMzI4MjYxODk3MjJj
ZWZmZTUyNzZiYzZkNGRlOWZkZGFlODk3MWIuLmVjMjQ3NzNhMzAwNDU3NmM0YmRkMTRjZmUwNDMw
NzgzYzY5M2M3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTM0NSwyNCArMzQ1LDI0IEBAIGNvbnN0IFNsb3dQdXRB
cnJheVN0b3JhZ2VTaGFwZSA9IDB4MEMKICMgVHlwZSBjb25zdGFudHMuCiBjb25zdCBTdHJpbmdU
eXBlID0gNgogY29uc3QgU3ltYm9sVHlwZSA9IDcKLWNvbnN0IE9iamVjdFR5cGUgPSAyMgotY29u
c3QgRmluYWxPYmplY3RUeXBlID0gMjMKLWNvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjUKLWNvbnN0
IEFycmF5VHlwZSA9IDMzCi1jb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzQKLWNvbnN0IFByb3h5
T2JqZWN0VHlwZSA9IDUyCitjb25zdCBPYmplY3RUeXBlID0gMjMKK2NvbnN0IEZpbmFsT2JqZWN0
VHlwZSA9IDI0Citjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IDI2Citjb25zdCBBcnJheVR5cGUgPSAz
NAorY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM1Citjb25zdCBQcm94eU9iamVjdFR5cGUgPSA1
MwogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFy
dGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBz
dGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KLWNvbnN0IEludDhBcnJheVR5
cGUgPSAzNQotY29uc3QgSW50MTZBcnJheVR5cGUgPSAzNgotY29uc3QgSW50MzJBcnJheVR5cGUg
PSAzNwotY29uc3QgVWludDhBcnJheVR5cGUgPSAzOAotY29uc3QgVWludDhDbGFtcGVkQXJyYXlU
eXBlID0gMzkKLWNvbnN0IFVpbnQxNkFycmF5VHlwZSA9IDQwCi1jb25zdCBVaW50MzJBcnJheVR5
cGUgPSA0MQotY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9IDQyCi1jb25zdCBGbG9hdDY0QXJyYXlU
eXBlID0gNDMKK2NvbnN0IEludDhBcnJheVR5cGUgPSAzNgorY29uc3QgSW50MTZBcnJheVR5cGUg
PSAzNworY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOAorY29uc3QgVWludDhBcnJheVR5cGUgPSAz
OQorY29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0gNDAKK2NvbnN0IFVpbnQxNkFycmF5VHlw
ZSA9IDQxCitjb25zdCBVaW50MzJBcnJheVR5cGUgPSA0MgorY29uc3QgRmxvYXQzMkFycmF5VHlw
ZSA9IDQzCitjb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gNDQKIAogY29uc3QgRmlyc3RBcnJheVR5
cGUgPSBJbnQ4QXJyYXlUeXBlCiBjb25zdCBMYXN0QXJyYXlUeXBlID0gRmxvYXQ2NEFycmF5VHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJbml0
aWF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE4ZTRiYWEyMzgzOTRmOGRjMmQyNzNlYTlmNWYyNmMyYzY0Mzhm
ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
cmlwdEluaXRpYXRvci5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1NjcmlwdEluaXRpYXRvci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTU2NyaXB0SW5pdGlhdG9yOjpzX2lu
Zm8gPSB7ICJKU1NjcmlwdEluaXRpYXRvciIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNTY3JpcHRJbml0aWF0b3IpIH07CisKK3ZvaWQgSlNTY3JpcHRJbml0aWF0b3I6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTU2NyaXB0SW5pdGlh
dG9yKj4oY2VsbCktPn5KU1NjcmlwdEluaXRpYXRvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEluaXRpYXRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMwMTA4YzBlODgyNjgyMmViM2EwNGQxMzVlYTdkNGU1ZDU4OWJmNjcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njcmlw
dEluaXRpYXRvci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRJbml0
aWF0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTU2NyaXB0SW5pdGlhdG9yIDog
cHVibGljIEpTQ2VsbCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTU2Ny
aXB0SW5pdGlhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAg
IHN0YXRpYyBKU1NjcmlwdEluaXRpYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFJlZlB0cjxTY3JpcHRJbml0aWF0b3I+JiYgaW5pdGlhdG9yKQorICAgIHsKKyAgICAg
ICAgYXV0byogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTY3JpcHRJbml0
aWF0b3I+KHZtLmhlYXApKSBKU1NjcmlwdEluaXRpYXRvcih2bSwgc3RydWN0dXJlLCBXVEZNb3Zl
KGluaXRpYXRvcikpOworICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNTY3JpcHRJbml0aWF0b3Iq
IGNyZWF0ZShWTSYgdm0sIFJlZlB0cjxTY3JpcHRJbml0aWF0b3I+JiYgaW5pdGlhdG9yKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgdm0uc2NyaXB0SW5pdGlhdG9yU3RydWN0dXJl
LmdldCgpLCBXVEZNb3ZlKGluaXRpYXRvcikpOworICAgIH0KKworICAgIFNjcmlwdEluaXRpYXRv
ciogaW5pdGlhdG9yKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luaXRpYXRvci5n
ZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCitwcml2
YXRlOgorICAgIEpTU2NyaXB0SW5pdGlhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxTY3JpcHRJbml0aWF0b3I+JiYgaW5pdGlhdG9yKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICAgICAgLCBtX2luaXRpYXRvcihXVEZNb3ZlKGluaXRpYXRvcikpCisg
ICAgeworICAgIH0KKworICAgIFJlZlB0cjxTY3JpcHRJbml0aWF0b3I+IG1faW5pdGlhdG9yOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5oCmluZGV4IGFlMTg0ZGUyN2RlOGZhMmM3YjFlZjk3OTc1ZWFjNmJlYmIxNjMzNjQuLmFmYmVh
Mzg2MGU0ZDZiMzY3ZmE0N2ZjNzE2NWJkOTk4NmUxOWJmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCkBAIC01MSw2ICs1MSw3IEBAIGVudW0gSlNUeXBlIDogdWludDhf
dCB7CiAKICAgICBKU0ZpeGVkQXJyYXlUeXBlLAogICAgIEpTU291cmNlQ29kZVR5cGUsCisgICAg
SlNTY3JpcHRJbml0aWF0b3JUeXBlLAogCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFsdWUgbXVz
dCBjb21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09iamVjdC4K
ICAgICBPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0SW5pdGlhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3Jp
cHRJbml0aWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDZkNTE4Mjc4ZDRmNTZiYjkzNWRhNmExODY4ZTVm
Y2Q4MGQ3OTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0SW5pdGlhdG9yLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdElu
aXRpYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmlwdEluaXRpYXRvcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflNjcmlwdEluaXRpYXRvcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMzhlOTlhZDE2NDlmMTFi
NGU4NGNkMGQ0YjNmNDE4NmEzNTIwYjk0YS4uNjI2YTQzMDNiZDY0NjZkNzM2YzgyNzM0NjhjNmNj
NTNkMThiMmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzEsNiAr
NzEsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1Nj
cmlwdEluaXRpYXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIkpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHkuaCIKQEAgLTI0
MCw2ICsyNDEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZpeGVkQXJyYXlTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU0ZpeGVkQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBzb3VyY2VDb2RlU3RydWN0dXJlLnNldCgqdGhpcywgSlNTb3VyY2VDb2RlOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgc2NyaXB0SW5pdGlhdG9yU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRJbml0aWF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMs
IFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFs
dWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB0ZW1wbGF0
ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCAzZWJlZDczZTViYTExODViNTc0Y2QzNzI3NDljNGIwYTE3ZTE2OTI3Li5l
NWM3YTE3OWE2N2NkMWVlMWY2NmVmMzA0MjI3MDA5YzA5MDVlMTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTMyNyw2ICszMjcsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJvbFRhYmxl
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZpeGVkQXJyYXlTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gc291cmNlQ29kZVN0cnVjdHVyZTsKKyAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzY3JpcHRJbml0aWF0b3JTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
c3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJy
YXlWYWx1ZU1hcFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZW1wbGF0ZVJlZ2lz
dHJ5S2V5U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDk5
NDZkNzg4OTMzZWNkMDE0ZmMwYThhNDE5NWVkYWM4YTNiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9y
LmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
U2NyaXB0SW5pdGlhdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRJbml0aWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjQ4ZDZk
YzA5OWUyZDEzMjRlMTI5NTllN2E5YTgzOWU3ZGVjMzE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRJbml0aWF0b3IuaApA
QCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0
SW5pdGlhdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0LmNwcAppbmRleCA0YmVmMmE4YWE4MzhkNzYxNzMzM2UzMGZkMjZkOWFiZDFiN2Vl
ZDg3Li4wZmVjNGI1OWIxZDJkMzE0ZDgwNDJmNzExM2FmYjk5OTRjNTY4NmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKQEAgLTI5
LDM4ICsyOSwzMCBAQAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdENsaWVudC5oIgogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UnVubmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IENhY2hlZE1vZHVsZVNjcmlwdDo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQor
UmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUoKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NP
cmlnaW5Nb2RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0
KCkpOwogfQogCi1DYWNoZWRNb2R1bGVTY3JpcHQ6OkNhY2hlZE1vZHVsZVNjcmlwdChjb25zdCBT
dHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKLSAgICA6IG1fbm9u
Y2Uobm9uY2UpCi0gICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1vZGUpCit2b2lk
IENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogeworICAgIGlmIChhdXRv
KiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2Fk
TW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpLCBsb2FkYWJsZVNjcmlwdCk7CiB9
CiAKLXZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29u
c3QgVVJMJiByb290VVJMKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNj
cmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gaW5pdGlhdG9y
LmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVT
Y3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIGluaXRpYXRvcik7Ci19Ci0KLXZvaWQgQ2Fj
aGVkTW9kdWxlU2NyaXB0Ojpsb2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKLXsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBpbml0aWF0b3Iu
ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNj
cmlwdCgqdGhpcywgc291cmNlQ29kZSwgaW5pdGlhdG9yKTsKKyAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNj
cmlwdCgqdGhpcywgc291cmNlQ29kZSwgbG9hZGFibGVTY3JpcHQpOwogfQogCiB2b2lkIENhY2hl
ZE1vZHVsZVNjcmlwdDo6bm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3RyaW5nSW1wbCYgbW9k
dWxlS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHQuaAppbmRleCA5ZWFhNzZiNGVkZWFjYzM4NzAwZWRjMDU1ZDlkNDA4ZjJkMDQzYzAyLi41NjJk
OTNkMDYzYjFmNGVjNGVjZWU3YmE2OTdiOTJiNTYyOTUzMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaApAQCAtMzIsMTUgKzMyLDEzIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdENsaWVudDsK
LWNsYXNzIEVsZW1lbnQ7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7
CiAKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1v
ZHVsZVNjcmlwdD4gewogcHVibGljOgogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBtb2R1bGVLZXko
KSB7IHJldHVybiBtX21vZHVsZUtleS5nZXQoKTsgfQogCi0gICAgdm9pZCBldmFsdWF0ZShFbGVt
ZW50Jik7Ci0KICAgICB2b2lkIG5vdGlmeUxvYWRDb21wbGV0ZWQoVW5pcXVlZFN0cmluZ0ltcGwm
IG1vZHVsZUtleSk7CiAgICAgdm9pZCBub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxlU2NyaXB0OjpF
cnJvciYmKTsKICAgICB2b2lkIG5vdGlmeUxvYWRXYXNDYW5jZWxlZCgpOwpAQCAtNTIsMjMgKzUw
LDE2IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hl
ZE1vZHVsZVNjcmlwdD4gewogICAgIHZvaWQgYWRkQ2xpZW50KENhY2hlZE1vZHVsZVNjcmlwdENs
aWVudCYpOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZE1vZHVsZVNjcmlwdENsaWVudCYp
OwogCi0gICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7Ci0KLSAgICB2b2lkIGxv
YWQoRWxlbWVudCYgaW5pdGlhdG9yLCBjb25zdCBVUkwmIHJvb3RVUkwpOwotICAgIHZvaWQgbG9h
ZChFbGVtZW50JiBpbml0aWF0b3IsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICBzdGF0
aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gY3JlYXRlKCk7CiAKLSAgICBjb25zdCBTdHJpbmcm
IG5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9ub25jZTsgfQotICAgIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KKyAgICB2
b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHJvb3RVUkwsIExvYWRhYmxlU2NyaXB0Jik7
CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRh
YmxlU2NyaXB0Jik7CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkTW9kdWxlU2NyaXB0KGNvbnN0IFN0
cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKLQogICAgIHZvaWQg
bm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4g
bV9tb2R1bGVLZXk7CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50
Kj4gbV9jbGllbnRzOwotICAgIFN0cmluZyBtX25vbmNlOwotICAgIFN0cmluZyBtX2Nyb3NzT3Jp
Z2luTW9kZTsKICAgICBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJv
cjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRl
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAppbmRleCBjNDk5Y2RhMjRkMjI4ZmZkZmU5OTRlZDQ2
Y2E3YjA2MWQ2MzliMGVhLi42MGJkZDQ4NWNhYjM1OGM5YWM1ZTc5NzkxZjVhYmQ4Mjk0ZTQwMThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5jcHAKQEAgLTI2LDE0ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogCi0jaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIkxvYWRhYmxlU2NyaXB0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1
ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAKQEAgLTU4LDEwICs1NywxMCBAQCBDYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXI6On5DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoKQogICAgIH0KIH0K
IAotYm9vbCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQoU2NyaXB0RWxlbWVudCYgc2Ny
aXB0RWxlbWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCitib29sIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlcjo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJs
ZVNjcmlwdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFNj
cmlwdCk7Ci0gICAgbV9jYWNoZWRTY3JpcHQgPSBzY3JpcHRFbGVtZW50LnJlcXVlc3RTY3JpcHRX
aXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQoc291cmNlVVJMKTsKKyAgICBtX2NhY2hlZFNjcmlwdCA9
IGxvYWRhYmxlU2NyaXB0LnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVS
TCk7CiAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5oCmluZGV4IDhiMzVmY2I4N2FmNjA3ZDc2ZDI2YmVkNzg4MjZjZTllZDMwZTZkYzYuLjMy
ZmRlM2JmYTcyNGQ1MjU3OWQyMTRlNTdlNDZkNjNhNTU3MzQ2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCkBAIC0z
Niw4ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlckNsaWVudDsKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERlZmVycmVkUHJvbWlz
ZTsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7Ci1jbGFzcyBTY3Jp
cHRFbGVtZW50OworY2xhc3MgTG9hZGFibGVTY3JpcHQ7CiBjbGFzcyBVUkw7CiAKIGNsYXNzIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1v
ZHVsZVNjcmlwdExvYWRlcj4sIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDYs
NyArNDcsNyBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZQogCiAgICAgdmlydHVhbCB+Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyKCk7CiAKLSAgICBib29sIGxvYWQoU2NyaXB0RWxlbWVudCYsIGNv
bnN0IFVSTCYgc291cmNlVVJMKTsKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBMb2FkYWJsZVNj
cmlwdCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKTsKIAogICAgIENhY2hlZFNjcmlwdCogY2FjaGVk
U2NyaXB0KCkgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzN2M5ZWRmMzZl
OWNmM2FmMDNiNWJlMzhiMDQzZGE4ZTAzZTU5MTc1Li45ZjY1MTU0MzdlMDExN2EzYWU2Y2JjNDE5
NDFiMWU1ZTI4YzRhNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlBhZ2VDb25zb2xl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jh
c2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC02MCw2ICs1OSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEluaXRp
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTE4NiwzOSAr
MTg2LDM5IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSwgRXhjZXB0aW9uCiAgICAgcmV0dXJuIGV2YWx1YXRlSW5X
b3JsZChzb3VyY2VDb2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZXhjZXB0aW9uRGV0YWls
cyk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFt
ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBt
b2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmIGxv
YWRhYmxlU2NyaXB0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHdvcmxkLnZtKCkpOwogCiAgICAgYXV0byYgc2hlbGwgPSAqd2luZG93U2hlbGwod29y
bGQpOwogICAgIGF1dG8mIHN0YXRlID0gKnNoZWxsLndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAK
LSAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0
YXRlLCBtb2R1bGVOYW1lLCB0b0pTKCZzdGF0ZSwgc2hlbGwud2luZG93KCksICZlbGVtZW50KSk7
CisgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShz
dGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1NjcmlwdEluaXRpYXRvcjo6Y3JlYXRlKHN0YXRlLnZt
KCksIHsgJmxvYWRhYmxlU2NyaXB0IH0pKTsKICAgICBzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJz
KG1vZHVsZVNjcmlwdCwgcHJvbWlzZSwgd29ybGQpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNv
bnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
dCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3Jp
cHQpCiB7Ci0gICAgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtb2R1bGVO
YW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZWxlbWVudCk7CisgICAgbG9hZE1vZHVsZVNj
cmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtb2R1bGVOYW1lLCBsb2FkYWJsZVNjcmlwdCwgbWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBF
bGVtZW50JiBlbGVtZW50KQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0
SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkp
OwogCiAgICAgYXV0byYgc2hlbGwgPSAqd2luZG93U2hlbGwod29ybGQpOwogICAgIGF1dG8mIHN0
YXRlID0gKnNoZWxsLndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKLSAgICBhdXRvJiBwcm9taXNl
ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0YXRlLCBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpLCB0b0pTKCZzdGF0ZSwgc2hlbGwud2luZG93KCksICZlbGVtZW50KSk7Cisg
ICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0
ZSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgSlNDOjpKU1NjcmlwdEluaXRpYXRvcjo6Y3Jl
YXRlKHN0YXRlLnZtKCksIHsgJmxvYWRhYmxlU2NyaXB0IH0pKTsKICAgICBzZXR1cE1vZHVsZVNj
cmlwdEhhbmRsZXJzKG1vZHVsZVNjcmlwdCwgcHJvbWlzZSwgd29ybGQpOwogfQogCi12b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEVsZW1lbnQmIGVs
ZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9k
dWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAgICBsb2FkTW9kdWxlU2Ny
aXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpLCBlbGVtZW50KTsKKyAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQs
IHNvdXJjZUNvZGUsIGxvYWRhYmxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9
CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBFbGVtZW50JiBlbGVtZW50KQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiBtb2R1bGVTY3JpcHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChD
YWNoZWRNb2R1bGVTYwogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCiAgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgYXV0byBy
ZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bGlua0FuZEV2YWx1YXRlTW9kdWxl
KHN0YXRlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZzdGF0ZS52bSgpLCBtb2R1bGVTY3JpcHQubW9k
dWxlS2V5KCkpLCB0b0pTKCZzdGF0ZSwgc2hlbGwud2luZG93KCksICZlbGVtZW50KSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byByZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKHN0YXRlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZz
dGF0ZS52bSgpLCBtb2R1bGVTY3JpcHQubW9kdWxlS2V5KCkpLCBqc1VuZGVmaW5lZCgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAg
ICAvLyBGSVhNRTogR2l2ZSBhIGNoYW5jZSB0byBkdW1wIHRoZSBzdGFjayB0cmFjZSBpZiB0aGUg
ImNyb3Nzb3JpZ2luIiBhdHRyaWJ1dGUgYWxsb3dzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTM5CkBAIC0yNDAsOSArMjQwLDkgQEAgSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdElu
V29ybGQoQ2FjaGVkTW9kdWxlU2MKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIEVsZW1lbnQmIGVsZW1lbnQpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hl
ZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQogewotICAgIHJldHVybiBsaW5rQW5kRXZhbHVh
dGVNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxk
KCksIGVsZW1lbnQpOworICAgIHJldHVybiBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldv
cmxkKG1vZHVsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VV
UkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
NTI2OGYwMTVhNThlMzhiYWU4ZWI5YzI2MTIwMThjMWFkZGNmNzA2Mi4uOWUyMGMyY2U5NmJmY2Mw
OTdmZjViYWUxOTEzZWVjZmYyNWI3MDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBDYWNoZWRNb2R1
bGVTY3JpcHQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxEb2N1bWVudDsKIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OworY2xhc3MgTG9hZGFibGVTY3JpcHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBXaWRnZXQ7CkBAIC0xMTMsMTMgKzEx
NCwxMyBAQCBjbGFzcyBTY3JpcHRDb250cm9sbGVyIHsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7
CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKIAotICAg
IHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3Qg
U3RyaW5nJiBtb2R1bGVOYW1lLCBET01XcmFwcGVyV29ybGQmLCBFbGVtZW50Jik7Ci0gICAgdm9p
ZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgRWxlbWVudCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEVsZW1lbnQmKTsKKyAgICB2b2lkIGxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBMb2FkYWJsZVNjcmlwdCYpOworICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRhYmxlU2Ny
aXB0JiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hl
ZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYp
OwogCi0gICAgSlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiAsIERPTVdyYXBwZXJXb3JsZCYsIEVsZW1lbnQmKTsKLSAgICBK
U0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlw
dCYsIEVsZW1lbnQmKTsKKyAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2Ny
aXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJik7CisgICAg
SlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3Jp
cHQmKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6
OkpTTW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGIz
ZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjgyYjZmMmNhOGIxNDVmZWQ5
YWYxMjQxMDk3MjM0MDk5YmYyODEyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMzEsMTUgKzMxLDE0IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEluaXRp
YXRvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTb3VyY2VDb2RlLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvU3ltYm9sLmg+CkBAIC0xMzYsOSAr
MTM1LDcgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNv
bHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmEKIAogSlNDOjpKU0ludGVybmFsUHJvbWlz
ZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2Jh
bE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IpCiB7Ci0gICAg
Ly8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGVzZSBhcmUgdHJ1ZT8gV2h5IGRvbid0IHdlIG5l
ZWQgdG8gY2hlY2s/Ci0gICAgQVNTRVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0VsZW1lbnQqPihp
bml0aWF0b3IpKTsKLSAgICBBU1NFUlQoaXNTY3JpcHRFbGVtZW50KEpTQzo6anNEeW5hbWljQ2Fz
dDxKU0VsZW1lbnQqPihpbml0aWF0b3IpLT53cmFwcGVkKCkpKTsKKyAgICBBU1NFUlQoSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNTY3JpcHRJbml0aWF0b3IqPihpbml0aWF0b3IpKTsKIAogICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGpz
R2xvYmFsT2JqZWN0KTsKICAgICBhdXRvJiBqc1Byb21pc2UgPSAqSlNDOjpKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgJmdsb2JhbE9iamVjdCk7CkBAIC0xNjQsNyArMTYx
LDcgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE8KICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2Rv
Y3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgYXV0byBsb2FkZXIgPSBDYWNoZWRNb2R1bGVTY3Jp
cHRMb2FkZXI6OmNyZWF0ZSgqdGhpcywgZGVmZXJyZWQuZ2V0KCkpOwogICAgICAgICBtX2xvYWRl
cnMuYWRkKGxvYWRlci5jb3B5UmVmKCkpOwotICAgICAgICBpZiAoIWxvYWRlci0+bG9hZChkb3du
Y2FzdFNjcmlwdEVsZW1lbnQoSlNDOjpqc0Nhc3Q8SlNFbGVtZW50Kj4oaW5pdGlhdG9yKS0+d3Jh
cHBlZCgpKSwgY29tcGxldGVkVVJMKSkgeworICAgICAgICBpZiAoIWxvYWRlci0+bG9hZChtX2Rv
Y3VtZW50LCAqc3RhdGljX2Nhc3Q8TG9hZGFibGVTY3JpcHQqPihKU0M6OmpzQ2FzdDxKU0M6OkpT
U2NyaXB0SW5pdGlhdG9yKj4oaW5pdGlhdG9yKS0+aW5pdGlhdG9yKCkpLCBjb21wbGV0ZWRVUkwp
KSB7CiAgICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgICAgICBtX2xv
YWRlcnMucmVtb3ZlKFdURk1vdmUobG9hZGVyKSk7CiAgICAgICAgICAgICBkZWZlcnJlZC0+cmVq
ZWN0KGZyYW1lLT5zY3JpcHQoKS5tb2R1bGVMb2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJv
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5k
ZXggOTA5NjFiOGVjYjgyMzNhY2U2NzY1OTY1OGE1NDdmMWIzNWQ3MzRiYi4uOThjYjA2ZGZiNzhj
NTNmOGJkNTY0ZmIyNzQxYTAwMzFhNDg0MWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTMzLDI2ICszMywyNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6Y3JlYXRlKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJiBjYWNoZWRT
Y3JpcHQpCitSZWY8TG9hZGFibGVDbGFzc2ljU2NyaXB0PiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9k
ZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5h
bWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7Ci0gICAgQVNTRVJUKGNhY2hlZFNj
cmlwdCk7Ci0gICAgYXV0byBzY3JpcHQgPSBhZG9wdFJlZigqbmV3IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdChXVEZNb3ZlKGNhY2hlZFNjcmlwdCkpKTsKLSAgICBjYWNoZWRTY3JpcHQtPmFkZENsaWVu
dChzY3JpcHQuZ2V0KCkpOwotICAgIHJldHVybiBzY3JpcHQ7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTG9hZGFibGVDbGFzc2ljU2NyaXB0KG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIGNoYXJz
ZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSk7CiB9CiAKIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdDo6fkxvYWRhYmxlQ2xhc3NpY1NjcmlwdCgpCiB7Ci0gICAgbV9jYWNo
ZWRTY3JpcHQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQor
ICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogYm9vbCBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmlzTG9hZGVkKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9j
YWNoZWRTY3JpcHQpOwogICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKTsKIH0K
IAogc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6ZXJyb3IoKSBjb25zdAogeworICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CiAgICAg
aWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybiBtX2Vycm9yOwogCkBAIC02NCwxMSArNjQsMTMg
QEAgc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6ZXJyb3IoKSBjb25zdAogCiBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2Fu
Y2VsZWQoKSBjb25zdAogeworICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CiAgICAgcmV0dXJu
IG1fY2FjaGVkU2NyaXB0LT53YXNDYW5jZWxlZCgpOwogfQogCiB2b2lkIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogeworICAg
IEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3Io
KS5pc0FjY2Vzc0NvbnRyb2woKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIkNyb3NzLW9yaWdpbiBzY3JpcHQgbG9h
ZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKTsKICAg
ICAgICAgbV9lcnJvciA9IEVycm9yIHsKQEAgLTEwNSw0ICsxMDcsMTQgQEAgdm9pZCBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQ6OmV4ZWN1dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCkKICAg
ICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVDbGFzc2ljU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUobV9j
YWNoZWRTY3JpcHQuZ2V0KCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFt
KSk7CiB9CiAKK2Jvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCit7CisgICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlw
dCk7CisgICAgbV9jYWNoZWRTY3JpcHQgPSByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50
LCBzb3VyY2VVUkwpOworICAgIGlmICghbV9jYWNoZWRTY3JpcHQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
CmluZGV4IGFkNDFkYzJhYjdkNDFkMGYxNWE4ZGIyMmEwZDA1NDY2Mzk0ZGNhYTkuLjZhM2EzMGMz
ZTcyYzI0N2FlN2Q1MzA0MWI4ZDk4ZDM4N2MwM2U2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTG9hZGFibGVD
bGFzc2ljU2NyaXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hl
ZFJlc291cmMKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZUNsYXNzaWNTY3JpcHQoKTsK
IAotICAgIHN0YXRpYyBSZWY8TG9hZGFibGVDbGFzc2ljU2NyaXB0PiBjcmVhdGUoQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmKTsKKyAgICBzdGF0aWMgUmVmPExvYWRhYmxlQ2xh
c3NpY1NjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAgYm9vbCBp
c0xvYWRlZCgpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IGZpbmFsOwpAQCAtNTIs
MTIgKzUyLDE3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBmaW5hbCA6IHB1YmxpYyBM
b2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiAKICAgICB2b2lkIGV4ZWN1dGUo
U2NyaXB0RWxlbWVudCYpIGZpbmFsOwogCisgICAgYm9vbCBsb2FkKERvY3VtZW50JiwgY29uc3Qg
VVJMJik7CisKIHByaXZhdGU6Ci0gICAgTG9hZGFibGVDbGFzc2ljU2NyaXB0KENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJiBjYWNoZWRTY3JpcHQpIDogbV9jYWNoZWRTY3JpcHQo
V1RGTW92ZShjYWNoZWRTY3JpcHQpKSB7IH0KKyAgICBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgICAgICA6IExvYWRhYmxlU2NyaXB0KG5vbmNlLCBj
cm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRTaGFk
b3dUcmVlKQorICAgIHsKKyAgICB9CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJikgZmluYWw7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+
IG1fY2FjaGVkU2NyaXB0OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4g
bV9jYWNoZWRTY3JpcHQgeyB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IG1fZXJyb3IgeyBz
dGQ6Om51bGxvcHQgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVT
Y3JpcHQuY3BwCmluZGV4IDg0Mjg3ZWU3YjFhM2U3MjQxZmE3ZTFmMDdjZTk4YTU0ZTA5YWZmZTYu
LjBlYjEwYjViNGRiYTcyOGU5YmQ0ZWVjYzJhMGIzMmUyZmZkMjIyZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcApAQCAtMzAsMTYgKzMwLDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBMb2FkYWJs
ZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQor
UmVmPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBp
c0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICBhdXRvIHNjcmlwdCA9IGFkb3B0UmVmKCpu
ZXcgTG9hZGFibGVNb2R1bGVTY3JpcHQobW9kdWxlU2NyaXB0KSk7Ci0gICAgbW9kdWxlU2NyaXB0
LmFkZENsaWVudChzY3JpcHQuZ2V0KCkpOwotICAgIHJldHVybiBzY3JpcHQ7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVNb2R1bGVTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9k
ZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUsIENhY2hl
ZE1vZHVsZVNjcmlwdDo6Y3JlYXRlKCkpKTsKIH0KIAotTG9hZGFibGVNb2R1bGVTY3JpcHQ6Okxv
YWRhYmxlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQotICAg
IDogbV9tb2R1bGVTY3JpcHQobW9kdWxlU2NyaXB0KQorTG9hZGFibGVNb2R1bGVTY3JpcHQ6Okxv
YWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwgUmVmPENhY2hlZE1v
ZHVsZVNjcmlwdD4mJiBtb2R1bGVTY3JpcHQpCisgICAgOiBMb2FkYWJsZVNjcmlwdChub25jZSwg
Y3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hh
ZG93VHJlZSkKKyAgICAsIG1fbW9kdWxlU2NyaXB0KFdURk1vdmUobW9kdWxlU2NyaXB0KSkKIHsK
KyAgICBtX21vZHVsZVNjcmlwdC0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogTG9hZGFibGVNb2R1
bGVTY3JpcHQ6On5Mb2FkYWJsZU1vZHVsZVNjcmlwdCgpCkBAIC03Miw0ICs3MiwxNCBAQCB2b2lk
IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpleGVjdXRlKFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1l
bnQpCiAgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlTW9kdWxlU2NyaXB0KG1fbW9kdWxlU2NyaXB0
LmdldCgpKTsKIH0KIAordm9pZCBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFVSTCYgcm9vdFVSTCkKK3sKKyAgICBtX21vZHVsZVNjcmlwdC0+bG9h
ZChkb2N1bWVudCwgcm9vdFVSTCwgKnRoaXMpOworfQorCit2b2lkIExvYWRhYmxlTW9kdWxlU2Ny
aXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSkKK3sKKyAgICBtX21vZHVsZVNjcmlwdC0+bG9hZChkb2N1bWVudCwgc291cmNlQ29k
ZSwgKnRoaXMpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVNb2R1bGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlw
dC5oCmluZGV4IGRkZWE5ZjhjYjA1MGFhYmJiYzFkZGJkMzc5ODE2MDJiNTA2ZTZiMjQuLjgzZjUz
OTFmNTJmYzkxM2VlMzE0N2U3OWY2YTExMWVjNDE5MjlkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIExvYWRhYmxl
TW9kdWxlU2NyaXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hl
ZE1vZHVsZVNjCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGFibGVNb2R1bGVTY3JpcHQoKTsK
IAotICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShDYWNoZWRNb2R1
bGVTY3JpcHQmKTsKKyAgICBzdGF0aWMgUmVmPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29s
IGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIAogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBm
aW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOwpAQCAt
NDksOCArNDksMTEgQEAgY2xhc3MgTG9hZGFibGVNb2R1bGVTY3JpcHQgZmluYWwgOiBwdWJsaWMg
TG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2FjaGVkTW9kdWxlU2MKIAogICAgIHZvaWQgc2V0RXJy
b3IoRXJyb3ImJik7CiAKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHJvb3RV
UkwpOworICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
KwogcHJpdmF0ZToKLSAgICBMb2FkYWJsZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQm
KTsKKyAgICBMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBT
dHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUsIFJl
ZjxDYWNoZWRNb2R1bGVTY3JpcHQ+JiYpOwogCiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRNb2R1bGVTY3JpcHQmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0xvYWRhYmxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5j
cHAKaW5kZXggZWZkYjZiODk0ODZkNDkzYzk4ZmIxZjViMzU3NmI0YzY5NjNlMGI0Yy4uZTE3MGM4
ZTAyZmUxZGNlYTFkZjBlOGE3NTIwZTUxOTgzNDIxMzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVTY3JpcHQuY3BwCkBAIC0yNiw3ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkxvYWRhYmxlU2NyaXB0LmgiCiAKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHRDbGllbnQuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDQgKzU5LDI1IEBAIHZv
aWQgTG9hZGFibGVTY3JpcHQ6Om5vdGlmeUNsaWVudEZpbmlzaGVkKCkKICAgICAgICAgY2xpZW50
LT5ub3RpZnlGaW5pc2hlZCgqdGhpcyk7CiB9CiAKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gTG9hZGFibGVTY3JpcHQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3QKK3sKKyAgICBhdXRvKiBzZXR0
aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5n
cy0+aXNTY3JpcHRFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNT
RVJUKGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBib29sIGhhc0tub3du
Tm9uY2UgPSBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRXaXRo
Tm9uY2UobV9ub25jZSwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSk7CisgICAgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucygpOworICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbiA9IGhhc0tub3duTm9uY2UgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9u
OjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1Bv
bGljeUNoZWNrOworCisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOworICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxs
eUNyb3NzT3JpZ2luKG1fY3Jvc3NPcmlnaW5Nb2RlLCBkb2N1bWVudCk7CisgICAgcmVxdWVzdC51
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoZG9jdW1lbnQpOworCisgICAgcmVxdWVzdC5z
ZXRDaGFyc2V0KG1fY2hhcnNldCk7CisgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0
b3JOYW1lKTsKKworICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJl
cXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlU2NyaXB0LmgKaW5kZXggYmEyMmZiMTViODE0ZDcxN2Q4ZDI3NGM4MDQ2ZmE5NTBlMjEzOTgx
YS4uNzJhMTg2MjA5NjkwOTllZjBjODRhMmJmMjExMDQzMWE1MzA3NzNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlU2NyaXB0LmgKQEAgLTI1LDE3ICsyNSwyMiBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkU2Ny
aXB0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIExv
YWRhYmxlU2NyaXB0Q2xpZW50OwogY2xhc3MgU2NyaXB0RWxlbWVudDsKK2NsYXNzIFVSTDsKIAot
Y2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxMb2FkYWJsZVNjcmlwdD4g
eworY2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMgSlNDOjpTY3JpcHRJbml0aWF0b3Igewog
cHVibGljOgogICAgIGVudW0gY2xhc3MgRXJyb3JUeXBlIHsKICAgICAgICAgQ2FjaGVkU2NyaXB0
LApAQCAtNjgsMTAgKzczLDI3IEBAIGNsYXNzIExvYWRhYmxlU2NyaXB0IDogcHVibGljIFJlZkNv
dW50ZWQ8TG9hZGFibGVTY3JpcHQ+IHsKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGFzc2ljU2NyaXB0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNb2R1bGVTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3VtZW50JiwgY29uc3QgVVJM
JiBzb3VyY2VVUkwpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CisgICAgTG9hZGFibGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgICAgICA6IG1fbm9uY2Uobm9uY2UpCisgICAgICAg
ICwgbV9jcm9zc09yaWdpbk1vZGUoY3Jvc3NPcmlnaW5Nb2RlKQorICAgICAgICAsIG1fY2hhcnNl
dChjaGFyc2V0KQorICAgICAgICAsIG1faW5pdGlhdG9yTmFtZShpbml0aWF0b3JOYW1lKQorICAg
ICAgICAsIG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUp
CisgICAgeworICAgIH0KKwogICAgIHZvaWQgbm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKIAogcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV9ub25jZTsKKyAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7
CisgICAgU3RyaW5nIG1fY2hhcnNldDsKKyAgICBBdG9taWNTdHJpbmcgbV9pbml0aWF0b3JOYW1l
OworICAgIGJvb2wgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZSB7IGZhbHNlIH07CisKICAgICBI
YXNoQ291bnRlZFNldDxMb2FkYWJsZVNjcmlwdENsaWVudCo+IG1fY2xpZW50czsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBmNjg2MzdhYzRkOTVjZTg4YTFmYjA1
NTMxZGZkYWZmNTAwMTQwMGZlLi5iNDMzZmJjMjg1ZjQ1ZDBlYTBhNjdhMTA5ZWVkZjE3ZjhiMzI4
OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yOTIsMTEgKzI5Miwx
NCBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RDbGFzc2ljU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQogCiAgICAgQVNTRVJUKCFtX2xvYWRhYmxlU2NyaXB0KTsKICAgICBpZiAo
IXN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhzb3VyY2VVUkwpLmlzRW1wdHkoKSkg
ewotICAgICAgICBTdHJpbmcgbm9uY2VBdHRyaWJ1dGUgPSBtX2VsZW1lbnQuYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om5vbmNlQXR0cik7Ci0gICAgICAgIFN0cmlu
ZyBjcm9zc09yaWdpbk1vZGUgPSBtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cik7Ci0gICAgICAgIGF1dG8gcmVxdWVzdCA9
IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUobV9lbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwo
c291cmNlVVJMKSwgbm9uY2VBdHRyaWJ1dGUsIGNyb3NzT3JpZ2luTW9kZSk7Ci0gICAgICAgIGlm
IChyZXF1ZXN0KSB7Ci0gICAgICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gTG9hZGFibGVDbGFz
c2ljU2NyaXB0OjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIGF1dG8gc2NyaXB0
ID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoCisgICAgICAgICAgICBtX2VsZW1lbnQu
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Om5vbmNlQXR0ciksCisg
ICAgICAgICAgICBtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksCisgICAgICAgICAgICBzY3JpcHRDaGFyc2V0KCksCisg
ICAgICAgICAgICBtX2VsZW1lbnQubG9jYWxOYW1lKCksCisgICAgICAgICAgICBtX2VsZW1lbnQu
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgICAgIGlmIChzY3JpcHQtPmxvYWQobV9l
bGVtZW50LmRvY3VtZW50KCksIG1fZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHNvdXJj
ZVVSTCkpKSB7CisgICAgICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gV1RGTW92ZShzY3JpcHQp
OwogICAgICAgICAgICAgbV9pc0V4dGVybmFsU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTMzOSw5ICszNDIsOSBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVT
Y3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgICAgICB9
CiAKICAgICAgICAgbV9pc0V4dGVybmFsU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgYXV0byBtb2R1
bGVTY3JpcHQgPSBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5N
b2RlKTsKLSAgICAgICAgbV9sb2FkYWJsZVNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpj
cmVhdGUobW9kdWxlU2NyaXB0LmdldCgpKTsKLSAgICAgICAgbW9kdWxlU2NyaXB0LT5sb2FkKG1f
ZWxlbWVudCwgbW9kdWxlU2NyaXB0Um9vdFVSTCk7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gTG9h
ZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRD
aGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKCkpOworICAgICAgICBzY3JpcHQtPmxvYWQobV9lbGVtZW50LmRvY3VtZW50KCks
IG1vZHVsZVNjcmlwdFJvb3RVUkwpOworICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gV1RGTW92
ZShzY3JpcHQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM1NCw0MiArMzU3
LDEyIEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0
UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQ
b2xpY3kuYWxsb3dJbmxpbmVTY3JpcHQobV9lbGVtZW50LmRvY3VtZW50KCkudXJsKCksIG1fc3Rh
cnRMaW5lTnVtYmVyLCBzb3VyY2VDb2RlLnNvdXJjZSgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmco
KSwgaGFzS25vd25Ob25jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gbW9k
dWxlU2NyaXB0ID0gQ2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2lu
TW9kZSk7Ci0gICAgbV9sb2FkYWJsZVNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVh
dGUobW9kdWxlU2NyaXB0LmdldCgpKTsKLSAgICBtb2R1bGVTY3JpcHQtPmxvYWQobV9lbGVtZW50
LCBzb3VyY2VDb2RlKTsKKyAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpj
cmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQu
bG9jYWxOYW1lKCksIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICBz
Y3JpcHQtPmxvYWQobV9lbGVtZW50LmRvY3VtZW50KCksIHNvdXJjZUNvZGUpOworICAgIG1fbG9h
ZGFibGVTY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNj
cmlwdFdpdGhDYWNoZUZvck1vZHVsZVNjcmlwdChjb25zdCBVUkwmIHNvdXJjZVVSTCkKLXsKLSAg
ICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7Ci0gICAgQVNTRVJUKGlzPExvYWRhYmxlTW9kdWxl
U2NyaXB0PigqbV9sb2FkYWJsZVNjcmlwdCkpOwotICAgIGF1dG8mIG1vZHVsZVNjcmlwdCA9IGRv
d25jYXN0PExvYWRhYmxlTW9kdWxlU2NyaXB0PigqbV9sb2FkYWJsZVNjcmlwdCk7Ci0gICAgcmV0
dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoc291cmNlVVJMLCBtb2R1bGVTY3JpcHQubW9kdWxl
U2NyaXB0KCkubm9uY2UoKSwgbW9kdWxlU2NyaXB0Lm1vZHVsZVNjcmlwdCgpLmNyb3NzT3JpZ2lu
TW9kZSgpKTsKLX0KLQotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRF
bGVtZW50OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25z
dCBTdHJpbmcmIG5vbmNlQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkK
LXsKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBh
dXRvKiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7Ci0gICAgaWYgKHNldHRpbmdzICYm
ICFzZXR0aW5ncy0+aXNTY3JpcHRFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgQVNTRVJUKGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKLSAgICBib29s
IGhhc0tub3duTm9uY2UgPSBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dT
Y3JpcHRXaXRoTm9uY2Uobm9uY2VBdHRyaWJ1dGUsIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hh
ZG93VHJlZSgpKTsKLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJl
c291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7Ci0gICAgb3B0aW9u
cy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7Ci0KLSAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9ucyk7Ci0g
ICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4oY3Jvc3NPcmlnaW5Nb2RlLCBk
b2N1bWVudCk7Ci0gICAgcmVxdWVzdC51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoZG9j
dW1lbnQpOwotCi0gICAgcmVxdWVzdC5zZXRDaGFyc2V0KHNjcmlwdENoYXJzZXQoKSk7Ci0gICAg
cmVxdWVzdC5zZXRJbml0aWF0b3IoJmVsZW1lbnQoKSk7Ci0KLSAgICByZXR1cm4gZG9jdW1lbnQu
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpOwot
fQotCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVDbGFzc2ljU2NyaXB0KGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgQVNTRVJUKG1fYWxyZWFkeVN0YXJ0ZWQp
OwpAQCAtNDMwLDcgKzQwMyw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZU1vZHVsZVNj
cmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCkKICAgICBJZ25vcmVEZXN0cnVj
dGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5j
cmVtZW50ZXIoJmRvY3VtZW50KTsKICAgICBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIgY3VycmVu
dFNjcmlwdEluY3JlbWVudGVyKGRvY3VtZW50LCBtX2VsZW1lbnQpOwogCi0gICAgZnJhbWUtPnNj
cmlwdCgpLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQsIGVsZW1lbnQo
KSk7CisgICAgZnJhbWUtPnNjcmlwdCgpLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChtb2R1
bGVTY3JpcHQpOwogfQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRBbmREaXNw
YXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oCmluZGV4IDVmMTgxZGYyZTNiMGU4ODhlZjM5NDdiYmNkYzE4ZDkzMDdkZGVi
MWEuLjAzMDI1Zjg2ZDBiNGU1MGZlOWYxODAyYTQ0NmM2YzVmMDdlMmMxYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtNjYsOCArNjYsNiBAQCBjbGFzcyBTY3JpcHRFbGVtZW50
IHsKICAgICBib29sIHdpbGxFeGVjdXRlSW5PcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbEV4
ZWN1dGVJbk9yZGVyOyB9CiAgICAgTG9hZGFibGVTY3JpcHQqIGxvYWRhYmxlU2NyaXB0KCkgeyBy
ZXR1cm4gbV9sb2FkYWJsZVNjcmlwdC5nZXQoKTsgfQogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU2NyaXB0PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KGNv
bnN0IFVSTCYpOwotCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc2NyaXB0aW5nLmh0bWwjY29uY2VwdC1zY3JpcHQtdHlwZQogICAgIGVudW0gY2xhc3MgU2Ny
aXB0VHlwZSB7IENsYXNzaWMsIE1vZHVsZSB9OwogICAgIFNjcmlwdFR5cGUgc2NyaXB0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNNb2R1bGVTY3JpcHQgPyBTY3JpcHRUeXBlOjpNb2R1bGUgOiBT
Y3JpcHRUeXBlOjpDbGFzc2ljOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298545</attachid>
            <date>2017-01-10 18:49:59 -0800</date>
            <delta_ts>2017-01-10 19:15:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166888-20170111114821.patch</filename>
            <type>text/plain</type>
            <size>59184</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODY4MjFhZGVmYWJlOGY4ZGE4YzMyMjcyNGU0N2YyYmM1NWQwNGFjLi44Y2RjM2FjM2E4YWY3OTYy
MDlkMzY1ZTQzMjZkZGI2NDZkMGExNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMyBAQAogMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBT
Y3JpcHRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU2NyaXB0SW5pdGlhdG9yIGFuZCBKU1NjcmlwdEluaXRpYXRvci4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNw
cC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmRlc3Ryb3kpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU2Ny
aXB0SW5pdGlhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NjcmlwdElu
aXRpYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmluaXRp
YXRvcik6CisgICAgICAgIChKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpKU1NjcmlwdEluaXRpYXRv
cik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEluaXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3Jp
cHQuY3BwLgorICAgICAgICAoSlNDOjpTY3JpcHRJbml0aWF0b3I6On5TY3JpcHRJbml0aWF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKworMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgSlNTb3VyY2VDb2RlIHRvIHBy
b3BhZ2F0ZSBTb3VyY2VDb2RlIGluIG1vZHVsZSBwaXBlbGluZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODYxCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDY2
ZDE1YjU0MjJjZTUzZTZjZDFhNDk2YzI5ZjQzY2M2Njc0NGNmLi4wMTdmZjFiODUwZDAwNjY4MjI2
ZTAzZWExYTFlZDc3NWYxYTBiODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzQgQEAKIDIwMTct
MDEtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAg
RGVjb3VwbGUgbW9kdWxlIGxvYWRpbmcgaW5pdGlhdG9yIGZyb20gU2NyaXB0RWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
d2UgdXNlIFNjcmlwdEVsZW1lbnQgKEpTRWxlbWVudCBmb3IgU2NyaXB0RWxlbWVudCkgYXMgdGhl
IG1vZHVsZSBsb2FkaW5nIGluaXRpYXRvci4KKyAgICAgICAgVGhpcyBlbGVtZW50IGlzIHVzZWQg
dG8gdHJhbnNmZXIgdGhlIG1ldGFkYXRhIGxpa2UgY2hhcnNldCB0aHJvdWdob3V0IHRoZSBtb2R1
bGUgcGlwZWxpbmUuCisgICAgICAgIEFzIGEgcmVzdWx0LCBvdXIgbW9kdWxlIGxvYWRlciBpbiB0
aGUgYnJvd3NlciBzaWRlIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIFNjcmlwdEVsZW1lbnQuCisg
ICAgICAgIEl0IGlzIG5vdCBnb29kIHNpbmNlIGl0IHByZXZlbnQgdXMgZnJvbSB1c2luZyB0aGUg
bW9kdWxlIGxvYWRlciBpbiB0aGUgbm9uLURPTSBlbnZpcm9ubWVudCBsaWtlCisgICAgICAgIFdl
YiBXb3JrZXJzLgorCisgICAgICAgIFNvIHdlIGRlY291cGxlIHRoZSBuZWNlc3NhcnkgaW5mb3Jt
YXRpb25zIGZyb20gU2NyaXB0RWxlbWVudC4gV2UgbW92ZSB0aGVzZSBpbmZvcm1hdGlvbiB0bwor
ICAgICAgICBMb2FkYWJsZVNjcmlwdC4gQW5kIHdlIHVzZSBKU1NjcmlwdEluaXRpYXRvciB0byB0
cmFuc2ZlciBMb2FkYWJsZVNjcmlwdCB0aHJvdWdoIHRoZSBKUyBpbXBsZW1lbnRlZAorICAgICAg
ICBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lLiBXZSBzZWxlY3QgTG9hZGFibGVTY3JpcHQgaW5zdGVh
ZCBvZiBMb2FkYWJsZU1vZHVsZVNjcmlwdCBzaW5jZSB0aGlzIGluaXRpYXRvcgorICAgICAgICBp
bmZvcm1hdGlvbiB3aWxsIGJlIGxldmVyYWdlZCBldmVuIGluIGNsYXNzaWMgc2NyaXB0cyBvbmNl
IHdlIGltcGxlbWVudCB0aGUgZHluYW1pYyBpbXBvcnQuCisKKyAgICAgICAgTm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1NjcmlwdElu
aXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQu
Y3BwLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0SW5pdGlhdG9y
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAuCisg
ICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZE1vZHVsZVNjcmlwdDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVT
Y3JpcHQ6OkNhY2hlZE1vZHVsZVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgIE5vdyB3ZSBjYW4gbWVyZ2UgQ2FjaGVk
TW9kdWxlU2NyaXB0IHRvIExvYWRhYmxlU2NyaXB0LiBCdXQgd2UgZG8gbm90IGRvIHRoaXMgaW4g
dGhpcyBwYXRjaCBzaW5jZQorICAgICAgICB3ZSBmb2N1cyBvbiBkZWNvdXBsaW5nIHRoZSBpbml0
aWF0b3IgaW5mb3JtYXRpb24gZnJvbSBTY3JpcHRFbGVtZW50LgorCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRNb2R1bGVTY3JpcHQ6Om5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZE1vZHVsZVNjcmlwdDo6Y3Jvc3NPcmlnaW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6On5Mb2FkYWJsZUNsYXNzaWNT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojppc0xvYWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2FuY2VsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQpOgorICAgICAgICAq
IGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVNb2R1
bGVTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVN
b2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6Omxv
YWQpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRv
bS9Mb2FkYWJsZVNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxlU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6TG9hZGFibGVTY3JpcHQpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZU1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisKKzIwMTctMDEtMTAgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgSW1wbGVtZW50
IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg2MQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA1YjhkOTRhMjYwMzVjMzI0
OTNjMTMyMzRjMGQ3MmMyZDhlOWQ4ZC4uZjYwMTViNDkyMGI0MGQ4YmI1OGQyOWZjYzA5ODg2M2Rl
YzYzMThkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzg0LDYgKzc4
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pT
U2NvcGUuY3BwCisgICAgcnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5jcHAKICAgICBydW50aW1l
L0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1NldC5jcHAKICAg
ICBydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc2Mzg0ZmFjNzExYmU3ZjMzNGI4Zjg4NmZmMDYxNjMyNzQxNTVlMmEuLmYyMDM2MGQyMDZi
YThiODRhOTE5YTUxYmRhZTk1OWNlZTNhNzU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMzcyLDYgKzIzNzIsOSBAQAogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyog
SlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkEzQUIyMTFD
ODQ5NDUyNEFCMzkwMjY3IC8qIEpTU291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNT
b3VyY2VDb2RlLmNwcCAqLzsgfTsKIAkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0ODE1RjVGOTkxQzQ2QkVCOThE
MDAxNiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxMUMxOTdDMjYyNDg0OEVEQTg0Q0VEN0YgLyogSlNTY3JpcHRJ
bml0aWF0b3IuY3BwICovOyB9OworCQk5MDY0MzM3REQ0QjA0MDJCQUYzNEE1OTIgLyogSlNTY3Jp
cHRJbml0aWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1NjcmlwdEluaXRpYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFQUU3RDdCODg5
QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRJbml0aWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3Jp
cHRJbml0aWF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00OTAwLDYgKzQ5MDMsOSBAQAogCQlGRUZENkZD
NTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU291cmNlQ29kZS5jcHA7IHBhdGgg
PSBKU1NvdXJjZUNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1
REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTU291cmNlQ29kZS5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBKU1Nj
cmlwdEluaXRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U1NjcmlwdEluaXRpYXRvci5jcHA7IHBhdGggPSBKU1NjcmlwdEluaXRpYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEluaXRpYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1Njcmlw
dEluaXRpYXRvci5oOyBwYXRoID0gSlNTY3JpcHRJbml0aWF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEluaXRpYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JpcHRJbml0aWF0b3IuaDsg
cGF0aCA9IFNjcmlwdEluaXRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyog
RW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02NzQwLDYgKzY3NDYsOSBAQAogCQkJCTQyNUJBMTMz
N0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLywKIAkJCQlGNzM5MjY5MThEQzY0
MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLywKIAkJCQkzMDMyMTc1REYxQUQ0N0Q4
OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8sCisJCQkJMTFDMTk3QzI2MjQ4NDhFREE4NENF
RDdGIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmNwcCAqLywKKwkJCQk2QkE5M0M5NTkwNDg0QzVCQUQ5
MzE2RUEgLyogSlNTY3JpcHRJbml0aWF0b3IuaCAqLywKKwkJCQk4ODUyMTUxQTlDMzg0MjM4OUIz
MjE1QjcgLyogU2NyaXB0SW5pdGlhdG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTExNCw2ICs5MTIzLDggQEAKIAkJCQk4
NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkwNjQzMzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1Njcmlw
dEluaXRpYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VBRTdEN0I4ODlCNDc3QkE5M0FCQTZD
IC8qIFNjcmlwdEluaXRpYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMDUwMiw2ICsxMDUxMyw3
IEBACiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTNBQjIxMUM4NDk0NTI0QUIzOTAyNjcgLyog
SlNTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0ODE1RjVGOTkxQzQ2QkVCOThE
MDAxNiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNmNiMjFjZDcxY2JlMWI2NjA2ZDU4
MjM5MmJiOWRlNDQ0YjNjM2I1OC4uOGI2MTVhMWEzYTUxNTEwNTk2NzIwNjVkNDcyYjdlOGFlODU4
Njk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE1
NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAg
IAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNTRVJU
KFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIyKTsK
LSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyMyk7Ci0gICAgU1RBVElDX0FT
U0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNSk7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5cGUg
PT0gMzMpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNCk7Ci0gICAg
U1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTIpOwotICAgIFNUQVRJQ19BU1NFUlQo
SW50OEFycmF5VHlwZSA9PSAzNSk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlwZSA9
PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzNyk7Ci0gICAgU1RB
VElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50
OENsYW1wZWRBcnJheVR5cGUgPT0gMzkpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJyYXlU
eXBlID09IDQwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0MSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQyKTsKLSAgICBTVEFUSUNfQVNT
RVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0VHlw
ZSA9PSAyMyk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjQpOworICAg
IFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjYpOworICAgIFNUQVRJQ19BU1NFUlQo
QXJyYXlUeXBlID09IDM0KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUgPT0g
MzUpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDUzKTsKKyAgICBTVEFU
SUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MTZB
cnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzgp
OworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzkpOworICAgIFNUQVRJQ19B
U1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQwKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVp
bnQxNkFycmF5VHlwZSA9PSA0MSk7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUg
PT0gNDIpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0Myk7CisgICAg
U1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ0KTsKICAgICBTVEFUSUNfQVNTRVJU
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWIzMjgyNjE4OTcy
MmNlZmZlNTI3NmJjNmQ0ZGU5ZmRkYWU4OTcxYi4uZWMyNDc3M2EzMDA0NTc2YzRiZGQxNGNmZTA0
MzA3ODNjNjkzYzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmlu
Z1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIyCi1j
b25zdCBGaW5hbE9iamVjdFR5cGUgPSAyMwotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNQotY29u
c3QgQXJyYXlUeXBlID0gMzMKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNAotY29uc3QgUHJv
eHlPYmplY3RUeXBlID0gNTIKK2NvbnN0IE9iamVjdFR5cGUgPSAyMworY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMjQKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjYKK2NvbnN0IEFycmF5VHlwZSA9
IDM0Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzUKK2NvbnN0IFByb3h5T2JqZWN0VHlwZSA9
IDUzCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBw
YXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNo
IHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFycmF5
VHlwZSA9IDM1Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQzMkFycmF5VHlw
ZSA9IDM3Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM4Ci1jb25zdCBVaW50OENsYW1wZWRBcnJh
eVR5cGUgPSAzOQotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDAKLWNvbnN0IFVpbnQzMkFycmF5
VHlwZSA9IDQxCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDIKLWNvbnN0IEZsb2F0NjRBcnJh
eVR5cGUgPSA0MworY29uc3QgSW50OEFycmF5VHlwZSA9IDM2Citjb25zdCBJbnQxNkFycmF5VHlw
ZSA9IDM3Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM4Citjb25zdCBVaW50OEFycmF5VHlwZSA9
IDM5Citjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MAorY29uc3QgVWludDE2QXJyYXlU
eXBlID0gNDEKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQyCitjb25zdCBGbG9hdDMyQXJyYXlU
eXBlID0gNDMKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NAogCiBjb25zdCBGaXJzdEFycmF5
VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJyYXlU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdElu
aXRpYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEluaXRp
YXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlNGJhYTIzODM5NGY4ZGMyZDI3M2VhOWY1ZjI2YzJjNjQz
OGZmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NyaXB0SW5pdGlhdG9yLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTU2NyaXB0SW5pdGlhdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNTY3JpcHRJbml0aWF0b3I6OnNf
aW5mbyA9IHsgIkpTU2NyaXB0SW5pdGlhdG9yIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1NjcmlwdEluaXRpYXRvcikgfTsKKwordm9pZCBKU1NjcmlwdEluaXRpYXRv
cjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNTY3JpcHRJbml0
aWF0b3IqPihjZWxsKS0+fkpTU2NyaXB0SW5pdGlhdG9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJ
bml0aWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzAxMDhjMGU4ODI2ODIyZWIzYTA0ZDEzNWVhN2Q0ZTVkNTg5YmY2
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Ny
aXB0SW5pdGlhdG9yLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdElu
aXRpYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNTY3JpcHRJbml0aWF0b3Ig
OiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDZWxsOworCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNT
Y3JpcHRJbml0aWF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTU2NyaXB0SW5pdGlhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisgICAgeworICAg
ICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NjcmlwdElu
aXRpYXRvcj4odm0uaGVhcCkpIEpTU2NyaXB0SW5pdGlhdG9yKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW5pdGlhdG9yKSk7CisgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBKU1NjcmlwdEluaXRpYXRv
ciogY3JlYXRlKFZNJiB2bSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisg
ICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCB2bS5zY3JpcHRJbml0aWF0b3JTdHJ1Y3R1
cmUuZ2V0KCksIFdURk1vdmUoaW5pdGlhdG9yKSk7CisgICAgfQorCisgICAgU2NyaXB0SW5pdGlh
dG9yKiBpbml0aWF0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5pdGlhdG9y
LmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKK3By
aXZhdGU6CisgICAgSlNTY3JpcHRJbml0aWF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQorICAgICAgICAsIG1faW5pdGlhdG9yKFdURk1vdmUoaW5pdGlhdG9yKSkK
KyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4gbV9pbml0aWF0b3I7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKaW5kZXggYWUxODRkZTI3ZGU4ZmEyYzdiMWVmOTc5NzVlYWM2YmViYjE2MzM2NC4uYWZi
ZWEzODYwZTRkNmIzNjdmYTQ3ZmM3MTY1YmQ5OTg2ZTE5YmZiZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50
OF90IHsKIAogICAgIEpTRml4ZWRBcnJheVR5cGUsCiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKKyAg
ICBKU1NjcmlwdEluaXRpYXRvclR5cGUsCiAKICAgICAvLyBUaGUgT2JqZWN0VHlwZSB2YWx1ZSBt
dXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0
LgogICAgIE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRJbml0aWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEluaXRpYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNmQ1MTgyNzhkNGY1NmJiOTM1ZGE2YTE4Njhl
NWZjZDgwZDc5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRJbml0aWF0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2NyaXB0
SW5pdGlhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0SW5pdGlhdG9yPiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+U2NyaXB0SW5pdGlhdG9yKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzOGU5OWFkMTY0OWYx
MWI0ZTg0Y2QwZDRiM2Y0MTg2YTM1MjBiOTRhLi42MjZhNDMwM2JkNjQ2NmQ3MzZjODI3MzQ2OGM2
Y2M1M2QxOGIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03MSw2
ICs3MSw3IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpT
U2NyaXB0SW5pdGlhdG9yLmgiCiAjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgpAQCAt
MjQwLDYgKzI0MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZml4ZWRBcnJheVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTRml4ZWRBcnJheTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHNvdXJjZUNvZGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NvdXJjZUNvZGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBzY3JpcHRJbml0aWF0b3JT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NjcmlwdEluaXRpYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhp
cywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRlbXBs
YXRlUmVnaXN0cnlLZXlTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IDNlYmVkNzNlNWJhMTE4NWI1NzRjZDM3Mjc0OWM0YjBhMTdlMTY5Mjcu
LmU1YzdhMTc5YTY3Y2QxZWUxZjY2ZWYzMDQyMjcwMDljMDkwNWUxMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMzI3LDYgKzMyNyw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sVGFi
bGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZml4ZWRBcnJheVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBzb3VyY2VDb2RlU3RydWN0dXJlOworICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHNjcmlwdEluaXRpYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VB
cnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlUmVn
aXN0cnlLZXlTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0
OTk0NmQ3ODg5MzNlY2QwMTRmYzBhOGE0MTk1ZWRhYzhhM2IwMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0
b3IuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTY3JpcHRJbml0aWF0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0SW5pdGlhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNDhk
NmRjMDk5ZTJkMTMyNGUxMjk1OWU3YTlhODM5ZTdkZWMzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5o
CkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRJbml0aWF0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHQuY3BwCmluZGV4IDRiZWYyYThhYTgzOGQ3NjE3MzMzZTMwZmQyNmQ5YWJkMWI3
ZWVkODcuLjBmZWM0YjU5YjFkMmQzMTRkODA0MmY3MTEzYWZiOTk5NGM1Njg2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcApAQCAt
MjksMzggKzI5LDMwIEBACiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9kdWxlU2NyaXB0Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUp
CitSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0KG5vbmNlLCBjcm9z
c09yaWdpbk1vZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRNb2R1bGVTY3Jp
cHQoKSk7CiB9CiAKLUNhY2hlZE1vZHVsZVNjcmlwdDo6Q2FjaGVkTW9kdWxlU2NyaXB0KGNvbnN0
IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQotICAgIDogbV9u
b25jZShub25jZSkKLSAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKK3Zv
aWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiByb290VVJMLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7CisgICAgaWYgKGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxv
YWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIGxvYWRhYmxlU2NyaXB0KTsK
IH0KIAotdm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBj
b25zdCBVUkwmIHJvb3RVUkwpCit2b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxl
U2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBpbml0aWF0
b3IuZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVs
ZVNjcmlwdCgqdGhpcywgcm9vdFVSTC5zdHJpbmcoKSwgaW5pdGlhdG9yKTsKLX0KLQotdm9pZCBD
YWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQotewotICAgIGlmIChhdXRvKiBmcmFtZSA9IGluaXRpYXRv
ci5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxl
U2NyaXB0KCp0aGlzLCBzb3VyY2VDb2RlLCBpbml0aWF0b3IpOworICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxl
U2NyaXB0KCp0aGlzLCBzb3VyY2VDb2RlLCBsb2FkYWJsZVNjcmlwdCk7CiB9CiAKIHZvaWQgQ2Fj
aGVkTW9kdWxlU2NyaXB0Ojpub3RpZnlMb2FkQ29tcGxldGVkKFVuaXF1ZWRTdHJpbmdJbXBsJiBt
b2R1bGVLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdC5oCmluZGV4IDllYWE3NmI0ZWRlYWNjMzg3MDBlZGMwNTVkOWQ0MDhmMmQwNDNjMDIuLjU2
MmQ5M2QwNjNiMWY0ZWM0ZWNlZTdiYTY5N2I5MmI1NjI5NTMxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCkBAIC0zMiwxNSArMzIsMTMg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50
OwotY2xhc3MgRWxlbWVudDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVk
TW9kdWxlU2NyaXB0PiB7CiBwdWJsaWM6CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVsZUtl
eSgpIHsgcmV0dXJuIG1fbW9kdWxlS2V5LmdldCgpOyB9CiAKLSAgICB2b2lkIGV2YWx1YXRlKEVs
ZW1lbnQmKTsKLQogICAgIHZvaWQgbm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3RyaW5nSW1w
bCYgbW9kdWxlS2V5KTsKICAgICB2b2lkIG5vdGlmeUxvYWRGYWlsZWQoTG9hZGFibGVTY3JpcHQ6
OkVycm9yJiYpOwogICAgIHZvaWQgbm90aWZ5TG9hZFdhc0NhbmNlbGVkKCk7CkBAIC01MiwyMyAr
NTAsMTYgQEAgY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0PiB7CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkTW9kdWxlU2NyaXB0
Q2xpZW50Jik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50
Jik7CiAKLSAgICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKLQotICAgIHZvaWQg
bG9hZChFbGVtZW50JiBpbml0aWF0b3IsIGNvbnN0IFVSTCYgcm9vdFVSTCk7Ci0gICAgdm9pZCBs
b2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIHN0
YXRpYyBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiBjcmVhdGUoKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgbm9uY2UoKSBjb25zdCB7IHJldHVybiBtX25vbmNlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorICAg
IHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9vdFVSTCwgTG9hZGFibGVTY3JpcHQm
KTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9h
ZGFibGVTY3JpcHQmKTsKIAogcHJpdmF0ZToKLSAgICBDYWNoZWRNb2R1bGVTY3JpcHQoY29uc3Qg
U3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpOwotCiAgICAgdm9p
ZCBub3RpZnlDbGllbnRGaW5pc2hlZCgpOwogCiAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiBtX21vZHVsZUtleTsKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRNb2R1bGVTY3JpcHRDbGll
bnQqPiBtX2NsaWVudHM7Ci0gICAgU3RyaW5nIG1fbm9uY2U7Ci0gICAgU3RyaW5nIG1fY3Jvc3NP
cmlnaW5Nb2RlOwogICAgIHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vy
cm9yOwogICAgIGJvb2wgbV93YXNDYW5jZWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTG9h
ZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGM0OTljZGEyNGQyMjhmZmRmZTk5NGVk
NDZjYTdiMDYxZDYzOWIwZWEuLjYwYmRkNDg1Y2FiMzU4YzlhYzVlNzk3OTFmNWFiZDgyOTRlNDAx
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyLmNwcApAQCAtMjYsMTQgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgiCiAKLSNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgog
I2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKIApAQCAtNTgsMTAgKzU3LDEwIEBAIENhY2hl
ZE1vZHVsZVNjcmlwdExvYWRlcjo6fkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcigpCiAgICAgfQog
fQogCi1ib29sIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bG9hZChTY3JpcHRFbGVtZW50JiBz
Y3JpcHRFbGVtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK2Jvb2wgQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyOjpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgTG9hZGFibGVTY3JpcHQmIGxvYWRh
YmxlU2NyaXB0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVk
U2NyaXB0KTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IHNjcmlwdEVsZW1lbnQucmVxdWVzdFNjcmlw
dFdpdGhDYWNoZUZvck1vZHVsZVNjcmlwdChzb3VyY2VVUkwpOworICAgIG1fY2FjaGVkU2NyaXB0
ID0gbG9hZGFibGVTY3JpcHQucmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNl
VVJMKTsKICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmgKaW5kZXggOGIzNWZjYjg3YWY2MDdkNzZkMjZiZWQ3ODgyNmNlOWVkMzBlNmRjNi4u
MzJmZGUzYmZhNzI0ZDUyNTc5ZDIxNGU1N2U0NmQ2M2E1NTczNDYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAg
LTM2LDggKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyQ2xpZW50OwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLWNsYXNzIFNj
cmlwdEVsZW1lbnQ7CitjbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFVSTDsKIAogY2xhc3Mg
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00
Niw3ICs0Nyw3IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlCiAKICAgICB2aXJ0dWFsIH5DYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIoKTsKIAotICAgIGJvb2wgbG9hZChTY3JpcHRFbGVtZW50Jiwg
Y29uc3QgVVJMJiBzb3VyY2VVUkwpOworICAgIGJvb2wgbG9hZChEb2N1bWVudCYsIExvYWRhYmxl
U2NyaXB0JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwpOwogCiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNo
ZWRTY3JpcHQoKSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDM3YzllZGYz
NmU5Y2YzYWYwM2I1YmUzOGIwNDNkYThlMDNlNTkxNzUuLjlmNjUxNTQzN2UwMTE3YTNhZTZjYmM0
MTk0MWIxZTVlMjhjNGE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNv
bGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3
QmFzZS5oIgotI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMTg2LDM5
ICsxODYsMzkgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb24KICAgICByZXR1cm4gZXZhbHVhdGVJ
bldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQm
IG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYg
bG9hZGFibGVTY3JpcHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3
b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsK
IAotICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUo
c3RhdGUsIG1vZHVsZU5hbWUsIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQp
KTsKKyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxl
KHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpjcmVhdGUoc3RhdGUu
dm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNj
cmlwdCkKIHsKLSAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVs
ZU5hbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBlbGVtZW50KTsKKyAgICBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVsZU5hbWUsIGxvYWRhYmxlU2NyaXB0LCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3Jp
cHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQpKTsK
KyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0
YXRlLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpj
cmVhdGUoc3RhdGUudm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxl
U2NyaXB0SGFuZGxlcnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1v
ZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRWxlbWVudCYg
ZWxlbWVudCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRN
b2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewotICAgIGxvYWRNb2R1bGVT
Y3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdv
cmxkKCksIGVsZW1lbnQpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlw
dCwgc291cmNlQ29kZSwgbG9hZGFibGVTY3JpcHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsK
IH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEVsZW1lbnQmIGVsZW1lbnQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVT
Y3JpcHQmIG1vZHVsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIApAQCAtMjMwLDcgKzIzMCw3IEBAIEpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxk
KENhY2hlZE1vZHVsZVNjCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBhdXRv
IHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUoc3RhdGUsIElkZW50aWZpZXI6OmZyb21VaWQoJnN0YXRlLnZtKCksIG1vZHVsZVNjcmlwdC5t
b2R1bGVLZXkoKSksIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICBhdXRvIHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoc3RhdGUsIElkZW50aWZpZXI6OmZyb21VaWQo
JnN0YXRlLnZtKCksIG1vZHVsZVNjcmlwdC5tb2R1bGVLZXkoKSksIGpzVW5kZWZpbmVkKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBHaXZlIGEgY2hhbmNlIHRvIGR1bXAgdGhlIHN0YWNrIHRyYWNlIGlmIHRo
ZSAiY3Jvc3NvcmlnaW4iIGF0dHJpYnV0ZSBhbGxvd3MuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MzkKQEAgLTI0MCw5ICsyNDAsOSBAQCBK
U0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZChDYWNoZWRNb2R1bGVTYwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChD
YWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgRWxlbWVudCYgZWxlbWVudCkKK0pTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCiB7Ci0gICAgcmV0dXJuIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgZWxlbWVudCk7CisgICAgcmV0dXJuIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdElu
V29ybGQobW9kdWxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgSlNNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCA1MjY4ZjAxNWE1OGUzOGJhZThlYjljMjYxMjAxOGMxYWRkY2Y3MDYyLi45ZTIwYzJjZTk2YmZj
YzA5N2ZmNWJhZTE5MTNlZWNmZjI1YjcwOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIENhY2hlZE1v
ZHVsZVNjcmlwdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgSFRN
TFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFdpZGdldDsKQEAgLTExMywxMyAr
MTE0LDEzIEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRy
KTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwogCi0g
ICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIERPTVdyYXBwZXJXb3JsZCYsIEVsZW1lbnQmKTsKLSAgICB2
b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBFbGVtZW50Jik7Ci0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChD
YWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldv
cmxkJiwgRWxlbWVudCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVT
Y3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRWxlbWVudCYpOworICAgIHZvaWQgbG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQg
bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIExvYWRhYmxlU2NyaXB0Jik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9hZGFibGVT
Y3JpcHQmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRhYmxlU2NyaXB0
Jik7CiAKLSAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJiwgRWxlbWVudCYpOwotICAg
IEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiwgRWxlbWVudCYpOworICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgLCBET01XcmFwcGVyV29ybGQmKTsKKyAg
ICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNj
cmlwdCYpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpT
Qzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXgg
YjNmNjViMmMzMzJlNDY5ZTE0OGRiYjUzMjE4OWVjOWIxNDM1YWZkNC4uODJiNmYyY2E4YjE0NWZl
ZDlhZjEyNDEwOTcyMzQwOTliZjI4MTI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0zMSwxNSArMzEsMTQgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCi0jaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVNb2R1bGVT
Y3JpcHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9TeW1ib2wuaD4KQEAgLTEzNiw5
ICsxMzUsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJl
c29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYQogCiBKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xv
YmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpT
Qzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSwgSlNDOjpKU1ZhbHVlIGluaXRpYXRvcikKIHsKLSAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZXNlIGFyZSB0cnVlPyBXaHkgZG9uJ3Qgd2Ug
bmVlZCB0byBjaGVjaz8KLSAgICBBU1NFUlQoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRWxlbWVudCo+
KGluaXRpYXRvcikpOwotICAgIEFTU0VSVChpc1NjcmlwdEVsZW1lbnQoSlNDOjpqc0R5bmFtaWND
YXN0PEpTRWxlbWVudCo+KGluaXRpYXRvciktPndyYXBwZWQoKSkpOworICAgIEFTU0VSVChKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU1NjcmlwdEluaXRpYXRvcio+KGluaXRpYXRvcikpOwogCiAg
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
anNHbG9iYWxPYmplY3QpOwogICAgIGF1dG8mIGpzUHJvbWlzZSA9ICpKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCAmZ2xvYmFsT2JqZWN0KTsKQEAgLTE2NCw3ICsx
NjEsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNo
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsTwogICAgIGlmIChhdXRvKiBmcmFtZSA9IG1f
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBhdXRvIGxvYWRlciA9IENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5nZXQoKSk7CiAgICAgICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVyLmNvcHlSZWYoKSk7Ci0gICAgICAgIGlmICghbG9hZGVyLT5sb2FkKGRv
d25jYXN0U2NyaXB0RWxlbWVudChKU0M6OmpzQ2FzdDxKU0VsZW1lbnQqPihpbml0aWF0b3IpLT53
cmFwcGVkKCkpLCBjb21wbGV0ZWRVUkwpKSB7CisgICAgICAgIGlmICghbG9hZGVyLT5sb2FkKG1f
ZG9jdW1lbnQsICpzdGF0aWNfY2FzdDxMb2FkYWJsZVNjcmlwdCo+KEpTQzo6anNDYXN0PEpTQzo6
SlNTY3JpcHRJbml0aWF0b3IqPihpbml0aWF0b3IpLT5pbml0aWF0b3IoKSksIGNvbXBsZXRlZFVS
TCkpIHsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgICAgIG1f
bG9hZGVycy5yZW1vdmUoV1RGTW92ZShsb2FkZXIpKTsKICAgICAgICAgICAgIGRlZmVycmVkLT5y
ZWplY3QoZnJhbWUtPnNjcmlwdCgpLm1vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVycm9yU3lt
Ym9sKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApp
bmRleCA5MDk2MWI4ZWNiODIzM2FjZTY3NjU5NjU4YTU0N2YxYjM1ZDczNGJiLi45OGNiMDZkZmI3
OGM1M2Y4YmQ1NjRmYjI3NDFhMDAzMWE0ODQxZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApAQCAtMzMsMjYgKzMzLDI2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjpjcmVhdGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNhY2hl
ZFNjcmlwdCkKK1JlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IExvYWRhYmxlQ2xhc3NpY1Njcmlw
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9y
TmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICBBU1NFUlQoY2FjaGVk
U2NyaXB0KTsKLSAgICBhdXRvIHNjcmlwdCA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVDbGFzc2lj
U2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkpOwotICAgIGNhY2hlZFNjcmlwdC0+YWRkQ2xp
ZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZUNsYXNzaWNTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hh
cnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpKTsKIH0KIAogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0Ojp+TG9hZGFibGVDbGFzc2ljU2NyaXB0KCkKIHsKLSAgICBtX2Nh
Y2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9jYWNoZWRTY3JpcHQp
CisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBib29s
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAogeworICAgIEFTU0VSVCht
X2NhY2hlZFNjcmlwdCk7CiAgICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjplcnJvcigpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAg
ICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuIG1fZXJyb3I7CiAKQEAgLTY0LDExICs2NCwx
MyBAQCBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjplcnJvcigpIGNvbnN0CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXND
YW5jZWxlZCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKIHZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Cisg
ICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICBpZiAocmVzb3VyY2UucmVzb3VyY2VFcnJv
cigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBs
b2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwog
ICAgICAgICBtX2Vycm9yID0gRXJyb3IgewpAQCAtMTA1LDQgKzEwNywxNCBAQCB2b2lkIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdDo6ZXhlY3V0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQog
ICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZSht
X2NhY2hlZFNjcmlwdC5nZXQoKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dy
YW0pKTsKIH0KIAorYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoIW1fY2FjaGVkU2Ny
aXB0KTsKKyAgICBtX2NhY2hlZFNjcmlwdCA9IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1l
bnQsIHNvdXJjZVVSTCk7CisgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIHJldHVy
biB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVD
bGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmgKaW5kZXggYWQ0MWRjMmFiN2Q0MWQwZjE1YThkYjIyYTBkMDU0NjYzOTRkY2FhOS4uNmEzYTMw
YzNlNzJjMjQ3YWU3ZDUzMDQxYjhkOThkMzg3YzAzZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2Fj
aGVkUmVzb3VyYwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRhYmxlQ2xhc3NpY1NjcmlwdCgp
OwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVD
bGFzc2ljU2NyaXB0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKICAgICBib29s
IGlzTG9hZGVkKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJyb3Io
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmluYWw7CkBAIC01
MiwxMiArNTIsMTcgQEAgY2xhc3MgTG9hZGFibGVDbGFzc2ljU2NyaXB0IGZpbmFsIDogcHVibGlj
IExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZFJlc291cmMKIAogICAgIHZvaWQgZXhlY3V0
ZShTY3JpcHRFbGVtZW50JikgZmluYWw7CiAKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBjb25z
dCBVUkwmKTsKKwogcHJpdmF0ZToKLSAgICBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNhY2hlZFNjcmlwdCkgOiBtX2NhY2hlZFNjcmlw
dChXVEZNb3ZlKGNhY2hlZFNjcmlwdCkpIHsgfQorICAgIExvYWRhYmxlQ2xhc3NpY1NjcmlwdChj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wg
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgICAgIDogTG9hZGFibGVTY3JpcHQobm9uY2Us
IGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNo
YWRvd1RyZWUpCisgICAgeworICAgIH0KIAogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlw
dD4gbV9jYWNoZWRTY3JpcHQ7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBtX2NhY2hlZFNjcmlwdCB7IH07CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IHN0ZDo6bnVsbG9wdCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVs
ZVNjcmlwdC5jcHAKaW5kZXggODQyODdlZTdiMWEzZTcyNDFmYTdlMWYwN2NlOThhNTRlMDlhZmZl
Ni4uMGViMTBiNWI0ZGJhNzI4ZTliZDRlZWNjMmEwYjMyZTJmZmQyMjJkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCkBAIC0zMCwxNiArMzAsMTYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExvYWRh
YmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQp
CitSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29s
IGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHRSZWYo
Km5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpKTsKLSAgICBtb2R1bGVTY3Jp
cHQuYWRkQ2xpZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5N
b2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwgQ2Fj
aGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUoKSkpOwogfQogCi1Mb2FkYWJsZU1vZHVsZVNjcmlwdDo6
TG9hZGFibGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCi0g
ICAgOiBtX21vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpCitMb2FkYWJsZU1vZHVsZVNjcmlwdDo6
TG9hZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBSZWY8Q2FjaGVk
TW9kdWxlU2NyaXB0PiYmIG1vZHVsZVNjcmlwdCkKKyAgICA6IExvYWRhYmxlU2NyaXB0KG5vbmNl
LCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKQorICAgICwgbV9tb2R1bGVTY3JpcHQoV1RGTW92ZShtb2R1bGVTY3JpcHQpKQog
eworICAgIG1fbW9kdWxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiBMb2FkYWJsZU1v
ZHVsZVNjcmlwdDo6fkxvYWRhYmxlTW9kdWxlU2NyaXB0KCkKQEAgLTcyLDQgKzcyLDE0IEBAIHZv
aWQgTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmV4ZWN1dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxl
bWVudCkKICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVNb2R1bGVTY3JpcHQobV9tb2R1bGVTY3Jp
cHQuZ2V0KCkpOwogfQogCit2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMKQoreworICAgIG1fbW9kdWxlU2NyaXB0LT5s
b2FkKGRvY3VtZW50LCByb290VVJMLCAqdGhpcyk7Cit9CisKK3ZvaWQgTG9hZGFibGVNb2R1bGVT
Y3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQoreworICAgIG1fbW9kdWxlU2NyaXB0LT5sb2FkKGRvY3VtZW50LCBzb3VyY2VD
b2RlLCAqdGhpcyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZU1vZHVsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgKaW5kZXggZGRlYTlmOGNiMDUwYWFiYmJjMWRkYmQzNzk4MTYwMmI1MDZlNmIyNC4uODNm
NTM5MWY1MmZjOTEzZWUzMTQ3ZTc5ZjZhMTExZWM0MTkyOWQyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTG9hZGFi
bGVNb2R1bGVTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2Fj
aGVkTW9kdWxlU2MKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZU1vZHVsZVNjcmlwdCgp
OwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKENhY2hlZE1v
ZHVsZVNjcmlwdCYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJv
b2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7CkBA
IC00OSw4ICs0OSwxMSBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1Ymxp
YyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRNb2R1bGVTYwogCiAgICAgdm9pZCBzZXRF
cnJvcihFcnJvciYmKTsKIAorICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9v
dFVSTCk7CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYp
OworCiBwcml2YXRlOgotICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlw
dCYpOworICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwg
UmVmPENhY2hlZE1vZHVsZVNjcmlwdD4mJik7CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZE1vZHVsZVNjcmlwdCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0
LmNwcAppbmRleCBlZmRiNmI4OTQ4NmQ0OTNjOThmYjFmNWIzNTc2YjRjNjk2M2UwYjRjLi5lMTcw
YzhlMDJmZTFkY2VhMWRmMGU4YTc1MjBlNTE5ODM0MjEzMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZVNjcmlwdC5jcHAKQEAgLTI2LDcgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHQuaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2FkYWJsZVNjcmlwdENsaWVudC5oIgorI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNCArNTksMjUgQEAg
dm9pZCBMb2FkYWJsZVNjcmlwdDo6bm90aWZ5Q2xpZW50RmluaXNoZWQoKQogICAgICAgICBjbGll
bnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsKIH0KIAorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkU2NyaXB0PiBMb2FkYWJsZVNjcmlwdDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHNl
dHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRp
bmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBB
U1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOworICAgIGJvb2wgaGFzS25v
d25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdp
dGhOb25jZShtX25vbmNlLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKKyAgICBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRv
UG9saWN5Q2hlY2s7CisKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9ucyk7CisgICAgcmVxdWVzdC5zZXRBc1BvdGVudGlh
bGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKKyAgICByZXF1ZXN0
LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CisKKyAgICByZXF1ZXN0
LnNldENoYXJzZXQobV9jaGFyc2V0KTsKKyAgICByZXF1ZXN0LnNldEluaXRpYXRvcihtX2luaXRp
YXRvck5hbWUpOworCisgICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVTY3JpcHQuaAppbmRleCBiYTIyZmIxNWI4MTRkNzE3ZDhkMjc0YzgwNDZmYTk1MGUyMTM5
ODFhLi41NmE1MWQyYzI3MjdlODYyNWY1YzVjMjIwNmJiNDdlOGI4MGMzYTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVTY3JpcHQuaApAQCAtMjUsMTcgKzI1LDIyIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxydW50aW1l
L0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENhY2hlZFNjcmlwdDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgTG9hZGFi
bGVTY3JpcHRDbGllbnQ7CiBjbGFzcyBTY3JpcHRFbGVtZW50OworY2xhc3MgVVJMOwogCi1jbGFz
cyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPExvYWRhYmxlU2NyaXB0PiB7Citj
bGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBKU0M6OlNjcmlwdEluaXRpYXRvciB7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBFcnJvclR5cGUgewogICAgICAgICBDYWNoZWRTY3JpcHQsCkBA
IC02OCwxMCArNzMsMjcgQEAgY2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxMb2FkYWJsZVNjcmlwdD4gewogICAgIHZpcnR1YWwgYm9vbCBpc0NsYXNzaWNTY3JpcHQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vZHVsZVNjcmlwdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNv
dXJjZVVSTCkgY29uc3Q7CisKIHByb3RlY3RlZDoKKyAgICBMb2FkYWJsZVNjcmlwdChjb25zdCBT
dHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgICAgIDogbV9ub25jZShub25jZSkKKyAgICAgICAgLCBt
X2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1vZGUpCisgICAgICAgICwgbV9jaGFyc2V0KGNo
YXJzZXQpCisgICAgICAgICwgbV9pbml0aWF0b3JOYW1lKGluaXRpYXRvck5hbWUpCisgICAgICAg
ICwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZShpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAg
ICB7CisgICAgfQorCiAgICAgdm9pZCBub3RpZnlDbGllbnRGaW5pc2hlZCgpOwogCiBwcml2YXRl
OgorICAgIFN0cmluZyBtX25vbmNlOworICAgIFN0cmluZyBtX2Nyb3NzT3JpZ2luTW9kZTsKKyAg
ICBTdHJpbmcgbV9jaGFyc2V0OworICAgIEF0b21pY1N0cmluZyBtX2luaXRpYXRvck5hbWU7Cisg
ICAgYm9vbCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlIHsgZmFsc2UgfTsKKwogICAgIEhhc2hD
b3VudGVkU2V0PExvYWRhYmxlU2NyaXB0Q2xpZW50Kj4gbV9jbGllbnRzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGY2ODYzN2FjNGQ5NWNlODhhMWZiMDU1MzFk
ZmRhZmY1MDAxNDAwZmUuLmI0MzNmYmMyODVmNDVkMGVhMGE2N2ExMDllZWRmMTdmOGIzMjg5OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTI5MiwxMSArMjkyLDE0IEBA
IGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdENsYXNzaWNTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpCiAKICAgICBBU1NFUlQoIW1fbG9hZGFibGVTY3JpcHQpOwogICAgIGlmICghc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHNvdXJjZVVSTCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFN0cmluZyBub25jZUF0dHJpYnV0ZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bm9uY2VBdHRyKTsKLSAgICAgICAgU3RyaW5nIGNy
b3NzT3JpZ2luTW9kZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gcmVx
dWVzdFNjcmlwdFdpdGhDYWNoZShtX2VsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzb3Vy
Y2VVUkwpLCBub25jZUF0dHJpYnV0ZSwgY3Jvc3NPcmlnaW5Nb2RlKTsKLSAgICAgICAgaWYgKHJl
cXVlc3QpIHsKLSAgICAgICAgICAgIG1fbG9hZGFibGVTY3JpcHQgPSBMb2FkYWJsZUNsYXNzaWNT
Y3JpcHQ6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSgKKyAgICAgICAgICAgIG1fZWxlbWVudC5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bm9uY2VBdHRyKSwKKyAgICAg
ICAgICAgIG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6Y3Jvc3NvcmlnaW5BdHRyKSwKKyAgICAgICAgICAgIHNjcmlwdENoYXJzZXQoKSwKKyAgICAg
ICAgICAgIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIG1fZWxlbWVudC5pc0lu
VXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAgICAgaWYgKHNjcmlwdC0+bG9hZChtX2VsZW1l
bnQuZG9jdW1lbnQoKSwgbV9lbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc291cmNlVVJM
KSkpIHsKKyAgICAgICAgICAgIG1fbG9hZGFibGVTY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAg
ICAgICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzM5LDkgKzM0Miw5IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlw
dChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24pCiAgICAgICAgIH0KIAog
ICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQgPSB0cnVlOwotICAgICAgICBhdXRvIG1vZHVsZVNj
cmlwdCA9IENhY2hlZE1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUp
OwotICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0
ZShtb2R1bGVTY3JpcHQuZ2V0KCkpOwotICAgICAgICBtb2R1bGVTY3JpcHQtPmxvYWQobV9lbGVt
ZW50LCBtb2R1bGVTY3JpcHRSb290VVJMKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJs
ZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIHNjcmlwdENoYXJz
ZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRv
d1RyZWUoKSk7CisgICAgICAgIHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwgbW9k
dWxlU2NyaXB0Um9vdFVSTCk7CisgICAgICAgIG1fbG9hZGFibGVTY3JpcHQgPSBXVEZNb3ZlKHNj
cmlwdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzU0LDQyICszNTcsMTIg
QEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0TW9kdWxlU2NyaXB0KGNvbnN0IFRleHRQb3Np
dGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbikKICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGlj
eS5hbGxvd0lubGluZVNjcmlwdChtX2VsZW1lbnQuZG9jdW1lbnQoKS51cmwoKSwgbV9zdGFydExp
bmVOdW1iZXIsIHNvdXJjZUNvZGUuc291cmNlKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBo
YXNLbm93bk5vbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBtb2R1bGVT
Y3JpcHQgPSBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2Rl
KTsKLSAgICBtX2xvYWRhYmxlU2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZSht
b2R1bGVTY3JpcHQuZ2V0KCkpOwotICAgIG1vZHVsZVNjcmlwdC0+bG9hZChtX2VsZW1lbnQsIHNv
dXJjZUNvZGUpOworICAgIGF1dG8gc2NyaXB0ID0gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0
ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3JpcHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2Nh
bE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgIHNjcmlw
dC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwgc291cmNlQ29kZSk7CisgICAgbV9sb2FkYWJs
ZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0
V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KGNvbnN0IFVSTCYgc291cmNlVVJMKQotewotICAgIEFT
U0VSVChtX2xvYWRhYmxlU2NyaXB0KTsKLSAgICBBU1NFUlQoaXM8TG9hZGFibGVNb2R1bGVTY3Jp
cHQ+KCptX2xvYWRhYmxlU2NyaXB0KSk7Ci0gICAgYXV0byYgbW9kdWxlU2NyaXB0ID0gZG93bmNh
c3Q8TG9hZGFibGVNb2R1bGVTY3JpcHQ+KCptX2xvYWRhYmxlU2NyaXB0KTsKLSAgICByZXR1cm4g
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShzb3VyY2VVUkwsIG1vZHVsZVNjcmlwdC5tb2R1bGVTY3Jp
cHQoKS5ub25jZSgpLCBtb2R1bGVTY3JpcHQubW9kdWxlU2NyaXB0KCkuY3Jvc3NPcmlnaW5Nb2Rl
KCkpOwotfQotCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1l
bnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0
cmluZyYgbm9uY2VBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQotewot
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxlbWVudC5kb2N1bWVudCgpOwotICAgIGF1dG8q
IHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKLSAgICBpZiAoc2V0dGluZ3MgJiYgIXNl
dHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwotICAgIGJvb2wgaGFz
S25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1Njcmlw
dFdpdGhOb25jZShub25jZUF0dHJpYnV0ZSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKCkpOwotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5
UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKLQotICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChzb3VyY2VVUkwpLCBvcHRpb25zKTsKLSAgICBy
ZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3Vt
ZW50KTsKLSAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVu
dCk7Ci0KLSAgICByZXF1ZXN0LnNldENoYXJzZXQoc2NyaXB0Q2hhcnNldCgpKTsKLSAgICByZXF1
ZXN0LnNldEluaXRpYXRvcigmZWxlbWVudCgpKTsKLQotICAgIHJldHVybiBkb2N1bWVudC5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTY3JpcHQoV1RGTW92ZShyZXF1ZXN0KSk7Ci19Ci0K
IHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBBU1NFUlQobV9hbHJlYWR5U3RhcnRlZCk7CkBA
IC00MzAsNyArNDAzLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0
KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQogICAgIElnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1l
bnRlcigmZG9jdW1lbnQpOwogICAgIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciBjdXJyZW50U2Ny
aXB0SW5jcmVtZW50ZXIoZG9jdW1lbnQsIG1fZWxlbWVudCk7CiAKLSAgICBmcmFtZS0+c2NyaXB0
KCkubGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KG1vZHVsZVNjcmlwdCwgZWxlbWVudCgpKTsK
KyAgICBmcmFtZS0+c2NyaXB0KCkubGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KG1vZHVsZVNj
cmlwdCk7CiB9CiAKIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNo
RXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmgKaW5kZXggNWYxODFkZjJlM2IwZTg4OGVmMzk0N2JiY2RjMThkOTMwN2RkZWIxYS4u
MDMwMjVmODZkMGI0ZTUwZmU5ZjE4MDJhNDQ2YzZjNWYwN2UyYzFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCkBAIC02Niw4ICs2Niw2IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgewog
ICAgIGJvb2wgd2lsbEV4ZWN1dGVJbk9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV93aWxsRXhlY3V0
ZUluT3JkZXI7IH0KICAgICBMb2FkYWJsZVNjcmlwdCogbG9hZGFibGVTY3JpcHQoKSB7IHJldHVy
biBtX2xvYWRhYmxlU2NyaXB0LmdldCgpOyB9CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQoY29uc3Qg
VVJMJik7Ci0KICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
Y3JpcHRpbmcuaHRtbCNjb25jZXB0LXNjcmlwdC10eXBlCiAgICAgZW51bSBjbGFzcyBTY3JpcHRU
eXBlIHsgQ2xhc3NpYywgTW9kdWxlIH07CiAgICAgU2NyaXB0VHlwZSBzY3JpcHRUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9pc01vZHVsZVNjcmlwdCA/IFNjcmlwdFR5cGU6Ok1vZHVsZSA6IFNjcmlw
dFR5cGU6OkNsYXNzaWM7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298546</attachid>
            <date>2017-01-10 19:15:33 -0800</date>
            <delta_ts>2017-01-11 02:47:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166888-20170111121355.patch</filename>
            <type>text/plain</type>
            <size>59211</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODY4MjFhZGVmYWJlOGY4ZGE4YzMyMjcyNGU0N2YyYmM1NWQwNGFjLi44Y2RjM2FjM2E4YWY3OTYy
MDlkMzY1ZTQzMjZkZGI2NDZkMGExNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMyBAQAogMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBT
Y3JpcHRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU2NyaXB0SW5pdGlhdG9yIGFuZCBKU1NjcmlwdEluaXRpYXRvci4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNw
cC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmRlc3Ryb3kpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU2Ny
aXB0SW5pdGlhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NjcmlwdElu
aXRpYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmluaXRp
YXRvcik6CisgICAgICAgIChKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpKU1NjcmlwdEluaXRpYXRv
cik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEluaXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3Jp
cHQuY3BwLgorICAgICAgICAoSlNDOjpTY3JpcHRJbml0aWF0b3I6On5TY3JpcHRJbml0aWF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKworMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgSlNTb3VyY2VDb2RlIHRvIHBy
b3BhZ2F0ZSBTb3VyY2VDb2RlIGluIG1vZHVsZSBwaXBlbGluZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODYxCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDY2
ZDE1YjU0MjJjZTUzZTZjZDFhNDk2YzI5ZjQzY2M2Njc0NGNmLi4wMTdmZjFiODUwZDAwNjY4MjI2
ZTAzZWExYTFlZDc3NWYxYTBiODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzQgQEAKIDIwMTct
MDEtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAg
RGVjb3VwbGUgbW9kdWxlIGxvYWRpbmcgaW5pdGlhdG9yIGZyb20gU2NyaXB0RWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2ODg4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwg
d2UgdXNlIFNjcmlwdEVsZW1lbnQgKEpTRWxlbWVudCBmb3IgU2NyaXB0RWxlbWVudCkgYXMgdGhl
IG1vZHVsZSBsb2FkaW5nIGluaXRpYXRvci4KKyAgICAgICAgVGhpcyBlbGVtZW50IGlzIHVzZWQg
dG8gdHJhbnNmZXIgdGhlIG1ldGFkYXRhIGxpa2UgY2hhcnNldCB0aHJvdWdob3V0IHRoZSBtb2R1
bGUgcGlwZWxpbmUuCisgICAgICAgIEFzIGEgcmVzdWx0LCBvdXIgbW9kdWxlIGxvYWRlciBpbiB0
aGUgYnJvd3NlciBzaWRlIGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIFNjcmlwdEVsZW1lbnQuCisg
ICAgICAgIEl0IGlzIG5vdCBnb29kIHNpbmNlIGl0IHByZXZlbnQgdXMgZnJvbSB1c2luZyB0aGUg
bW9kdWxlIGxvYWRlciBpbiB0aGUgbm9uLURPTSBlbnZpcm9ubWVudCBsaWtlCisgICAgICAgIFdl
YiBXb3JrZXJzLgorCisgICAgICAgIFNvIHdlIGRlY291cGxlIHRoZSBuZWNlc3NhcnkgaW5mb3Jt
YXRpb25zIGZyb20gU2NyaXB0RWxlbWVudC4gV2UgbW92ZSB0aGVzZSBpbmZvcm1hdGlvbiB0bwor
ICAgICAgICBMb2FkYWJsZVNjcmlwdC4gQW5kIHdlIHVzZSBKU1NjcmlwdEluaXRpYXRvciB0byB0
cmFuc2ZlciBMb2FkYWJsZVNjcmlwdCB0aHJvdWdoIHRoZSBKUyBpbXBsZW1lbnRlZAorICAgICAg
ICBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lLiBXZSBzZWxlY3QgTG9hZGFibGVTY3JpcHQgaW5zdGVh
ZCBvZiBMb2FkYWJsZU1vZHVsZVNjcmlwdCBzaW5jZSB0aGlzIGluaXRpYXRvcgorICAgICAgICBp
bmZvcm1hdGlvbiB3aWxsIGJlIGxldmVyYWdlZCBldmVuIGluIGNsYXNzaWMgc2NyaXB0cyBvbmNl
IHdlIGltcGxlbWVudCB0aGUgZHluYW1pYyBpbXBvcnQuCisKKyAgICAgICAgTm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1NjcmlwdElu
aXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQu
Y3BwLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0SW5pdGlhdG9y
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAuCisg
ICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZE1vZHVsZVNjcmlwdDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVT
Y3JpcHQ6OkNhY2hlZE1vZHVsZVNjcmlwdCk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgIE5vdyB3ZSBjYW4gbWVyZ2UgQ2FjaGVk
TW9kdWxlU2NyaXB0IHRvIExvYWRhYmxlU2NyaXB0LiBCdXQgd2UgZG8gbm90IGRvIHRoaXMgaW4g
dGhpcyBwYXRjaCBzaW5jZQorICAgICAgICB3ZSBmb2N1cyBvbiBkZWNvdXBsaW5nIHRoZSBpbml0
aWF0b3IgaW5mb3JtYXRpb24gZnJvbSBTY3JpcHRFbGVtZW50LgorCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRNb2R1bGVTY3JpcHQ6Om5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZE1vZHVsZVNjcmlwdDo6Y3Jvc3NPcmlnaW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6On5Mb2FkYWJsZUNsYXNzaWNT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojppc0xvYWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2FuY2VsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQpOgorICAgICAgICAq
IGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVNb2R1
bGVTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVN
b2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6Omxv
YWQpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRv
bS9Mb2FkYWJsZVNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxlU2NyaXB0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6TG9hZGFibGVTY3JpcHQpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6ZXhlY3V0ZU1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisKKzIwMTctMDEtMTAgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgSW1wbGVtZW50
IEpTU291cmNlQ29kZSB0byBwcm9wYWdhdGUgU291cmNlQ29kZSBpbiBtb2R1bGUgcGlwZWxpbmUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njg2MQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA1YjhkOTRhMjYwMzVjMzI0
OTNjMTMyMzRjMGQ3MmMyZDhlOWQ4ZC4uZjYwMTViNDkyMGI0MGQ4YmI1OGQyOWZjYzA5ODg2M2Rl
YzYzMThkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzg0LDYgKzc4
NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAKICAgICBydW50aW1lL0pT
U2NvcGUuY3BwCisgICAgcnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5jcHAKICAgICBydW50aW1l
L0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1NldC5jcHAKICAg
ICBydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc2Mzg0ZmFjNzExYmU3ZjMzNGI4Zjg4NmZmMDYxNjMyNzQxNTVlMmEuLmYyMDM2MGQyMDZi
YThiODRhOTE5YTUxYmRhZTk1OWNlZTNhNzU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMzcyLDYgKzIzNzIsOSBAQAogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyog
SlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkEzQUIyMTFD
ODQ5NDUyNEFCMzkwMjY3IC8qIEpTU291cmNlQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNT
b3VyY2VDb2RlLmNwcCAqLzsgfTsKIAkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0ODE1RjVGOTkxQzQ2QkVCOThE
MDAxNiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxMUMxOTdDMjYyNDg0OEVEQTg0Q0VEN0YgLyogSlNTY3JpcHRJ
bml0aWF0b3IuY3BwICovOyB9OworCQk5MDY0MzM3REQ0QjA0MDJCQUYzNEE1OTIgLyogSlNTY3Jp
cHRJbml0aWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1NjcmlwdEluaXRpYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFQUU3RDdCODg5
QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRJbml0aWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3Jp
cHRJbml0aWF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00OTAwLDYgKzQ5MDMsOSBAQAogCQlGRUZENkZD
NTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU291cmNlQ29kZS5jcHA7IHBhdGgg
PSBKU1NvdXJjZUNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMDMyMTc1
REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTU291cmNlQ29kZS5oOyBwYXRoID0gSlNTb3VyY2VDb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBKU1Nj
cmlwdEluaXRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
U1NjcmlwdEluaXRpYXRvci5jcHA7IHBhdGggPSBKU1NjcmlwdEluaXRpYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1Nj
cmlwdEluaXRpYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1Njcmlw
dEluaXRpYXRvci5oOyBwYXRoID0gSlNTY3JpcHRJbml0aWF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEluaXRpYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JpcHRJbml0aWF0b3IuaDsg
cGF0aCA9IFNjcmlwdEluaXRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyog
RW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02NzQwLDYgKzY3NDYsOSBAQAogCQkJCTQyNUJBMTMz
N0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLywKIAkJCQlGNzM5MjY5MThEQzY0
MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLywKIAkJCQkzMDMyMTc1REYxQUQ0N0Q4
OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi8sCisJCQkJMTFDMTk3QzI2MjQ4NDhFREE4NENF
RDdGIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmNwcCAqLywKKwkJCQk2QkE5M0M5NTkwNDg0QzVCQUQ5
MzE2RUEgLyogSlNTY3JpcHRJbml0aWF0b3IuaCAqLywKKwkJCQk4ODUyMTUxQTlDMzg0MjM4OUIz
MjE1QjcgLyogU2NyaXB0SW5pdGlhdG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTExNCw2ICs5MTIzLDggQEAKIAkJCQk4
NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEMzQyRjM2RjcyNDQwOTY4MDRBREIyNCAvKiBTb3VyY2VPcmlnaW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkwNjQzMzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1Njcmlw
dEluaXRpYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VBRTdEN0I4ODlCNDc3QkE5M0FCQTZD
IC8qIFNjcmlwdEluaXRpYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMDUwMiw2ICsxMDUxMyw3
IEBACiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTNBQjIxMUM4NDk0NTI0QUIzOTAyNjcgLyog
SlNTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0ODE1RjVGOTkxQzQ2QkVCOThE
MDAxNiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNmNiMjFjZDcxY2JlMWI2NjA2ZDU4
MjM5MmJiOWRlNDQ0YjNjM2I1OC4uOGI2MTVhMWEzYTUxNTEwNTk2NzIwNjVkNDcyYjdlOGFlODU4
Njk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE1
NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAg
IAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNTRVJU
KFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIyKTsK
LSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyMyk7Ci0gICAgU1RBVElDX0FT
U0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNSk7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5cGUg
PT0gMzMpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNCk7Ci0gICAg
U1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTIpOwotICAgIFNUQVRJQ19BU1NFUlQo
SW50OEFycmF5VHlwZSA9PSAzNSk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlwZSA9
PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzNyk7Ci0gICAgU1RB
VElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50
OENsYW1wZWRBcnJheVR5cGUgPT0gMzkpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJyYXlU
eXBlID09IDQwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0MSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQyKTsKLSAgICBTVEFUSUNfQVNT
RVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0VHlw
ZSA9PSAyMyk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjQpOworICAg
IFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjYpOworICAgIFNUQVRJQ19BU1NFUlQo
QXJyYXlUeXBlID09IDM0KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUgPT0g
MzUpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDUzKTsKKyAgICBTVEFU
SUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MTZB
cnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzgp
OworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzkpOworICAgIFNUQVRJQ19B
U1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQwKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVp
bnQxNkFycmF5VHlwZSA9PSA0MSk7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUg
PT0gNDIpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0Myk7CisgICAg
U1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ0KTsKICAgICBTVEFUSUNfQVNTRVJU
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWIzMjgyNjE4OTcy
MmNlZmZlNTI3NmJjNmQ0ZGU5ZmRkYWU4OTcxYi4uZWMyNDc3M2EzMDA0NTc2YzRiZGQxNGNmZTA0
MzA3ODNjNjkzYzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0cmlu
Z1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIyCi1j
b25zdCBGaW5hbE9iamVjdFR5cGUgPSAyMwotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNQotY29u
c3QgQXJyYXlUeXBlID0gMzMKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNAotY29uc3QgUHJv
eHlPYmplY3RUeXBlID0gNTIKK2NvbnN0IE9iamVjdFR5cGUgPSAyMworY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMjQKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjYKK2NvbnN0IEFycmF5VHlwZSA9
IDM0Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzUKK2NvbnN0IFByb3h5T2JqZWN0VHlwZSA9
IDUzCiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4gYSBw
YXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dpdGNo
IHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFycmF5
VHlwZSA9IDM1Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQzMkFycmF5VHlw
ZSA9IDM3Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM4Ci1jb25zdCBVaW50OENsYW1wZWRBcnJh
eVR5cGUgPSAzOQotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDAKLWNvbnN0IFVpbnQzMkFycmF5
VHlwZSA9IDQxCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDIKLWNvbnN0IEZsb2F0NjRBcnJh
eVR5cGUgPSA0MworY29uc3QgSW50OEFycmF5VHlwZSA9IDM2Citjb25zdCBJbnQxNkFycmF5VHlw
ZSA9IDM3Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM4Citjb25zdCBVaW50OEFycmF5VHlwZSA9
IDM5Citjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MAorY29uc3QgVWludDE2QXJyYXlU
eXBlID0gNDEKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQyCitjb25zdCBGbG9hdDMyQXJyYXlU
eXBlID0gNDMKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NAogCiBjb25zdCBGaXJzdEFycmF5
VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJyYXlU
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdElu
aXRpYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEluaXRp
YXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlNGJhYTIzODM5NGY4ZGMyZDI3M2VhOWY1ZjI2YzJjNjQz
OGZmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NyaXB0SW5pdGlhdG9yLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTU2NyaXB0SW5pdGlhdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNTY3JpcHRJbml0aWF0b3I6OnNf
aW5mbyA9IHsgIkpTU2NyaXB0SW5pdGlhdG9yIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1NjcmlwdEluaXRpYXRvcikgfTsKKwordm9pZCBKU1NjcmlwdEluaXRpYXRv
cjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SlNTY3JpcHRJbml0
aWF0b3IqPihjZWxsKS0+fkpTU2NyaXB0SW5pdGlhdG9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJ
bml0aWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzAxMDhjMGU4ODI2ODIyZWIzYTA0ZDEzNWVhN2Q0ZTVkNTg5YmY2
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Ny
aXB0SW5pdGlhdG9yLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdElu
aXRpYXRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNTY3JpcHRJbml0aWF0b3Ig
OiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDZWxsOworCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNT
Y3JpcHRJbml0aWF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTU2NyaXB0SW5pdGlhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisgICAgeworICAg
ICAgICBhdXRvKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NjcmlwdElu
aXRpYXRvcj4odm0uaGVhcCkpIEpTU2NyaXB0SW5pdGlhdG9yKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoaW5pdGlhdG9yKSk7CisgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBKU1NjcmlwdEluaXRpYXRv
ciogY3JlYXRlKFZNJiB2bSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisg
ICAgeworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCB2bS5zY3JpcHRJbml0aWF0b3JTdHJ1Y3R1
cmUuZ2V0KCksIFdURk1vdmUoaW5pdGlhdG9yKSk7CisgICAgfQorCisgICAgU2NyaXB0SW5pdGlh
dG9yKiBpbml0aWF0b3IoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5pdGlhdG9y
LmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKK3By
aXZhdGU6CisgICAgSlNTY3JpcHRJbml0aWF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4mJiBpbml0aWF0b3IpCisgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQorICAgICAgICAsIG1faW5pdGlhdG9yKFdURk1vdmUoaW5pdGlhdG9yKSkK
KyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFNjcmlwdEluaXRpYXRvcj4gbV9pbml0aWF0b3I7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKaW5kZXggYWUxODRkZTI3ZGU4ZmEyYzdiMWVmOTc5NzVlYWM2YmViYjE2MzM2NC4uYWZi
ZWEzODYwZTRkNmIzNjdmYTQ3ZmM3MTY1YmQ5OTg2ZTE5YmZiZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50
OF90IHsKIAogICAgIEpTRml4ZWRBcnJheVR5cGUsCiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKKyAg
ICBKU1NjcmlwdEluaXRpYXRvclR5cGUsCiAKICAgICAvLyBUaGUgT2JqZWN0VHlwZSB2YWx1ZSBt
dXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0
LgogICAgIE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRJbml0aWF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEluaXRpYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNmQ1MTgyNzhkNGY1NmJiOTM1ZGE2YTE4Njhl
NWZjZDgwZDc5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRJbml0aWF0b3IuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2NyaXB0
SW5pdGlhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0SW5pdGlhdG9yPiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+U2NyaXB0SW5pdGlhdG9yKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAzOGU5OWFkMTY0OWYx
MWI0ZTg0Y2QwZDRiM2Y0MTg2YTM1MjBiOTRhLi42MjZhNDMwM2JkNjQ2NmQ3MzZjODI3MzQ2OGM2
Y2M1M2QxOGIyY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03MSw2
ICs3MSw3IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorI2luY2x1ZGUgIkpT
U2NyaXB0SW5pdGlhdG9yLmgiCiAjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseS5oIgpAQCAt
MjQwLDYgKzI0MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZml4ZWRBcnJheVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTRml4ZWRBcnJheTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHNvdXJjZUNvZGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NvdXJjZUNvZGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICBzY3JpcHRJbml0aWF0b3JT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NjcmlwdEluaXRpYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhp
cywgU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlW
YWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRlbXBs
YXRlUmVnaXN0cnlLZXlTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCmluZGV4IDNlYmVkNzNlNWJhMTE4NWI1NzRjZDM3Mjc0OWM0YjBhMTdlMTY5Mjcu
LmU1YzdhMTc5YTY3Y2QxZWUxZjY2ZWYzMDQyMjcwMDljMDkwNWUxMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaApAQCAtMzI3LDYgKzMyNyw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3ltYm9sVGFi
bGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZml4ZWRBcnJheVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBzb3VyY2VDb2RlU3RydWN0dXJlOworICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHNjcmlwdEluaXRpYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VB
cnJheVZhbHVlTWFwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlUmVn
aXN0cnlLZXlTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0
OTk0NmQ3ODg5MzNlY2QwMTRmYzBhOGE0MTk1ZWRhYzhhM2IwMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0
b3IuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTY3JpcHRJbml0aWF0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0SW5pdGlhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNDhk
NmRjMDk5ZTJkMTMyNGUxMjk1OWU3YTlhODM5ZTdkZWMzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5o
CkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRJbml0aWF0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHQuY3BwCmluZGV4IDRiZWYyYThhYTgzOGQ3NjE3MzMzZTMwZmQyNmQ5YWJkMWI3
ZWVkODcuLjBmZWM0YjU5YjFkMmQzMTRkODA0MmY3MTEzYWZiOTk5NGM1Njg2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcApAQCAt
MjksMzggKzI5LDMwIEBACiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9kdWxlU2NyaXB0Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUp
CitSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxlU2NyaXB0KG5vbmNlLCBjcm9z
c09yaWdpbk1vZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRNb2R1bGVTY3Jp
cHQoKSk7CiB9CiAKLUNhY2hlZE1vZHVsZVNjcmlwdDo6Q2FjaGVkTW9kdWxlU2NyaXB0KGNvbnN0
IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQotICAgIDogbV9u
b25jZShub25jZSkKLSAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKK3Zv
aWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiByb290VVJMLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7CisgICAgaWYgKGF1
dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxv
YWRNb2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIGxvYWRhYmxlU2NyaXB0KTsK
IH0KIAotdm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBj
b25zdCBVUkwmIHJvb3RVUkwpCit2b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxl
U2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBpbml0aWF0
b3IuZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVs
ZVNjcmlwdCgqdGhpcywgcm9vdFVSTC5zdHJpbmcoKSwgaW5pdGlhdG9yKTsKLX0KLQotdm9pZCBD
YWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKQotewotICAgIGlmIChhdXRvKiBmcmFtZSA9IGluaXRpYXRv
ci5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxl
U2NyaXB0KCp0aGlzLCBzb3VyY2VDb2RlLCBpbml0aWF0b3IpOworICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxl
U2NyaXB0KCp0aGlzLCBzb3VyY2VDb2RlLCBsb2FkYWJsZVNjcmlwdCk7CiB9CiAKIHZvaWQgQ2Fj
aGVkTW9kdWxlU2NyaXB0Ojpub3RpZnlMb2FkQ29tcGxldGVkKFVuaXF1ZWRTdHJpbmdJbXBsJiBt
b2R1bGVLZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdC5oCmluZGV4IDllYWE3NmI0ZWRlYWNjMzg3MDBlZGMwNTVkOWQ0MDhmMmQwNDNjMDIuLjU2
MmQ5M2QwNjNiMWY0ZWM0ZWNlZTdiYTY5N2I5MmI1NjI5NTMxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCkBAIC0zMiwxNSArMzIsMTMg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50
OwotY2xhc3MgRWxlbWVudDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZTsKIAogY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVk
TW9kdWxlU2NyaXB0PiB7CiBwdWJsaWM6CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1vZHVsZUtl
eSgpIHsgcmV0dXJuIG1fbW9kdWxlS2V5LmdldCgpOyB9CiAKLSAgICB2b2lkIGV2YWx1YXRlKEVs
ZW1lbnQmKTsKLQogICAgIHZvaWQgbm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3RyaW5nSW1w
bCYgbW9kdWxlS2V5KTsKICAgICB2b2lkIG5vdGlmeUxvYWRGYWlsZWQoTG9hZGFibGVTY3JpcHQ6
OkVycm9yJiYpOwogICAgIHZvaWQgbm90aWZ5TG9hZFdhc0NhbmNlbGVkKCk7CkBAIC01MiwyMyAr
NTAsMTYgQEAgY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8Q2Fj
aGVkTW9kdWxlU2NyaXB0PiB7CiAgICAgdm9pZCBhZGRDbGllbnQoQ2FjaGVkTW9kdWxlU2NyaXB0
Q2xpZW50Jik7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ2FjaGVkTW9kdWxlU2NyaXB0Q2xpZW50
Jik7CiAKLSAgICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKLQotICAgIHZvaWQg
bG9hZChFbGVtZW50JiBpbml0aWF0b3IsIGNvbnN0IFVSTCYgcm9vdFVSTCk7Ci0gICAgdm9pZCBs
b2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgIHN0
YXRpYyBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiBjcmVhdGUoKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgbm9uY2UoKSBjb25zdCB7IHJldHVybiBtX25vbmNlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorICAg
IHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9vdFVSTCwgTG9hZGFibGVTY3JpcHQm
KTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9h
ZGFibGVTY3JpcHQmKTsKIAogcHJpdmF0ZToKLSAgICBDYWNoZWRNb2R1bGVTY3JpcHQoY29uc3Qg
U3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpOwotCiAgICAgdm9p
ZCBub3RpZnlDbGllbnRGaW5pc2hlZCgpOwogCiAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiBtX21vZHVsZUtleTsKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRNb2R1bGVTY3JpcHRDbGll
bnQqPiBtX2NsaWVudHM7Ci0gICAgU3RyaW5nIG1fbm9uY2U7Ci0gICAgU3RyaW5nIG1fY3Jvc3NP
cmlnaW5Nb2RlOwogICAgIHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vy
cm9yOwogICAgIGJvb2wgbV93YXNDYW5jZWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTG9h
ZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGM0OTljZGEyNGQyMjhmZmRmZTk5NGVk
NDZjYTdiMDYxZDYzOWIwZWEuLjYwYmRkNDg1Y2FiMzU4YzlhYzVlNzk3OTFmNWFiZDgyOTRlNDAx
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0TG9hZGVyLmNwcApAQCAtMjYsMTQgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgiCiAKLSNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgog
I2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKIApAQCAtNTgsMTAgKzU3LDEwIEBAIENhY2hl
ZE1vZHVsZVNjcmlwdExvYWRlcjo6fkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcigpCiAgICAgfQog
fQogCi1ib29sIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bG9hZChTY3JpcHRFbGVtZW50JiBz
Y3JpcHRFbGVtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK2Jvb2wgQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyOjpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgTG9hZGFibGVTY3JpcHQmIGxvYWRh
YmxlU2NyaXB0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVk
U2NyaXB0KTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IHNjcmlwdEVsZW1lbnQucmVxdWVzdFNjcmlw
dFdpdGhDYWNoZUZvck1vZHVsZVNjcmlwdChzb3VyY2VVUkwpOworICAgIG1fY2FjaGVkU2NyaXB0
ID0gbG9hZGFibGVTY3JpcHQucmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNl
VVJMKTsKICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmgKaW5kZXggOGIzNWZjYjg3YWY2MDdkNzZkMjZiZWQ3ODgyNmNlOWVkMzBlNmRjNi4u
MzJmZGUzYmZhNzI0ZDUyNTc5ZDIxNGU1N2U0NmQ2M2E1NTczNDYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmgKQEAg
LTM2LDggKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyQ2xpZW50OwogY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLWNsYXNzIFNj
cmlwdEVsZW1lbnQ7CitjbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFVSTDsKIAogY2xhc3Mg
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVk
TW9kdWxlU2NyaXB0TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00
Niw3ICs0Nyw3IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdExvYWRlCiAKICAgICB2aXJ0dWFsIH5DYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXIoKTsKIAotICAgIGJvb2wgbG9hZChTY3JpcHRFbGVtZW50Jiwg
Y29uc3QgVVJMJiBzb3VyY2VVUkwpOworICAgIGJvb2wgbG9hZChEb2N1bWVudCYsIExvYWRhYmxl
U2NyaXB0JiwgY29uc3QgVVJMJiBzb3VyY2VVUkwpOwogCiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNo
ZWRTY3JpcHQoKSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC5nZXQoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDM3YzllZGYz
NmU5Y2YzYWYwM2I1YmUzOGIwNDNkYThlMDNlNTkxNzUuLjlmNjUxNTQzN2UwMTE3YTNhZTZjYmM0
MTk0MWIxZTVlMjhjNGE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiUGFnZUNvbnNv
bGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3
QmFzZS5oIgotI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTYwLDYgKzU5LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMTg2LDM5
ICsxODYsMzkgQEAgSlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBFeGNlcHRpb24KICAgICByZXR1cm4gZXZhbHVhdGVJ
bldvcmxkKHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBleGNlcHRpb25EZXRh
aWxzKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQm
IG1vZHVsZVNjcmlwdCwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYg
bG9hZGFibGVTY3JpcHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sod29ybGQudm0oKSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3
b3JsZCk7CiAgICAgYXV0byYgc3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsK
IAotICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUo
c3RhdGUsIG1vZHVsZU5hbWUsIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQp
KTsKKyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxl
KHN0YXRlLCBtb2R1bGVOYW1lLCBKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpjcmVhdGUoc3RhdGUu
dm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNj
cmlwdCkKIHsKLSAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVs
ZU5hbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBlbGVtZW50KTsKKyAgICBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVsZU5hbWUsIGxvYWRhYmxlU2NyaXB0LCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3Jp
cHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQpKTsK
KyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0
YXRlLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpj
cmVhdGUoc3RhdGUudm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxl
U2NyaXB0SGFuZGxlcnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1v
ZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgRWxlbWVudCYg
ZWxlbWVudCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRN
b2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewotICAgIGxvYWRNb2R1bGVT
Y3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdv
cmxkKCksIGVsZW1lbnQpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlw
dCwgc291cmNlQ29kZSwgbG9hZGFibGVTY3JpcHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsK
IH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIEVsZW1lbnQmIGVsZW1lbnQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVT
Y3JpcHQmIG1vZHVsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIApAQCAtMjMwLDcgKzIzMCw3IEBAIEpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxk
KENhY2hlZE1vZHVsZVNjCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICBhdXRv
IHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1
bGUoc3RhdGUsIElkZW50aWZpZXI6OmZyb21VaWQoJnN0YXRlLnZtKCksIG1vZHVsZVNjcmlwdC5t
b2R1bGVLZXkoKSksIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKKyAgICBhdXRvIHJldHVyblZhbHVlID0gSlNNYWluVGhyZWFkRXhl
Y1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoc3RhdGUsIElkZW50aWZpZXI6OmZyb21VaWQo
JnN0YXRlLnZtKCksIG1vZHVsZVNjcmlwdC5tb2R1bGVLZXkoKSksIGpzVW5kZWZpbmVkKCksIGV2
YWx1YXRpb25FeGNlcHRpb24pOwogICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBHaXZlIGEgY2hhbmNlIHRvIGR1bXAgdGhlIHN0YWNrIHRyYWNlIGlmIHRo
ZSAiY3Jvc3NvcmlnaW4iIGF0dHJpYnV0ZSBhbGxvd3MuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MzkKQEAgLTI0MCw5ICsyNDAsOSBAQCBK
U0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
SW5Xb3JsZChDYWNoZWRNb2R1bGVTYwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChD
YWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwgRWxlbWVudCYgZWxlbWVudCkKK0pTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCiB7Ci0gICAgcmV0dXJuIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgZWxlbWVudCk7CisgICAgcmV0dXJuIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdElu
V29ybGQobW9kdWxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIEpTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgSlNNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRl
eCA1MjY4ZjAxNWE1OGUzOGJhZThlYjljMjYxMjAxOGMxYWRkY2Y3MDYyLi45ZTIwYzJjZTk2YmZj
YzA5N2ZmNWJhZTE5MTNlZWNmZjI1YjcwOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIENhY2hlZE1v
ZHVsZVNjcmlwdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgSFRN
TFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBMb2FkYWJsZVNjcmlwdDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFdpZGdldDsKQEAgLTExMywxMyAr
MTE0LDEzIEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRy
KTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmLCBET01XcmFwcGVyV29ybGQmLCBFeGNlcHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwogCi0g
ICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25z
dCBTdHJpbmcmIG1vZHVsZU5hbWUsIERPTVdyYXBwZXJXb3JsZCYsIEVsZW1lbnQmKTsKLSAgICB2
b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBFbGVtZW50Jik7Ci0gICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChD
YWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldv
cmxkJiwgRWxlbWVudCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVT
Y3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRWxlbWVudCYpOworICAgIHZvaWQgbG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBMb2FkYWJsZVNjcmlwdCYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZvaWQg
bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIExvYWRhYmxlU2NyaXB0Jik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgTG9hZGFibGVT
Y3JpcHQmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRhYmxlU2NyaXB0
Jik7CiAKLSAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3Js
ZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJiwgRWxlbWVudCYpOwotICAg
IEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiwgRWxlbWVudCYpOworICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgLCBET01XcmFwcGVyV29ybGQmKTsKKyAg
ICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNj
cmlwdCYpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpT
Qzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXgg
YjNmNjViMmMzMzJlNDY5ZTE0OGRiYjUzMjE4OWVjOWIxNDM1YWZkNC4uODJiNmYyY2E4YjE0NWZl
ZDlhZjEyNDEwOTcyMzQwOTliZjI4MTI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0zMSwxNSArMzEsMTQgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCi0jaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVNb2R1bGVT
Y3JpcHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3Jp
cHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9TeW1ib2wuaD4KQEAgLTEzNiw5
ICsxMzUsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJl
c29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYQogCiBKU0M6OkpTSW50ZXJuYWxQcm9t
aXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xv
YmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpT
Qzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSwgSlNDOjpKU1ZhbHVlIGluaXRpYXRvcikKIHsKLSAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZXNlIGFyZSB0cnVlPyBXaHkgZG9uJ3Qgd2Ug
bmVlZCB0byBjaGVjaz8KLSAgICBBU1NFUlQoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRWxlbWVudCo+
KGluaXRpYXRvcikpOwotICAgIEFTU0VSVChpc1NjcmlwdEVsZW1lbnQoSlNDOjpqc0R5bmFtaWND
YXN0PEpTRWxlbWVudCo+KGluaXRpYXRvciktPndyYXBwZWQoKSkpOworICAgIEFTU0VSVChKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU1NjcmlwdEluaXRpYXRvcio+KGluaXRpYXRvcikpOwogCiAg
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
anNHbG9iYWxPYmplY3QpOwogICAgIGF1dG8mIGpzUHJvbWlzZSA9ICpKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCAmZ2xvYmFsT2JqZWN0KTsKQEAgLTE2NCw3ICsx
NjEsNyBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNo
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsTwogICAgIGlmIChhdXRvKiBmcmFtZSA9IG1f
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBhdXRvIGxvYWRlciA9IENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5nZXQoKSk7CiAgICAgICAgIG1fbG9h
ZGVycy5hZGQobG9hZGVyLmNvcHlSZWYoKSk7Ci0gICAgICAgIGlmICghbG9hZGVyLT5sb2FkKGRv
d25jYXN0U2NyaXB0RWxlbWVudChKU0M6OmpzQ2FzdDxKU0VsZW1lbnQqPihpbml0aWF0b3IpLT53
cmFwcGVkKCkpLCBjb21wbGV0ZWRVUkwpKSB7CisgICAgICAgIGlmICghbG9hZGVyLT5sb2FkKG1f
ZG9jdW1lbnQsICpzdGF0aWNfY2FzdDxMb2FkYWJsZVNjcmlwdCo+KEpTQzo6anNDYXN0PEpTQzo6
SlNTY3JpcHRJbml0aWF0b3IqPihpbml0aWF0b3IpLT5pbml0aWF0b3IoKSksIGNvbXBsZXRlZFVS
TCkpIHsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgICAgIG1f
bG9hZGVycy5yZW1vdmUoV1RGTW92ZShsb2FkZXIpKTsKICAgICAgICAgICAgIGRlZmVycmVkLT5y
ZWplY3QoZnJhbWUtPnNjcmlwdCgpLm1vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVycm9yU3lt
Ym9sKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApp
bmRleCA5MDk2MWI4ZWNiODIzM2FjZTY3NjU5NjU4YTU0N2YxYjM1ZDczNGJiLi45OGNiMDZkZmI3
OGM1M2Y4YmQ1NjRmYjI3NDFhMDAzMWE0ODQxZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApAQCAtMzMsMjYgKzMzLDI2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjpjcmVhdGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNhY2hl
ZFNjcmlwdCkKK1JlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IExvYWRhYmxlQ2xhc3NpY1Njcmlw
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9y
TmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICBBU1NFUlQoY2FjaGVk
U2NyaXB0KTsKLSAgICBhdXRvIHNjcmlwdCA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVDbGFzc2lj
U2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkpOwotICAgIGNhY2hlZFNjcmlwdC0+YWRkQ2xp
ZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZUNsYXNzaWNTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hh
cnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpKTsKIH0KIAogTG9h
ZGFibGVDbGFzc2ljU2NyaXB0Ojp+TG9hZGFibGVDbGFzc2ljU2NyaXB0KCkKIHsKLSAgICBtX2Nh
Y2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9jYWNoZWRTY3JpcHQp
CisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBib29s
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAogeworICAgIEFTU0VSVCht
X2NhY2hlZFNjcmlwdCk7CiAgICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjplcnJvcigpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAg
ICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuIG1fZXJyb3I7CiAKQEAgLTY0LDExICs2NCwx
MyBAQCBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjplcnJvcigpIGNvbnN0CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXND
YW5jZWxlZCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKIHZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Cisg
ICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICBpZiAocmVzb3VyY2UucmVzb3VyY2VFcnJv
cigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBs
b2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwog
ICAgICAgICBtX2Vycm9yID0gRXJyb3IgewpAQCAtMTA1LDQgKzEwNywxNCBAQCB2b2lkIExvYWRh
YmxlQ2xhc3NpY1NjcmlwdDo6ZXhlY3V0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQog
ICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29kZSht
X2NhY2hlZFNjcmlwdC5nZXQoKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlByb2dy
YW0pKTsKIH0KIAorYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoIW1fY2FjaGVkU2Ny
aXB0KTsKKyAgICBtX2NhY2hlZFNjcmlwdCA9IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1l
bnQsIHNvdXJjZVVSTCk7CisgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIHJldHVy
biB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVD
bGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmgKaW5kZXggYWQ0MWRjMmFiN2Q0MWQwZjE1YThkYjIyYTBkMDU0NjYzOTRkY2FhOS4uNmEzYTMw
YzNlNzJjMjQ3YWU3ZDUzMDQxYjhkOThkMzg3YzAzZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2Fj
aGVkUmVzb3VyYwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRhYmxlQ2xhc3NpY1NjcmlwdCgp
OwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVD
bGFzc2ljU2NyaXB0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKICAgICBib29s
IGlzTG9hZGVkKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJyb3Io
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmluYWw7CkBAIC01
MiwxMiArNTIsMTcgQEAgY2xhc3MgTG9hZGFibGVDbGFzc2ljU2NyaXB0IGZpbmFsIDogcHVibGlj
IExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZFJlc291cmMKIAogICAgIHZvaWQgZXhlY3V0
ZShTY3JpcHRFbGVtZW50JikgZmluYWw7CiAKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBjb25z
dCBVUkwmKTsKKwogcHJpdmF0ZToKLSAgICBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNhY2hlZFNjcmlwdCkgOiBtX2NhY2hlZFNjcmlw
dChXVEZNb3ZlKGNhY2hlZFNjcmlwdCkpIHsgfQorICAgIExvYWRhYmxlQ2xhc3NpY1NjcmlwdChj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wg
aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgICAgIDogTG9hZGFibGVTY3JpcHQobm9uY2Us
IGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNo
YWRvd1RyZWUpCisgICAgeworICAgIH0KIAogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlw
dD4gbV9jYWNoZWRTY3JpcHQ7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiBtX2NhY2hlZFNjcmlwdCB7IH07CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IHN0ZDo6bnVsbG9wdCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVs
ZVNjcmlwdC5jcHAKaW5kZXggODQyODdlZTdiMWEzZTcyNDFmYTdlMWYwN2NlOThhNTRlMDlhZmZl
Ni4uMGViMTBiNWI0ZGJhNzI4ZTliZDRlZWNjMmEwYjMyZTJmZmQyMjJkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCkBAIC0zMCwxNiArMzAsMTYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExvYWRh
YmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQp
CitSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29s
IGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHRSZWYo
Km5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpKTsKLSAgICBtb2R1bGVTY3Jp
cHQuYWRkQ2xpZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5N
b2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwgQ2Fj
aGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUoKSkpOwogfQogCi1Mb2FkYWJsZU1vZHVsZVNjcmlwdDo6
TG9hZGFibGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCi0g
ICAgOiBtX21vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpCitMb2FkYWJsZU1vZHVsZVNjcmlwdDo6
TG9hZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBSZWY8Q2FjaGVk
TW9kdWxlU2NyaXB0PiYmIG1vZHVsZVNjcmlwdCkKKyAgICA6IExvYWRhYmxlU2NyaXB0KG5vbmNl
LCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKQorICAgICwgbV9tb2R1bGVTY3JpcHQoV1RGTW92ZShtb2R1bGVTY3JpcHQpKQog
eworICAgIG1fbW9kdWxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiBMb2FkYWJsZU1v
ZHVsZVNjcmlwdDo6fkxvYWRhYmxlTW9kdWxlU2NyaXB0KCkKQEAgLTcyLDQgKzcyLDE0IEBAIHZv
aWQgTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmV4ZWN1dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxl
bWVudCkKICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVNb2R1bGVTY3JpcHQobV9tb2R1bGVTY3Jp
cHQuZ2V0KCkpOwogfQogCit2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMKQoreworICAgIG1fbW9kdWxlU2NyaXB0LT5s
b2FkKGRvY3VtZW50LCByb290VVJMLCAqdGhpcyk7Cit9CisKK3ZvaWQgTG9hZGFibGVNb2R1bGVT
Y3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQoreworICAgIG1fbW9kdWxlU2NyaXB0LT5sb2FkKGRvY3VtZW50LCBzb3VyY2VD
b2RlLCAqdGhpcyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZU1vZHVsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgKaW5kZXggZGRlYTlmOGNiMDUwYWFiYmJjMWRkYmQzNzk4MTYwMmI1MDZlNmIyNC4uODNm
NTM5MWY1MmZjOTEzZWUzMTQ3ZTc5ZjZhMTExZWM0MTkyOWQyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTG9hZGFi
bGVNb2R1bGVTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2Fj
aGVkTW9kdWxlU2MKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZU1vZHVsZVNjcmlwdCgp
OwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKENhY2hlZE1v
ZHVsZVNjcmlwdCYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJv
b2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7CkBA
IC00OSw4ICs0OSwxMSBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1Ymxp
YyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRNb2R1bGVTYwogCiAgICAgdm9pZCBzZXRF
cnJvcihFcnJvciYmKTsKIAorICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYgcm9v
dFVSTCk7CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYp
OworCiBwcml2YXRlOgotICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlw
dCYpOworICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwg
UmVmPENhY2hlZE1vZHVsZVNjcmlwdD4mJik7CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZE1vZHVsZVNjcmlwdCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0
LmNwcAppbmRleCBlZmRiNmI4OTQ4NmQ0OTNjOThmYjFmNWIzNTc2YjRjNjk2M2UwYjRjLi5hM2Yw
ZDE0MmFhY2JkNzQxMGFjYzVkMzY2YmFhOTU5MjhkZDc1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZVNjcmlwdC5jcHAKQEAgLTI2LDcgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHQuaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2FkYWJs
ZVNjcmlwdENsaWVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNTUsNCArNjAsMjUgQEAgdm9pZCBMb2FkYWJsZVNjcmlwdDo6bm90aWZ5Q2xp
ZW50RmluaXNoZWQoKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsKIH0K
IAorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBMb2FkYWJsZVNjcmlwdDo6cmVx
dWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNl
VVJMKSBjb25zdAoreworICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsK
KyAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3VyaXR5
UG9saWN5KCkpOworICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZShtX25vbmNlLCBtX2lzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKTsKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgb3B0
aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisKKyAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9ucyk7
CisgICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1v
ZGUsIGRvY3VtZW50KTsKKyAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZChkb2N1bWVudCk7CisKKyAgICByZXF1ZXN0LnNldENoYXJzZXQobV9jaGFyc2V0KTsKKyAgICBy
ZXF1ZXN0LnNldEluaXRpYXRvcihtX2luaXRpYXRvck5hbWUpOworCisgICAgcmV0dXJuIGRvY3Vt
ZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3Qp
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAppbmRleCBiYTIyZmIxNWI4
MTRkNzE3ZDhkMjc0YzgwNDZmYTk1MGUyMTM5ODFhLi41NmE1MWQyYzI3MjdlODYyNWY1YzVjMjIw
NmJiNDdlOGI4MGMzYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaApAQCAtMjUs
MTcgKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhY2hlZFNjcmlwdDsKK2Ns
YXNzIERvY3VtZW50OwogY2xhc3MgTG9hZGFibGVTY3JpcHRDbGllbnQ7CiBjbGFzcyBTY3JpcHRF
bGVtZW50OworY2xhc3MgVVJMOwogCi1jbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBSZWZD
b3VudGVkPExvYWRhYmxlU2NyaXB0PiB7CitjbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBK
U0M6OlNjcmlwdEluaXRpYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvclR5cGUg
ewogICAgICAgICBDYWNoZWRTY3JpcHQsCkBAIC02OCwxMCArNzMsMjcgQEAgY2xhc3MgTG9hZGFi
bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxMb2FkYWJsZVNjcmlwdD4gewogICAgIHZpcnR1
YWwgYm9vbCBpc0NsYXNzaWNTY3JpcHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc01vZHVsZVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCkgY29uc3Q7CisKIHByb3RlY3RlZDoK
KyAgICBMb2FkYWJsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNy
b3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgICAgIDog
bV9ub25jZShub25jZSkKKyAgICAgICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1v
ZGUpCisgICAgICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCisgICAgICAgICwgbV9pbml0aWF0b3JO
YW1lKGluaXRpYXRvck5hbWUpCisgICAgICAgICwgbV9pc0luVXNlckFnZW50U2hhZG93VHJlZShp
c0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICB7CisgICAgfQorCiAgICAgdm9pZCBub3RpZnlD
bGllbnRGaW5pc2hlZCgpOwogCiBwcml2YXRlOgorICAgIFN0cmluZyBtX25vbmNlOworICAgIFN0
cmluZyBtX2Nyb3NzT3JpZ2luTW9kZTsKKyAgICBTdHJpbmcgbV9jaGFyc2V0OworICAgIEF0b21p
Y1N0cmluZyBtX2luaXRpYXRvck5hbWU7CisgICAgYm9vbCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dU
cmVlIHsgZmFsc2UgfTsKKwogICAgIEhhc2hDb3VudGVkU2V0PExvYWRhYmxlU2NyaXB0Q2xpZW50
Kj4gbV9jbGllbnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4
IGY2ODYzN2FjNGQ5NWNlODhhMWZiMDU1MzFkZmRhZmY1MDAxNDAwZmUuLmI0MzNmYmMyODVmNDVk
MGVhMGE2N2ExMDllZWRmMTdmOGIzMjg5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAKQEAgLTI5MiwxMSArMjkyLDE0IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdENs
YXNzaWNTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAKICAgICBBU1NFUlQoIW1fbG9h
ZGFibGVTY3JpcHQpOwogICAgIGlmICghc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHNvdXJjZVVSTCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBub25jZUF0dHJpYnV0ZSA9
IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6bm9u
Y2VBdHRyKTsKLSAgICAgICAgU3RyaW5nIGNyb3NzT3JpZ2luTW9kZSA9IG1fZWxlbWVudC5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsK
LSAgICAgICAgYXV0byByZXF1ZXN0ID0gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShtX2VsZW1lbnQu
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzb3VyY2VVUkwpLCBub25jZUF0dHJpYnV0ZSwgY3Jvc3NP
cmlnaW5Nb2RlKTsKLSAgICAgICAgaWYgKHJlcXVlc3QpIHsKLSAgICAgICAgICAgIG1fbG9hZGFi
bGVTY3JpcHQgPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3Qp
KTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSgK
KyAgICAgICAgICAgIG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6bm9uY2VBdHRyKSwKKyAgICAgICAgICAgIG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwKKyAgICAgICAg
ICAgIHNjcmlwdENoYXJzZXQoKSwKKyAgICAgICAgICAgIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwK
KyAgICAgICAgICAgIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAg
ICAgaWYgKHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwgbV9lbGVtZW50LmRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoc291cmNlVVJMKSkpIHsKKyAgICAgICAgICAgIG1fbG9hZGFibGVT
Y3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQg
PSB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzM5LDkgKzM0Miw5IEBAIGJvb2wgU2NyaXB0
RWxlbWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0
YXJ0UG9zaXRpb24pCiAgICAgICAgIH0KIAogICAgICAgICBtX2lzRXh0ZXJuYWxTY3JpcHQgPSB0
cnVlOwotICAgICAgICBhdXRvIG1vZHVsZVNjcmlwdCA9IENhY2hlZE1vZHVsZVNjcmlwdDo6Y3Jl
YXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUpOwotICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0g
TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShtb2R1bGVTY3JpcHQuZ2V0KCkpOwotICAgICAg
ICBtb2R1bGVTY3JpcHQtPmxvYWQobV9lbGVtZW50LCBtb2R1bGVTY3JpcHRSb290VVJMKTsKKyAg
ICAgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBj
cm9zc09yaWdpbk1vZGUsIHNjcmlwdENoYXJzZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgpLCBt
X2VsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgICAgIHNjcmlwdC0+bG9h
ZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwgbW9kdWxlU2NyaXB0Um9vdFVSTCk7CisgICAgICAgIG1f
bG9hZGFibGVTY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMzU0LDQyICszNTcsMTIgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
TW9kdWxlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbikKICAg
ICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0lubGluZVNjcmlwdChtX2VsZW1lbnQu
ZG9jdW1lbnQoKS51cmwoKSwgbV9zdGFydExpbmVOdW1iZXIsIHNvdXJjZUNvZGUuc291cmNlKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBoYXNLbm93bk5vbmNlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBtb2R1bGVTY3JpcHQgPSBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNy
ZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlKTsKLSAgICBtX2xvYWRhYmxlU2NyaXB0ID0gTG9h
ZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShtb2R1bGVTY3JpcHQuZ2V0KCkpOwotICAgIG1vZHVs
ZVNjcmlwdC0+bG9hZChtX2VsZW1lbnQsIHNvdXJjZUNvZGUpOworICAgIGF1dG8gc2NyaXB0ID0g
TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBzY3Jp
cHRDaGFyc2V0KCksIG1fZWxlbWVudC5sb2NhbE5hbWUoKSwgbV9lbGVtZW50LmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOworICAgIHNjcmlwdC0+bG9hZChtX2VsZW1lbnQuZG9jdW1lbnQoKSwg
c291cmNlQ29kZSk7CisgICAgbV9sb2FkYWJsZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBT
Y3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KGNvbnN0
IFVSTCYgc291cmNlVVJMKQotewotICAgIEFTU0VSVChtX2xvYWRhYmxlU2NyaXB0KTsKLSAgICBB
U1NFUlQoaXM8TG9hZGFibGVNb2R1bGVTY3JpcHQ+KCptX2xvYWRhYmxlU2NyaXB0KSk7Ci0gICAg
YXV0byYgbW9kdWxlU2NyaXB0ID0gZG93bmNhc3Q8TG9hZGFibGVNb2R1bGVTY3JpcHQ+KCptX2xv
YWRhYmxlU2NyaXB0KTsKLSAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShzb3VyY2VV
UkwsIG1vZHVsZVNjcmlwdC5tb2R1bGVTY3JpcHQoKS5ub25jZSgpLCBtb2R1bGVTY3JpcHQubW9k
dWxlU2NyaXB0KCkuY3Jvc3NPcmlnaW5Nb2RlKCkpOwotfQotCi1DYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoY29u
c3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgbm9uY2VBdHRyaWJ1dGUsIGNvbnN0IFN0
cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKQotewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fZWxl
bWVudC5kb2N1bWVudCgpOwotICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3Mo
KTsKLSAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOwotICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZShub25jZUF0dHJpYnV0ZSwgbV9l
bGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOwotICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKTsKLSAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24g
PSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBv
bGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVj
azsKLQotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChz
b3VyY2VVUkwpLCBvcHRpb25zKTsKLSAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09y
aWdpbihjcm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICByZXF1ZXN0LnVwZ3JhZGVJbnNl
Y3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7Ci0KLSAgICByZXF1ZXN0LnNldENoYXJzZXQo
c2NyaXB0Q2hhcnNldCgpKTsKLSAgICByZXF1ZXN0LnNldEluaXRpYXRvcigmZWxlbWVudCgpKTsK
LQotICAgIHJldHVybiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RTY3Jp
cHQoV1RGTW92ZShyZXF1ZXN0KSk7Ci19Ci0KIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNs
YXNzaWNTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBB
U1NFUlQobV9hbHJlYWR5U3RhcnRlZCk7CkBAIC00MzAsNyArNDAzLDcgQEAgdm9pZCBTY3JpcHRF
bGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0KQogICAgIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURl
c2N0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcigmZG9jdW1lbnQpOwogICAgIEN1cnJlbnRT
Y3JpcHRJbmNyZW1lbnRlciBjdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIoZG9jdW1lbnQsIG1fZWxl
bWVudCk7CiAKLSAgICBmcmFtZS0+c2NyaXB0KCkubGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0
KG1vZHVsZVNjcmlwdCwgZWxlbWVudCgpKTsKKyAgICBmcmFtZS0+c2NyaXB0KCkubGlua0FuZEV2
YWx1YXRlTW9kdWxlU2NyaXB0KG1vZHVsZVNjcmlwdCk7CiB9CiAKIHZvaWQgU2NyaXB0RWxlbWVu
dDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxl
U2NyaXB0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggNWYxODFkZjJlM2IwZTg4
OGVmMzk0N2JiY2RjMThkOTMwN2RkZWIxYS4uMDMwMjVmODZkMGI0ZTUwZmU5ZjE4MDJhNDQ2YzZj
NWYwN2UyYzFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC02Niw4ICs2Niw2
IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogICAgIGJvb2wgd2lsbEV4ZWN1dGVJbk9yZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93aWxsRXhlY3V0ZUluT3JkZXI7IH0KICAgICBMb2FkYWJsZVNjcmlw
dCogbG9hZGFibGVTY3JpcHQoKSB7IHJldHVybiBtX2xvYWRhYmxlU2NyaXB0LmdldCgpOyB9CiAK
LSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRo
Q2FjaGVGb3JNb2R1bGVTY3JpcHQoY29uc3QgVVJMJik7Ci0KICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNjb25jZXB0LXNjcmlwdC10
eXBlCiAgICAgZW51bSBjbGFzcyBTY3JpcHRUeXBlIHsgQ2xhc3NpYywgTW9kdWxlIH07CiAgICAg
U2NyaXB0VHlwZSBzY3JpcHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc01vZHVsZVNjcmlwdCA/
IFNjcmlwdFR5cGU6Ok1vZHVsZSA6IFNjcmlwdFR5cGU6OkNsYXNzaWM7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298564</attachid>
            <date>2017-01-11 02:33:36 -0800</date>
            <delta_ts>2017-01-11 02:48:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166888-20170111193158.patch</filename>
            <type>text/plain</type>
            <size>59063</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODY4MjFhZGVmYWJlOGY4ZGE4YzMyMjcyNGU0N2YyYmM1NWQwNGFjLi42ZmIzMDJmYmI4Y2JkOTc4
MTRjNGU4NDUyMzc1NzFkN2ZhODVhZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBT
Y3JpcHRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU2NyaXB0SW5pdGlhdG9yIGFuZCBKU1NjcmlwdEluaXRpYXRvci4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0SW5pdGlh
dG9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNw
cC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmRlc3Ryb3kpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU2Ny
aXB0SW5pdGlhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NjcmlwdElu
aXRpYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNTY3JpcHRJbml0aWF0b3I6OmluaXRp
YXRvcik6CisgICAgICAgIChKU0M6OkpTU2NyaXB0SW5pdGlhdG9yOjpKU1NjcmlwdEluaXRpYXRv
cik6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njcmlw
dEluaXRpYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3Jp
cHQuY3BwLgorICAgICAgICAoSlNDOjpTY3JpcHRJbml0aWF0b3I6On5TY3JpcHRJbml0aWF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0wMS0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgSlNTb3VyY2VDb2RlIHRvIHBy
b3BhZ2F0ZSBTb3VyY2VDb2RlIGluIG1vZHVsZSBwaXBlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhNjQ4
Y2FlNDFhMTIyYjVkOTA3MGI5ZTEyODQzYTNlODNhNjVjMjUuLjA4ZDVjMDY5ZDhhMDMzYTdjZjFl
MGY0MGRkZDczZjZjNDVhNzYxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxNy0w
MS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBE
ZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBTY3JpcHRFbGVtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY4ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3
ZSB1c2UgU2NyaXB0RWxlbWVudCAoSlNFbGVtZW50IGZvciBTY3JpcHRFbGVtZW50KSBhcyB0aGUg
bW9kdWxlIGxvYWRpbmcgaW5pdGlhdG9yLgorICAgICAgICBUaGlzIGVsZW1lbnQgaXMgdXNlZCB0
byB0cmFuc2ZlciB0aGUgbWV0YWRhdGEgbGlrZSBjaGFyc2V0IHRocm91Z2hvdXQgdGhlIG1vZHVs
ZSBwaXBlbGluZS4KKyAgICAgICAgQXMgYSByZXN1bHQsIG91ciBtb2R1bGUgbG9hZGVyIGluIHRo
ZSBicm93c2VyIHNpZGUgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggU2NyaXB0RWxlbWVudC4KKyAg
ICAgICAgSXQgaXMgbm90IGdvb2Qgc2luY2UgaXQgcHJldmVudCB1cyBmcm9tIHVzaW5nIHRoZSBt
b2R1bGUgbG9hZGVyIGluIHRoZSBub24tRE9NIGVudmlyb25tZW50IGxpa2UKKyAgICAgICAgV2Vi
IFdvcmtlcnMuCisKKyAgICAgICAgU28gd2UgZGVjb3VwbGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1h
dGlvbnMgZnJvbSBTY3JpcHRFbGVtZW50LiBXZSBtb3ZlIHRoZXNlIGluZm9ybWF0aW9uIHRvCisg
ICAgICAgIExvYWRhYmxlU2NyaXB0LiBBbmQgd2UgdXNlIEpTU2NyaXB0SW5pdGlhdG9yIHRvIHRy
YW5zZmVyIExvYWRhYmxlU2NyaXB0IHRocm91Z2ggdGhlIEpTIGltcGxlbWVudGVkCisgICAgICAg
IG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuIFdlIHNlbGVjdCBMb2FkYWJsZVNjcmlwdCBpbnN0ZWFk
IG9mIExvYWRhYmxlTW9kdWxlU2NyaXB0IHNpbmNlIHRoaXMgaW5pdGlhdG9yCisgICAgICAgIGlu
Zm9ybWF0aW9uIHdpbGwgYmUgbGV2ZXJhZ2VkIGV2ZW4gaW4gY2xhc3NpYyBzY3JpcHRzIG9uY2Ug
d2UgaW1wbGVtZW50IHRoZSBkeW5hbWljIGltcG9ydC4KKworICAgICAgICBObyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5j
cHAuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRJbml0aWF0b3Iu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkTW9kdWxlU2NyaXB0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNj
cmlwdDo6Q2FjaGVkTW9kdWxlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHQuaDoKKyAgICAgICAgTm93IHdlIGNhbiBtZXJnZSBDYWNoZWRN
b2R1bGVTY3JpcHQgdG8gTG9hZGFibGVTY3JpcHQuIEJ1dCB3ZSBkbyBub3QgZG8gdGhpcyBpbiB0
aGlzIHBhdGNoIHNpbmNlCisgICAgICAgIHdlIGZvY3VzIG9uIGRlY291cGxpbmcgdGhlIGluaXRp
YXRvciBpbmZvcm1hdGlvbiBmcm9tIFNjcmlwdEVsZW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZE1vZHVsZVNjcmlwdDo6bm9uY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkTW9kdWxlU2NyaXB0Ojpjcm9zc09yaWdpbk1vZGUpOiBEZWxldGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1
bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6fkxvYWRhYmxlQ2xhc3NpY1Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmlzTG9hZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bG9hZCk6CisgICAgICAgICog
ZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVs
ZVNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJsZU1v
ZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6bG9h
ZCk6CisgICAgICAgICogZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0Lmg6CisgICAgICAgICogZG9t
L0xvYWRhYmxlU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0Ojpy
ZXF1ZXN0U2NyaXB0V2l0aENhY2hlKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlU2NyaXB0OjpMb2FkYWJsZVNjcmlwdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6cmVxdWVzdENsYXNzaWNTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6cmVxdWVzdE1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKwogMjAxNy0wMS0xMSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE4Mjk0Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAwMDViOGQ5NGEyNjAzNWMzMjQ5M2MxMzIzNGMwZDcyYzJkOGU5ZDhkLi5mNjAxNWI0OTIw
YjQwZDhiYjU4ZDI5ZmNjMDk4ODYzZGVjNjMxOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC03ODQsNiArNzg0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCiAgICAgcnVudGltZS9KU1By
b3h5LmNwcAogICAgIHJ1bnRpbWUvSlNTY29wZS5jcHAKKyAgICBydW50aW1lL0pTU2NyaXB0SW5p
dGlhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAKICAg
ICBydW50aW1lL0pTU2V0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYzODRmYWM3MTFiZTdmMzM0YjhmODg2ZmYwNjE2
MzI3NDE1NWUyYS4uZjIwMzYwZDIwNmJhOGI4NGE5MTlhNTFiZGFlOTU5Y2VlM2E3NThlYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNzIsNiArMjM3Miw5IEBACiAJCUZFRkQ2
RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAv
KiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGQTNBQjIxMUM4NDk0NTI0QUIzOTAyNjcgLyogSlNTb3VyY2VDb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY3MzkyNjkx
OERDNjQzMzBBRkNERjBENyAvKiBKU1NvdXJjZUNvZGUuY3BwICovOyB9OwogCQlCREZDQjJCQkU5
MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMDMyMTc1REYxQUQ0N0Q4OTk4QjM0RTEgLyogSlNTb3Vy
Y2VDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMTQ4MTVGNUY5OTFDNDZCRUI5OEQwMDE2IC8qIEpTU2NyaXB0SW5pdGlhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExQzE5N0MyNjI0ODQ4
RURBODRDRUQ3RiAvKiBKU1NjcmlwdEluaXRpYXRvci5jcHAgKi87IH07CisJCTkwNjQzMzdERDRC
MDQwMkJBRjM0QTU5MiAvKiBKU1NjcmlwdEluaXRpYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpT
U2NyaXB0SW5pdGlhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0VBRTdEN0I4ODlCNDc3QkE5M0FCQTZDIC8qIFNjcmlwdEluaXRpYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODg1MjE1MUE5
QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEluaXRpYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQ5MDAs
NiArNDkwMyw5IEBACiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY3MzkyNjkxOERDNjQzMzBBRkNERjBENyAv
KiBKU1NvdXJjZUNvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNTb3VyY2VDb2RlLmNwcDsgcGF0aCA9IEpTU291cmNlQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNTb3VyY2VDb2RlLmg7IHBhdGgg
PSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTFDMTk3QzI2
MjQ4NDhFREE4NENFRDdGIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU2NyaXB0SW5pdGlhdG9yLmNwcDsgcGF0aCA9IEpTU2Ny
aXB0SW5pdGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkJBOTNDOTU5
MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTU2NyaXB0SW5pdGlhdG9yLmg7IHBhdGggPSBKU1NjcmlwdEluaXRp
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4ODUyMTUxQTlDMzg0MjM4OUIz
MjE1QjcgLyogU2NyaXB0SW5pdGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNjcmlwdEluaXRpYXRvci5oOyBwYXRoID0gU2NyaXB0SW5pdGlhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTY3NDAsNiAr
Njc0Niw5IEBACiAJCQkJNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5o
ICovLAogCQkJCUY3MzkyNjkxOERDNjQzMzBBRkNERjBENyAvKiBKU1NvdXJjZUNvZGUuY3BwICov
LAogCQkJCTMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLywKKwkJ
CQkxMUMxOTdDMjYyNDg0OEVEQTg0Q0VEN0YgLyogSlNTY3JpcHRJbml0aWF0b3IuY3BwICovLAor
CQkJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1NjcmlwdEluaXRpYXRvci5oICovLAor
CQkJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRJbml0aWF0b3IuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05
MTE0LDYgKzkxMjMsOCBAQAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3lu
dGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0
IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkRGQ0IyQkJFOTBGNDEzNDlF
MUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTA2NDMzN0RENEIw
NDAyQkFGMzRBNTkyIC8qIEpTU2NyaXB0SW5pdGlhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
RUFFN0Q3Qjg4OUI0NzdCQTkzQUJBNkMgLyogU2NyaXB0SW5pdGlhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTEwNTAyLDYgKzEwNTEzLDcgQEAKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBM0FC
MjExQzg0OTQ1MjRBQjM5MDI2NyAvKiBKU1NvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMTQ4MTVGNUY5OTFDNDZCRUI5OEQwMDE2IC8qIEpTU2NyaXB0SW5pdGlhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRl
eCA2Y2IyMWNkNzFjYmUxYjY2MDZkNTgyMzkyYmI5ZGU0NDRiM2MzYjU4Li44YjYxNWExYTNhNTE1
MTA1OTY3MjA2NWQ0NzJiN2U4YWU4NTg2OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcApAQCAtMTU2LDIxICsxNTYsMjEgQEAgdm9pZCBEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgCiAgICAgU1RBVElDX0FTU0VSVChTdHJpbmdUeXBlID09
IDYpOwogICAgIFNUQVRJQ19BU1NFUlQoU3ltYm9sVHlwZSA9PSA3KTsKLSAgICBTVEFUSUNfQVNT
RVJUKE9iamVjdFR5cGUgPT0gMjIpOwotICAgIFNUQVRJQ19BU1NFUlQoRmluYWxPYmplY3RUeXBl
ID09IDIzKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBlID09IDI1KTsKLSAgICBT
VEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzMyk7Ci0gICAgU1RBVElDX0FTU0VSVChEZXJpdmVk
QXJyYXlUeXBlID09IDM0KTsKLSAgICBTVEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSA1
Mik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQ4QXJyYXlUeXBlID09IDM1KTsKLSAgICBTVEFUSUNf
QVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM2KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJy
YXlUeXBlID09IDM3KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4QXJyYXlUeXBlID09IDM4KTsK
LSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9PSAzOSk7Ci0gICAgU1RB
VElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0gNDApOwotICAgIFNUQVRJQ19BU1NFUlQoVWlu
dDMyQXJyYXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKEZsb2F0MzJBcnJheVR5cGUg
PT0gNDIpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSA0Myk7CisgICAg
U1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIzKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZpbmFs
T2JqZWN0VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAy
Nik7CisgICAgU1RBVElDX0FTU0VSVChBcnJheVR5cGUgPT0gMzQpOworICAgIFNUQVRJQ19BU1NF
UlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7CisgICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVj
dFR5cGUgPT0gNTMpOworICAgIFNUQVRJQ19BU1NFUlQoSW50OEFycmF5VHlwZSA9PSAzNik7Cisg
ICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlwZSA9PSAzNyk7CisgICAgU1RBVElDX0FTU0VS
VChJbnQzMkFycmF5VHlwZSA9PSAzOCk7CisgICAgU1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlw
ZSA9PSAzOSk7CisgICAgU1RBVElDX0FTU0VSVChVaW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDAp
OworICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJyYXlUeXBlID09IDQxKTsKKyAgICBTVEFUSUNf
QVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElDX0FTU0VSVChGbG9hdDMy
QXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0g
NDQpOwogICAgIFNUQVRJQ19BU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKICAg
ICBTVEFUSUNfQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gMik7CiAgICAg
U1RBVElDX0FTU0VSVChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9PSAweDQwMDAwMDAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCA5YjMyODI2MTg5NzIyY2VmZmU1Mjc2YmM2ZDRkZTlmZGRhZTg5NzFiLi5lYzI0
NzczYTMwMDQ1NzZjNGJkZDE0Y2ZlMDQzMDc4M2M2OTNjN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0zNDUsMjQg
KzM0NSwyNCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAweDBDCiAjIFR5cGUg
Y29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKIGNvbnN0IFN5bWJvbFR5cGUgPSA3Ci1j
b25zdCBPYmplY3RUeXBlID0gMjIKLWNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIzCi1jb25zdCBK
U0Z1bmN0aW9uVHlwZSA9IDI1Ci1jb25zdCBBcnJheVR5cGUgPSAzMwotY29uc3QgRGVyaXZlZEFy
cmF5VHlwZSA9IDM0Ci1jb25zdCBQcm94eU9iamVjdFR5cGUgPSA1MgorY29uc3QgT2JqZWN0VHlw
ZSA9IDIzCitjb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAorY29uc3QgSlNGdW5jdGlvblR5cGUg
PSAyNgorY29uc3QgQXJyYXlUeXBlID0gMzQKK2NvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNQor
Y29uc3QgUHJveHlPYmplY3RUeXBlID0gNTMKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVl
ZCB0byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFu
dWFsbHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9i
eV92YWwuCi1jb25zdCBJbnQ4QXJyYXlUeXBlID0gMzUKLWNvbnN0IEludDE2QXJyYXlUeXBlID0g
MzYKLWNvbnN0IEludDMyQXJyYXlUeXBlID0gMzcKLWNvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMzgK
LWNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDM5Ci1jb25zdCBVaW50MTZBcnJheVR5cGUg
PSA0MAotY29uc3QgVWludDMyQXJyYXlUeXBlID0gNDEKLWNvbnN0IEZsb2F0MzJBcnJheVR5cGUg
PSA0MgotY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQzCitjb25zdCBJbnQ4QXJyYXlUeXBlID0g
MzYKK2NvbnN0IEludDE2QXJyYXlUeXBlID0gMzcKK2NvbnN0IEludDMyQXJyYXlUeXBlID0gMzgK
K2NvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMzkKK2NvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9
IDQwCitjb25zdCBVaW50MTZBcnJheVR5cGUgPSA0MQorY29uc3QgVWludDMyQXJyYXlUeXBlID0g
NDIKK2NvbnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MworY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9
IDQ0CiAKIGNvbnN0IEZpcnN0QXJyYXlUeXBlID0gSW50OEFycmF5VHlwZQogY29uc3QgTGFzdEFy
cmF5VHlwZSA9IEZsb2F0NjRBcnJheVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NyaXB0SW5pdGlhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGFkNGNkZDVkNmQ0
OGQ3MzlhYjY2NWEwNmMwNzUyNTJiNDJjN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuY3BwCkBAIC0wLDAgKzEsNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNTY3JpcHRJbml0aWF0b3IuaCIKKworI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBKU1NjcmlwdEluaXRpYXRvcjo6c19pbmZvID0geyAiSlNTY3JpcHRJbml0aWF0b3IiLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU2NyaXB0SW5pdGlhdG9yKSB9Owor
Cit2b2lkIEpTU2NyaXB0SW5pdGlhdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBz
dGF0aWNfY2FzdDxKU1NjcmlwdEluaXRpYXRvcio+KGNlbGwpLT5+SlNTY3JpcHRJbml0aWF0b3Io
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTFiYWIxMDFkMDMxMmNj
MzllMmMxOWRkZWE4YTJjZTc4NzZiNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiU2NyaXB0SW5pdGlhdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU1NjcmlwdEluaXRpYXRvciA6IHB1YmxpYyBKU0NlbGwgeworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBKU0NlbGw7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhKU1NjcmlwdEluaXRpYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNTY3JpcHRJbml0aWF0b3IqIGNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8U2NyaXB0SW5pdGlhdG9yPiYm
IGluaXRpYXRvcikKKyAgICB7CisgICAgICAgIGF1dG8qIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTU2NyaXB0SW5pdGlhdG9yPih2bS5oZWFwKSkgSlNTY3JpcHRJbml0aWF0
b3Iodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbml0aWF0b3IpKTsKKyAgICAgICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
c3RhdGljIEpTU2NyaXB0SW5pdGlhdG9yKiBjcmVhdGUoVk0mIHZtLCBSZWZQdHI8U2NyaXB0SW5p
dGlhdG9yPiYmIGluaXRpYXRvcikKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHZt
LnNjcmlwdEluaXRpYXRvclN0cnVjdHVyZS5nZXQoKSwgV1RGTW92ZShpbml0aWF0b3IpKTsKKyAg
ICB9CisKKyAgICBTY3JpcHRJbml0aWF0b3IqIGluaXRpYXRvcigpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9pbml0aWF0b3IuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKKworcHJpdmF0ZToKKyAgICBKU1NjcmlwdEluaXRpYXRvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8U2NyaXB0SW5pdGlhdG9yPiYmIGluaXRp
YXRvcikKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9pbml0aWF0
b3IoV1RGTW92ZShpbml0aWF0b3IpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8U2NyaXB0
SW5pdGlhdG9yPiBtX2luaXRpYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBhZTE4NGRlMjdkZThmYTJjN2IxZWY5
Nzk3NWVhYzZiZWJiMTYzMzY0Li5hZmJlYTM4NjBlNGQ2YjM2N2ZhNDdmYzcxNjViZDk5ODZlMTli
ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNTEsNiArNTEs
NyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogCiAgICAgSlNGaXhlZEFycmF5VHlwZSwKICAg
ICBKU1NvdXJjZUNvZGVUeXBlLAorICAgIEpTU2NyaXB0SW5pdGlhdG9yVHlwZSwKIAogICAgIC8v
IFRoZSBPYmplY3RUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlz
IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QuCiAgICAgT2JqZWN0VHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0SW5pdGlhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRjYTEz
YzQzODI4ZGY4ODlmYjIzZjIzNjYwMTc0NmYwZmM2Mjk5OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEluaXRpYXRvci5oCkBAIC0wLDAgKzEs
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBTY3JpcHRJbml0aWF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3Jp
cHRJbml0aWF0b3I+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JpcHRJbml0aWF0b3IoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IDM4ZTk5YWQxNjQ5ZjExYjRlODRjZDBkNGIzZjQxODZhMzUyMGI5NGEuLjYyNmE0
MzAzYmQ2NDY2ZDczNmM4MjczNDY4YzZjYzUzZDE4YjJjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJKU01hcC5oIgogI2lu
Y2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTY3JpcHRJbml0aWF0b3IuaCIKICNpbmNsdWRlICJKU1Nv
dXJjZUNvZGUuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0yNDAsNiArMjQxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhp
cywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBmaXhlZEFycmF5U3RydWN0dXJlLnNldCgqdGhpcywgSlNGaXhlZEFycmF5OjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc291cmNlQ29kZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTU291cmNlQ29kZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OworICAgIHNjcmlwdEluaXRpYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2NyaXB0SW5pdGlh
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJl
Q2hhaW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggM2ViZWQ3M2U1YmExMTg1YjU3
NGNkMzcyNzQ5YzRiMGExN2UxNjkyNy4uZTVjN2ExNzlhNjdjZDFlZTFmNjZlZjMwNDIyNzAwOWMw
OTA1ZTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMjcsNiArMzI3LDcg
QEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBmaXhlZEFycmF5U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNvdXJjZUNvZGVT
dHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gc2NyaXB0SW5pdGlhdG9yU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3JpcHRJbml0
aWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NDRmYzUzZTZlMzcwNWJmM2QzYjJlODMyNTM3ZWU1NDQxMWNm
OWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NjcmlwdEluaXRpYXRvci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRJbml0aWF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0SW5pdGlh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzQwMTFlZWNiNjVhZmMzMjg5ZmVkZjdmNDkxOTUyZjA3Y2Y3YzFh
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvU2NyaXB0SW5pdGlhdG9yLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEluaXRpYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKaW5kZXggNGJlZjJhOGFhODM4
ZDc2MTczMzNlMzBmZDI2ZDlhYmQxYjdlZWQ4Ny4uMGZlYzRiNTliMWQyZDMxNGQ4MDQyZjcxMTNh
ZmI5OTk0YzU2ODZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHQuY3BwCkBAIC0yOSwzOCArMjksMzAgQEAKICNpbmNsdWRlICJDYWNoZWRN
b2R1bGVTY3JpcHRDbGllbnQuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxv
YWRlci5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJj
ZUNvZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q2FjaGVkTW9kdWxlU2NyaXB0
PiBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBT
dHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKK1JlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IENhY2hlZE1v
ZHVsZVNjcmlwdDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZWRN
b2R1bGVTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdCgpKTsKIH0KIAotQ2FjaGVkTW9kdWxlU2NyaXB0OjpD
YWNoZWRNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9z
c09yaWdpbk1vZGUpCi0gICAgOiBtX25vbmNlKG5vbmNlKQotICAgICwgbV9jcm9zc09yaWdpbk1v
ZGUoY3Jvc3NPcmlnaW5Nb2RlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJs
ZVNjcmlwdCkKIHsKKyAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKQorICAg
ICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1vZHVsZVNjcmlwdCgqdGhpcywgcm9vdFVSTC5zdHJp
bmcoKSwgbG9hZGFibGVTY3JpcHQpOwogfQogCi12b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9h
ZChFbGVtZW50JiBpbml0aWF0b3IsIGNvbnN0IFVSTCYgcm9vdFVSTCkKK3ZvaWQgQ2FjaGVkTW9k
dWxlU2NyaXB0Ojpsb2FkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewotICAgIGlm
IChhdXRvKiBmcmFtZSA9IGluaXRpYXRvci5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIGZy
YW1lLT5zY3JpcHQoKS5sb2FkTW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpLCBp
bml0aWF0b3IpOwotfQotCi12b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChFbGVtZW50JiBp
bml0aWF0b3IsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCi17Ci0gICAgaWYg
KGF1dG8qIGZyYW1lID0gaW5pdGlhdG9yLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHNvdXJjZUNvZGUsIGluaXRpYXRv
cik7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKKyAgICAgICAgZnJh
bWUtPnNjcmlwdCgpLmxvYWRNb2R1bGVTY3JpcHQoKnRoaXMsIHNvdXJjZUNvZGUsIGxvYWRhYmxl
U2NyaXB0KTsKIH0KIAogdm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6Om5vdGlmeUxvYWRDb21wbGV0
ZWQoVW5pcXVlZFN0cmluZ0ltcGwmIG1vZHVsZUtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmgKaW5kZXggOWVhYTc2YjRlZGVhY2MzODcwMGVk
YzA1NWQ5ZDQwOGYyZDA0M2MwMi4uNTYyZDkzZDA2M2IxZjRlYzRlY2VlN2JhNjk3YjkyYjU2Mjk1
MzExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxl
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2Ny
aXB0LmgKQEAgLTMyLDE1ICszMiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRNb2R1bGVTY3JpcHRDbGllbnQ7Ci1jbGFzcyBFbGVtZW50OworY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKIHB1YmxpYzoKICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogbW9kdWxlS2V5KCkgeyByZXR1cm4gbV9tb2R1bGVLZXkuZ2V0KCk7IH0K
IAotICAgIHZvaWQgZXZhbHVhdGUoRWxlbWVudCYpOwotCiAgICAgdm9pZCBub3RpZnlMb2FkQ29t
cGxldGVkKFVuaXF1ZWRTdHJpbmdJbXBsJiBtb2R1bGVLZXkpOwogICAgIHZvaWQgbm90aWZ5TG9h
ZEZhaWxlZChMb2FkYWJsZVNjcmlwdDo6RXJyb3ImJik7CiAgICAgdm9pZCBub3RpZnlMb2FkV2Fz
Q2FuY2VsZWQoKTsKQEAgLTUyLDIzICs1MCwxNiBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKICAgICB2b2lkIGFkZENs
aWVudChDYWNoZWRNb2R1bGVTY3JpcHRDbGllbnQmKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChD
YWNoZWRNb2R1bGVTY3JpcHRDbGllbnQmKTsKIAotICAgIHN0YXRpYyBSZWY8Q2FjaGVkTW9kdWxl
U2NyaXB0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09y
aWdpbk1vZGUpOwotCi0gICAgdm9pZCBsb2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29uc3QgVVJM
JiByb290VVJMKTsKLSAgICB2b2lkIGxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJik7CisgICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IGNyZWF0
ZSgpOwogCi0gICAgY29uc3QgU3RyaW5nJiBub25jZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9uY2U7
IH0KLSAgICBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3Jvc3NPcmlnaW5Nb2RlOyB9CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgVVJMJiBy
b290VVJMLCBMb2FkYWJsZVNjcmlwdCYpOworICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYpOwogCiBwcml2YXRlOgotICAgIENh
Y2hlZE1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3Nz
T3JpZ2luTW9kZSk7Ci0KICAgICB2b2lkIG5vdGlmeUNsaWVudEZpbmlzaGVkKCk7CiAKICAgICBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IG1fbW9kdWxlS2V5OwogICAgIEhhc2hDb3VudGVkU2V0
PENhY2hlZE1vZHVsZVNjcmlwdENsaWVudCo+IG1fY2xpZW50czsKLSAgICBTdHJpbmcgbV9ub25j
ZTsKLSAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7CiAgICAgc3RkOjpvcHRpb25hbDxMb2Fk
YWJsZVNjcmlwdDo6RXJyb3I+IG1fZXJyb3I7CiAgICAgYm9vbCBtX3dhc0NhbmNlbGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNMb2FkZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKaW5kZXgg
YzQ5OWNkYTI0ZDIyOGZmZGZlOTk0ZWQ0NmNhN2IwNjFkNjM5YjBlYS4uNjBiZGQ0ODVjYWIzNThj
OWFjNWU3OTc5MWY1YWJkODI5NGU0MDE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCkBAIC0yNiwxNCArMjYs
MTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXIuaCIKIAotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJMb2FkYWJsZVNj
cmlwdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogCkBA
IC01OCwxMCArNTcsMTAgQEAgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjp+Q2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyKCkKICAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVy
Ojpsb2FkKFNjcmlwdEVsZW1lbnQmIHNjcmlwdEVsZW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJM
KQorYm9vbCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQsIGNvbnN0IFVSTCYgc291cmNlVVJMKQog
ewogICAgIEFTU0VSVCghbV9jYWNoZWRTY3JpcHQpOwotICAgIG1fY2FjaGVkU2NyaXB0ID0gc2Ny
aXB0RWxlbWVudC5yZXF1ZXN0U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KHNvdXJjZVVS
TCk7CisgICAgbV9jYWNoZWRTY3JpcHQgPSBsb2FkYWJsZVNjcmlwdC5yZXF1ZXN0U2NyaXB0V2l0
aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwpOwogICAgIGlmICghbV9jYWNoZWRTY3JpcHQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAppbmRleCA4YjM1ZmNiODdhZjYwN2Q3NmQy
NmJlZDc4ODI2Y2U5ZWQzMGU2ZGM2Li4zMmZkZTNiZmE3MjRkNTI1NzlkMjE0ZTU3ZTQ2ZDYzYTU1
NzM0NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRN
b2R1bGVTY3JpcHRMb2FkZXIuaApAQCAtMzYsOCArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQ7CiBjbGFzcyBDYWNoZWRTY3Jp
cHQ7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEpTRE9N
R2xvYmFsT2JqZWN0OwotY2xhc3MgU2NyaXB0RWxlbWVudDsKK2NsYXNzIExvYWRhYmxlU2NyaXB0
OwogY2xhc3MgVVJMOwogCiBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI+LCBwcml2YXRlIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGUKIAogICAgIHZpcnR1YWwgfkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcigpOwogCi0gICAgYm9v
bCBsb2FkKFNjcmlwdEVsZW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCk7CisgICAgYm9vbCBs
b2FkKERvY3VtZW50JiwgTG9hZGFibGVTY3JpcHQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCk7CiAK
ICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0
LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggMzdjOWVkZjM2ZTljZjNhZjAzYjViZTM4YjA0M2RhOGUwM2U1OTE3NS4u
OWY2NTE1NDM3ZTAxMTdhM2FlNmNiYzQxOTQxYjFlNWUyOGM0YTc3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQzLDYg
QEAKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNjAsNiArNTksNyBAQAog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU01vZHVsZVJl
Y29yZC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFBvc2l0aW9uLmg+CkBAIC0xODYsMzkgKzE4NiwzOSBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlv
bgogICAgIHJldHVybiBldmFsdWF0ZUluV29ybGQoc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIGV4Y2VwdGlvbkRldGFpbHMpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0
LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEVsZW1l
bnQmIGVsZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldv
cmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAogICAgIGF1dG8m
IHNoZWxsID0gKndpbmRvd1NoZWxsKHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpzaGVsbC53
aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogCi0gICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgdG9KUygmc3RhdGUsIHNo
ZWxsLndpbmRvdygpLCAmZWxlbWVudCkpOworICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJl
YWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIG1vZHVsZU5hbWUsIEpTQzo6SlNTY3JpcHRJ
bml0aWF0b3I6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZsb2FkYWJsZVNjcmlwdCB9KSk7CiAgICAg
c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhtb2R1bGVTY3JpcHQsIHByb21pc2UsIHdvcmxkKTsK
IH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVs
ZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEVsZW1lbnQm
IGVsZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVk
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgTG9h
ZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewotICAgIGxvYWRNb2R1bGVTY3JpcHRJbldv
cmxkKG1vZHVsZVNjcmlwdCwgbW9kdWxlTmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGVs
ZW1lbnQpOworICAgIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbW9kdWxl
TmFtZSwgbG9hZGFibGVTY3JpcHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVT
Y3JpcHQmIG1vZHVsZVNjcmlwdCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgU2NyaXB0Q29u
dHJvbGxlcjo6bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIExvYWRhYmxlU2Ny
aXB0JiBsb2FkYWJsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAogICAgIGF1dG8mIHNoZWxsID0gKndpbmRvd1No
ZWxsKHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpzaGVsbC53aW5kb3coKS0+Z2xvYmFsRXhl
YygpOwogCi0gICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1v
ZHVsZShzdGF0ZSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgdG9KUygmc3RhdGUsIHNoZWxs
LndpbmRvdygpLCAmZWxlbWVudCkpOworICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIEpT
Qzo6SlNTY3JpcHRJbml0aWF0b3I6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZsb2FkYWJsZVNjcmlw
dCB9KSk7CiAgICAgc2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhtb2R1bGVTY3JpcHQsIHByb21p
c2UsIHdvcmxkKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0
KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3JpcHRDb250cm9sbGVyOjps
b2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3Jp
cHQpCiB7Ci0gICAgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBzb3VyY2VD
b2RlLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZWxlbWVudCk7CisgICAgbG9hZE1vZHVsZVNj
cmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBzb3VyY2VDb2RlLCBsb2FkYWJsZVNjcmlwdCwgbWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQm
IG1vZHVsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRWxlbWVudCYgZWxlbWVudCkK
K0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3Jp
cHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBET01XcmFwcGVyV29y
bGQmIHdvcmxkKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCkBAIC0y
MzAsNyArMjMwLDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2MKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RvcihtX2ZyYW1lKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBldmFsdWF0
aW9uRXhjZXB0aW9uOwotICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCgmc3Rh
dGUudm0oKSwgbW9kdWxlU2NyaXB0Lm1vZHVsZUtleSgpKSwgdG9KUygmc3RhdGUsIHNoZWxsLndp
bmRvdygpLCAmZWxlbWVudCksIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGF1dG8gcmV0dXJu
VmFsdWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCgmc3RhdGUudm0oKSwgbW9kdWxlU2NyaXB0Lm1vZHVsZUtl
eSgpKSwganNVbmRlZmluZWQoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgLy8gRklYTUU6IEdpdmUgYSBjaGFuY2UgdG8gZHVt
cCB0aGUgc3RhY2sgdHJhY2UgaWYgdGhlICJjcm9zc29yaWdpbiIgYXR0cmlidXRlIGFsbG93cy4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUz
OQpAQCAtMjQwLDkgKzI0MCw5IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5r
QW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjCiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0Fu
ZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBF
bGVtZW50JiBlbGVtZW50KQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRF
dmFsdWF0ZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCkKIHsK
LSAgICByZXR1cm4gbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3Jp
cHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBlbGVtZW50KTsKKyAgICByZXR1cm4gbGlua0Fu
ZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
TW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3Jk
LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDUyNjhmMDE1YTU4ZTM4YmFlOGViOWMyNjEyMDE4YzFh
ZGRjZjcwNjIuLjllMjBjMmNlOTZiZmNjMDk3ZmY1YmFlMTkxM2VlY2ZmMjViNzA5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTU1LDYg
KzU1LDcgQEAgY2xhc3MgQ2FjaGVkTW9kdWxlU2NyaXB0OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBI
VE1MRG9jdW1lbnQ7CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKK2NsYXNzIExvYWRhYmxlU2Ny
aXB0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogY2xh
c3MgV2lkZ2V0OwpAQCAtMTEzLDEzICsxMTQsMTMgQEAgY2xhc3MgU2NyaXB0Q29udHJvbGxlciB7
CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBFeGNl
cHRpb25EZXRhaWxzKiA9IG51bGxwdHIpOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUluV29y
bGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYsIEV4Y2VwdGlvbkRl
dGFpbHMqID0gbnVsbHB0cik7CiAKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENh
Y2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgRE9NV3JhcHBlcldv
cmxkJiwgRWxlbWVudCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVT
Y3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmLCBFbGVtZW50Jik7Ci0gICAgdm9pZCBsb2FkTW9k
dWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBF
bGVtZW50Jik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVT
Y3JpcHQmLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiwgRE9NV3Jh
cHBlcldvcmxkJik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlw
dCYsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmKTsKKyAgICB2b2lk
IGxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIHZv
aWQgbG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiwgTG9hZGFibGVTY3JpcHQmKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZh
bHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgLCBET01XcmFwcGVy
V29ybGQmLCBFbGVtZW50Jik7Ci0gICAgSlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmLCBFbGVtZW50Jik7CisgICAgSlNDOjpKU1ZhbHVl
IGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiAs
IERPTVdyYXBwZXJXb3JsZCYpOworICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1
bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0Jik7CiAKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIERPTVdyYXBwZXJXb3Js
ZCYpOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpT
TW9kdWxlUmVjb3JkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcAppbmRleCBiM2Y2NWIyYzMzMmU0NjllMTQ4ZGJiNTMyMTg5ZWM5YjE0
MzVhZmQ0Li44MmI2ZjJjYThiMTQ1ZmVkOWFmMTI0MTA5NzIzNDA5OWJmMjgxMjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAg
LTMxLDE1ICszMSwxNCBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0VsZW1lbnQuaCIKICNp
bmNsdWRlICJMb2FkYWJsZU1vZHVsZVNjcmlwdC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RWxl
bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlIDxydW50aW1l
L0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU01vZHVsZVJlY29yZC5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTY3JpcHRJbml0aWF0b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU291
cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50
aW1lL1N5bWJvbC5oPgpAQCAtMTM2LDkgKzEzNSw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2Uq
IFNjcmlwdE1vZHVsZUxvYWRlcjo6cmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2Jh
CiAKIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpT
VmFsdWUgaW5pdGlhdG9yKQogewotICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlc2Ug
YXJlIHRydWU/IFdoeSBkb24ndCB3ZSBuZWVkIHRvIGNoZWNrPwotICAgIEFTU0VSVChKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNFbGVtZW50Kj4oaW5pdGlhdG9yKSk7Ci0gICAgQVNTRVJUKGlzU2NyaXB0
RWxlbWVudChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNFbGVtZW50Kj4oaW5pdGlhdG9yKS0+d3JhcHBl
ZCgpKSk7CisgICAgQVNTRVJUKEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTU2NyaXB0SW5pdGlh
dG9yKj4oaW5pdGlhdG9yKSk7CiAKICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihqc0dsb2JhbE9iamVjdCk7CiAgICAgYXV0byYganNQcm9t
aXNlID0gKkpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsICZnbG9i
YWxPYmplY3QpOwpAQCAtMTY0LDcgKzE2MSw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNj
cmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPCiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGF1dG8g
bG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVycmVk
LmdldCgpKTsKICAgICAgICAgbV9sb2FkZXJzLmFkZChsb2FkZXIuY29weVJlZigpKTsKLSAgICAg
ICAgaWYgKCFsb2FkZXItPmxvYWQoZG93bmNhc3RTY3JpcHRFbGVtZW50KEpTQzo6anNDYXN0PEpT
RWxlbWVudCo+KGluaXRpYXRvciktPndyYXBwZWQoKSksIGNvbXBsZXRlZFVSTCkpIHsKKyAgICAg
ICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1bWVudCwgKnN0YXRpY19jYXN0PExvYWRhYmxlU2Ny
aXB0Kj4oSlNDOjpqc0Nhc3Q8SlNDOjpKU1NjcmlwdEluaXRpYXRvcio+KGluaXRpYXRvciktPmlu
aXRpYXRvcigpKSwgY29tcGxldGVkVVJMKSkgewogICAgICAgICAgICAgbG9hZGVyLT5jbGVhckNs
aWVudCgpOwogICAgICAgICAgICAgbV9sb2FkZXJzLnJlbW92ZShXVEZNb3ZlKGxvYWRlcikpOwog
ICAgICAgICAgICAgZGVmZXJyZWQtPnJlamVjdChmcmFtZS0+c2NyaXB0KCkubW9kdWxlTG9hZGVy
QWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2woKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDkwOTYxYjhlY2I4MjMzYWNlNjc2NTk2NThhNTQ3
ZjFiMzVkNzM0YmIuLjk4Y2IwNmRmYjc4YzUzZjhiZDU2NGZiMjc0MWEwMDMxYTQ4NDFlMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC0zMywy
NiArMzMsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TG9hZGFibGVDbGFzc2lj
U2NyaXB0PiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZShDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+JiYgY2FjaGVkU2NyaXB0KQorUmVmPExvYWRhYmxlQ2xhc3NpY1Njcmlw
dD4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVl
KQogewotICAgIEFTU0VSVChjYWNoZWRTY3JpcHQpOwotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoV1RGTW92ZShjYWNoZWRTY3JpcHQpKSk7Ci0g
ICAgY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoc2NyaXB0LmdldCgpKTsKLSAgICByZXR1cm4gc2Ny
aXB0OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvYWRhYmxlQ2xhc3NpY1NjcmlwdChub25j
ZSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSkpOwogfQogCiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6On5Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQoKQogewotICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwor
ICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNs
aWVudCgqdGhpcyk7CiB9CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojppc0xvYWRlZCgp
IGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICByZXR1cm4gbV9jYWNo
ZWRTY3JpcHQtPmlzTG9hZGVkKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKIHsKKyAgICBBU1NF
UlQobV9jYWNoZWRTY3JpcHQpOwogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm4gbV9l
cnJvcjsKIApAQCAtNjQsMTEgKzY0LDEzIEBAIHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKIAogYm9vbCBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQ6Ondhc0NhbmNlbGVkKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9j
YWNoZWRTY3JpcHQpOwogICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+d2FzQ2FuY2VsZWQoKTsK
IH0KIAogdm9pZCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKIHsKKyAgICBBU1NFUlQobV9jYWNoZWRTY3JpcHQpOwogICAgIGlm
IChyZXNvdXJjZS5yZXNvdXJjZUVycm9yKCkuaXNBY2Nlc3NDb250cm9sKCkpIHsKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFs
KCJDcm9zcy1vcmlnaW4gc2NyaXB0IGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSk7CiAgICAgICAgIG1fZXJyb3IgPSBFcnJvciB7CkBAIC0xMDUs
NCArMTA3LDE0IEBAIHZvaWQgTG9hZGFibGVDbGFzc2ljU2NyaXB0OjpleGVjdXRlKFNjcmlwdEVs
ZW1lbnQmIHNjcmlwdEVsZW1lbnQpCiAgICAgc2NyaXB0RWxlbWVudC5leGVjdXRlQ2xhc3NpY1Nj
cmlwdChTY3JpcHRTb3VyY2VDb2RlKG1fY2FjaGVkU2NyaXB0LmdldCgpLCBKU0M6OlNvdXJjZVBy
b3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkpOwogfQogCitib29sIExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291cmNlVVJMKQorewor
ICAgIEFTU0VSVCghbV9jYWNoZWRTY3JpcHQpOworICAgIG1fY2FjaGVkU2NyaXB0ID0gcmVxdWVz
dFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMKTsKKyAgICBpZiAoIW1fY2FjaGVk
U2NyaXB0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9jYWNoZWRTY3JpcHQtPmFkZENs
aWVudCgqdGhpcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAppbmRleCBhZDQxZGMyYWI3ZDQxZDBmMTVhOGRiMjJh
MGQwNTQ2NjM5NGRjYWE5Li42YTNhMzBjM2U3MmMyNDdhZTdkNTMwNDFiOGQ5OGQzODdjMDNlNmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2Fk
YWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TG9hZGFibGVDbGFzc2ljU2NyaXB0KCk7CiAKLSAgICBzdGF0aWMgUmVmPExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdD4gY3JlYXRlKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJik7Cisg
ICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUpOwogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6
Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgd2FzQ2FuY2Vs
ZWQoKSBjb25zdCBmaW5hbDsKQEAgLTUyLDEyICs1MiwxNyBAQCBjbGFzcyBMb2FkYWJsZUNsYXNz
aWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2FjaGVkUmVz
b3VyYwogCiAgICAgdm9pZCBleGVjdXRlKFNjcmlwdEVsZW1lbnQmKSBmaW5hbDsKIAorICAgIGJv
b2wgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYpOworCiBwcml2YXRlOgotICAgIExvYWRhYmxl
Q2xhc3NpY1NjcmlwdChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYgY2FjaGVk
U2NyaXB0KSA6IG1fY2FjaGVkU2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkgeyB9CisgICAg
TG9hZGFibGVDbGFzc2ljU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYg
Y3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAgICAg
OiBMb2FkYWJsZVNjcmlwdChub25jZSwgY3Jvc3NPcmlnaW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0
b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICB7CisgICAgfQogCiAgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCi0gICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBzdGQ6Om9w
dGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAppbmRleCA4NDI4N2VlN2IxYTNlNzI0
MWZhN2UxZjA3Y2U5OGE1NGUwOWFmZmU2Li4wZWIxMGI1YjRkYmE3MjhlOWJkNGVlY2MyYTBiMzJl
MmZmZDIyMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVT
Y3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5j
cHAKQEAgLTMwLDE2ICszMCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxMb2Fk
YWJsZU1vZHVsZVNjcmlwdD4gTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShDYWNoZWRNb2R1
bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCkKK1JlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gTG9hZGFi
bGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCiB7Ci0gICAg
YXV0byBzY3JpcHQgPSBhZG9wdFJlZigqbmV3IExvYWRhYmxlTW9kdWxlU2NyaXB0KG1vZHVsZVNj
cmlwdCkpOwotICAgIG1vZHVsZVNjcmlwdC5hZGRDbGllbnQoc2NyaXB0LmdldCgpKTsKLSAgICBy
ZXR1cm4gc2NyaXB0OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvYWRhYmxlTW9kdWxlU2Ny
aXB0KG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5V
c2VyQWdlbnRTaGFkb3dUcmVlLCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZSgpKSk7CiB9CiAK
LUxvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJsZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVT
Y3JpcHQmIG1vZHVsZVNjcmlwdCkKLSAgICA6IG1fbW9kdWxlU2NyaXB0KG1vZHVsZVNjcmlwdCkK
K0xvYWRhYmxlTW9kdWxlU2NyaXB0OjpMb2FkYWJsZU1vZHVsZVNjcmlwdChjb25zdCBTdHJpbmcm
IG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJvb2wgaXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUsIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+JiYgbW9kdWxlU2NyaXB0KQorICAg
IDogTG9hZGFibGVTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlh
dG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgLCBtX21vZHVsZVNjcmlwdChX
VEZNb3ZlKG1vZHVsZVNjcmlwdCkpCiB7CisgICAgbV9tb2R1bGVTY3JpcHQtPmFkZENsaWVudCgq
dGhpcyk7CiB9CiAKIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojp+TG9hZGFibGVNb2R1bGVTY3JpcHQo
KQpAQCAtNzIsNCArNzIsMTQgQEAgdm9pZCBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXhlY3V0ZShT
Y3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQogICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZU1v
ZHVsZVNjcmlwdChtX21vZHVsZVNjcmlwdC5nZXQoKSk7CiB9CiAKK3ZvaWQgTG9hZGFibGVNb2R1
bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHJvb3RVUkwpCit7
CisgICAgbV9tb2R1bGVTY3JpcHQtPmxvYWQoZG9jdW1lbnQsIHJvb3RVUkwsICp0aGlzKTsKK30K
Kwordm9pZCBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCit7CisgICAgbV9tb2R1bGVTY3JpcHQt
PmxvYWQoZG9jdW1lbnQsIHNvdXJjZUNvZGUsICp0aGlzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAppbmRleCBkZGVhOWY4Y2IwNTBhYWJiYmMxZGRi
ZDM3OTgxNjAyYjUwNmU2YjI0Li44M2Y1MzkxZjUyZmM5MTNlZTMxNDdlNzlmNmExMTFlYzQxOTI5
ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaApAQCAtMzYs
NyArMzYsNyBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2Fk
YWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRNb2R1bGVTYwogcHVibGljOgogICAgIHZpcnR1YWwg
fkxvYWRhYmxlTW9kdWxlU2NyaXB0KCk7CiAKLSAgICBzdGF0aWMgUmVmPExvYWRhYmxlTW9kdWxl
U2NyaXB0PiBjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0Jik7CisgICAgc3RhdGljIFJlZjxMb2Fk
YWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSk7CiAKICAg
ICBib29sIGlzTG9hZGVkKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4g
ZXJyb3IoKSBjb25zdCBmaW5hbDsKQEAgLTQ5LDggKzQ5LDExIEBAIGNsYXNzIExvYWRhYmxlTW9k
dWxlU2NyaXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZE1v
ZHVsZVNjCiAKICAgICB2b2lkIHNldEVycm9yKEVycm9yJiYpOwogCisgICAgdm9pZCBsb2FkKERv
Y3VtZW50JiwgY29uc3QgVVJMJiByb290VVJMKTsKKyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisKIHByaXZhdGU6Ci0gICAgTG9hZGFibGVNb2R1bGVT
Y3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0Jik7CisgICAgTG9hZGFibGVNb2R1bGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBSZWY8Q2FjaGVkTW9kdWxlU2NyaXB0PiYmKTsKIAogICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9kdWxlU2NyaXB0JikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCmluZGV4IGVmZGI2Yjg5NDg2ZDQ5M2M5OGZiMWY1
YjM1NzZiNGM2OTYzZTBiNGMuLmEzZjBkMTQyYWFjYmQ3NDEwYWNjNWQzNjZiYWE5NTkyOGRkNzUz
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcApAQCAtMjYsNyArMjYsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2FkYWJsZVNjcmlwdC5oIgogCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDYWNoZWRTY3JpcHQu
aCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkxvYWRhYmxlU2NyaXB0Q2xpZW50LmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw0ICs2MCwyNSBAQCB2b2lkIExv
YWRhYmxlU2NyaXB0Ojpub3RpZnlDbGllbnRGaW5pc2hlZCgpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMpOwogfQogCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IExvYWRhYmxlU2NyaXB0OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpIGNvbnN0Cit7CisgICAgYXV0byogc2V0dGluZ3Mg
PSBkb2N1bWVudC5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPmlz
U2NyaXB0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChk
b2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CisgICAgYm9vbCBoYXNLbm93bk5vbmNl
ID0gZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0V2l0aE5vbmNl
KG1fbm9uY2UsIG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b24gPSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tp
cFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjazsKKworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChzb3VyY2VVUkwpLCBvcHRpb25zKTsKKyAgICByZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9z
c09yaWdpbihtX2Nyb3NzT3JpZ2luTW9kZSwgZG9jdW1lbnQpOworICAgIHJlcXVlc3QudXBncmFk
ZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKGRvY3VtZW50KTsKKworICAgIHJlcXVlc3Quc2V0Q2hh
cnNldChtX2NoYXJzZXQpOworICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFt
ZSk7CisKKyAgICByZXR1cm4gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
U2NyaXB0KFdURk1vdmUocmVxdWVzdCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNj
cmlwdC5oCmluZGV4IGJhMjJmYjE1YjgxNGQ3MTdkOGQyNzRjODA0NmZhOTUwZTIxMzk4MWEuLjU2
YTUxZDJjMjcyN2U4NjI1ZjVjNWMyMjA2YmI0N2U4YjgwYzNhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZVNjcmlwdC5oCkBAIC0yNSwxNyArMjUsMjIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29s
ZVR5cGVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEluaXRpYXRvci5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQ2FjaGVkU2NyaXB0OworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVNjcmlw
dENsaWVudDsKIGNsYXNzIFNjcmlwdEVsZW1lbnQ7CitjbGFzcyBVUkw7CiAKLWNsYXNzIExvYWRh
YmxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8TG9hZGFibGVTY3JpcHQ+IHsKK2NsYXNzIExv
YWRhYmxlU2NyaXB0IDogcHVibGljIEpTQzo6U2NyaXB0SW5pdGlhdG9yIHsKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIEVycm9yVHlwZSB7CiAgICAgICAgIENhY2hlZFNjcmlwdCwKQEAgLTY4LDEw
ICs3MywyNyBAQCBjbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPExvYWRh
YmxlU2NyaXB0PiB7CiAgICAgdmlydHVhbCBib29sIGlzQ2xhc3NpY1NjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTW9kdWxlU2NyaXB0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlw
dD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNlVVJM
KSBjb25zdDsKKwogcHJvdGVjdGVkOgorICAgIExvYWRhYmxlU2NyaXB0KGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50
U2hhZG93VHJlZSkKKyAgICAgICAgOiBtX25vbmNlKG5vbmNlKQorICAgICAgICAsIG1fY3Jvc3NP
cmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKKyAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkK
KyAgICAgICAgLCBtX2luaXRpYXRvck5hbWUoaW5pdGlhdG9yTmFtZSkKKyAgICAgICAgLCBtX2lz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIHsKKyAg
ICB9CisKICAgICB2b2lkIG5vdGlmeUNsaWVudEZpbmlzaGVkKCk7CiAKIHByaXZhdGU6CisgICAg
U3RyaW5nIG1fbm9uY2U7CisgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOworICAgIFN0cmlu
ZyBtX2NoYXJzZXQ7CisgICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKKyAgICBib29s
IG1faXNJblVzZXJBZ2VudFNoYWRvd1RyZWUgeyBmYWxzZSB9OworCiAgICAgSGFzaENvdW50ZWRT
ZXQ8TG9hZGFibGVTY3JpcHRDbGllbnQqPiBtX2NsaWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZjY4NjM3YWM0ZDk1Y2U4OGExZmIwNTUzMWRmZGFmZjUw
MDE0MDBmZS4uYjQzM2ZiYzI4NWY0NWQwZWEwYTY3YTEwOWVlZGYxN2Y4YjMyODk5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMjkyLDExICsyOTIsMTQgQEAgYm9vbCBT
Y3JpcHRFbGVtZW50OjpyZXF1ZXN0Q2xhc3NpY1NjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIAogICAgIEFTU0VSVCghbV9sb2FkYWJsZVNjcmlwdCk7CiAgICAgaWYgKCFzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc291cmNlVVJMKS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
U3RyaW5nIG5vbmNlQXR0cmlidXRlID0gbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpub25jZUF0dHIpOwotICAgICAgICBTdHJpbmcgY3Jvc3NPcmln
aW5Nb2RlID0gbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpjcm9zc29yaWdpbkF0dHIpOwotICAgICAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlKG1fZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHNvdXJjZVVSTCks
IG5vbmNlQXR0cmlidXRlLCBjcm9zc09yaWdpbk1vZGUpOwotICAgICAgICBpZiAocmVxdWVzdCkg
ewotICAgICAgICAgICAgbV9sb2FkYWJsZVNjcmlwdCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6
Y3JlYXRlKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxl
Q2xhc3NpY1NjcmlwdDo6Y3JlYXRlKAorICAgICAgICAgICAgbV9lbGVtZW50LmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpub25jZUF0dHIpLAorICAgICAgICAgICAg
bV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9z
c29yaWdpbkF0dHIpLAorICAgICAgICAgICAgc2NyaXB0Q2hhcnNldCgpLAorICAgICAgICAgICAg
bV9lbGVtZW50LmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgbV9lbGVtZW50LmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOworICAgICAgICBpZiAoc2NyaXB0LT5sb2FkKG1fZWxlbWVudC5kb2N1
bWVudCgpLCBtX2VsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzb3VyY2VVUkwpKSkgewor
ICAgICAgICAgICAgbV9sb2FkYWJsZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICAgICAg
ICAgIG1faXNFeHRlcm5hbFNjcmlwdCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzks
OSArMzQyLDkgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0TW9kdWxlU2NyaXB0KGNvbnN0
IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbikKICAgICAgICAgfQogCiAgICAgICAg
IG1faXNFeHRlcm5hbFNjcmlwdCA9IHRydWU7Ci0gICAgICAgIGF1dG8gbW9kdWxlU2NyaXB0ID0g
Q2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSk7Ci0gICAg
ICAgIG1fbG9hZGFibGVTY3JpcHQgPSBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG1vZHVs
ZVNjcmlwdC5nZXQoKSk7Ci0gICAgICAgIG1vZHVsZVNjcmlwdC0+bG9hZChtX2VsZW1lbnQsIG1v
ZHVsZVNjcmlwdFJvb3RVUkwpOworICAgICAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxl
U2NyaXB0OjpjcmVhdGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBt
X2VsZW1lbnQubG9jYWxOYW1lKCksIG1fZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgp
KTsKKyAgICAgICAgc2NyaXB0LT5sb2FkKG1fZWxlbWVudC5kb2N1bWVudCgpLCBtb2R1bGVTY3Jp
cHRSb290VVJMKTsKKyAgICAgICAgbV9sb2FkYWJsZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zNTQsNDIgKzM1NywxMiBAQCBib29s
IFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBz
Y3JpcHRTdGFydFBvc2l0aW9uKQogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93
SW5saW5lU2NyaXB0KG1fZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLCBtX3N0YXJ0TGluZU51bWJl
ciwgc291cmNlQ29kZS5zb3VyY2UoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIGhhc0tub3du
Tm9uY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIG1vZHVsZVNjcmlwdCA9
IENhY2hlZE1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUpOwotICAg
IG1fbG9hZGFibGVTY3JpcHQgPSBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG1vZHVsZVNj
cmlwdC5nZXQoKSk7Ci0gICAgbW9kdWxlU2NyaXB0LT5sb2FkKG1fZWxlbWVudCwgc291cmNlQ29k
ZSk7CisgICAgYXV0byBzY3JpcHQgPSBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNl
LCBjcm9zc09yaWdpbk1vZGUsIHNjcmlwdENoYXJzZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgp
LCBtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgc2NyaXB0LT5sb2Fk
KG1fZWxlbWVudC5kb2N1bWVudCgpLCBzb3VyY2VDb2RlKTsKKyAgICBtX2xvYWRhYmxlU2NyaXB0
ID0gV1RGTW92ZShzY3JpcHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1DYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGVGb3JNb2R1bGVTY3JpcHQoY29uc3QgVVJMJiBzb3VyY2VVUkwpCi17Ci0gICAgQVNTRVJUKG1f
bG9hZGFibGVTY3JpcHQpOwotICAgIEFTU0VSVChpczxMb2FkYWJsZU1vZHVsZVNjcmlwdD4oKm1f
bG9hZGFibGVTY3JpcHQpKTsKLSAgICBhdXRvJiBtb2R1bGVTY3JpcHQgPSBkb3duY2FzdDxMb2Fk
YWJsZU1vZHVsZVNjcmlwdD4oKm1fbG9hZGFibGVTY3JpcHQpOwotICAgIHJldHVybiByZXF1ZXN0
U2NyaXB0V2l0aENhY2hlKHNvdXJjZVVSTCwgbW9kdWxlU2NyaXB0Lm1vZHVsZVNjcmlwdCgpLm5v
bmNlKCksIG1vZHVsZVNjcmlwdC5tb2R1bGVTY3JpcHQoKS5jcm9zc09yaWdpbk1vZGUoKSk7Ci19
Ci0KLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudDo6cmVx
dWVzdFNjcmlwdFdpdGhDYWNoZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBu
b25jZUF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCi17Ci0gICAgRG9j
dW1lbnQmIGRvY3VtZW50ID0gbV9lbGVtZW50LmRvY3VtZW50KCk7Ci0gICAgYXV0byogc2V0dGlu
Z3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwotICAgIGlmIChzZXR0aW5ncyAmJiAhc2V0dGluZ3Mt
PmlzU2NyaXB0RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VS
VChkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7Ci0gICAgYm9vbCBoYXNLbm93bk5v
bmNlID0gZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0V2l0aE5v
bmNlKG5vbmNlQXR0cmlidXRlLCBtX2VsZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7
Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwotICAgIG9wdGlvbnMuY29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGhhc0tub3duTm9uY2UgPyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwotCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Qu
c2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNyb3NzT3JpZ2luTW9kZSwgZG9jdW1lbnQpOwot
ICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKGRvY3VtZW50KTsKLQot
ICAgIHJlcXVlc3Quc2V0Q2hhcnNldChzY3JpcHRDaGFyc2V0KCkpOwotICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKCZlbGVtZW50KCkpOwotCi0gICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291
cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQogdm9pZCBT
Y3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQogewogICAgIEFTU0VSVChtX2FscmVhZHlTdGFydGVkKTsKQEAgLTQzMCw3
ICs0MDMsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQoQ2FjaGVk
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCiAgICAgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNv
dW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKCZk
b2N1bWVudCk7CiAgICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlcihkb2N1bWVudCwgbV9lbGVtZW50KTsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS5saW5r
QW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQobW9kdWxlU2NyaXB0LCBlbGVtZW50KCkpOworICAgIGZy
YW1lLT5zY3JpcHQoKS5saW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQobW9kdWxlU2NyaXB0KTsK
IH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChM
b2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aAppbmRleCA1ZjE4MWRmMmUzYjBlODg4ZWYzOTQ3YmJjZGMxOGQ5MzA3ZGRlYjFhLi4wMzAyNWY4
NmQwYjRlNTBmZTlmMTgwMmE0NDZjNmM1ZjA3ZTJjMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmgKQEAgLTY2LDggKzY2LDYgQEAgY2xhc3MgU2NyaXB0RWxlbWVudCB7CiAgICAgYm9v
bCB3aWxsRXhlY3V0ZUluT3JkZXIoKSBjb25zdCB7IHJldHVybiBtX3dpbGxFeGVjdXRlSW5PcmRl
cjsgfQogICAgIExvYWRhYmxlU2NyaXB0KiBsb2FkYWJsZVNjcmlwdCgpIHsgcmV0dXJuIG1fbG9h
ZGFibGVTY3JpcHQuZ2V0KCk7IH0KIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZUZvck1vZHVsZVNjcmlwdChjb25zdCBVUkwmKTsK
LQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGlu
Zy5odG1sI2NvbmNlcHQtc2NyaXB0LXR5cGUKICAgICBlbnVtIGNsYXNzIFNjcmlwdFR5cGUgeyBD
bGFzc2ljLCBNb2R1bGUgfTsKICAgICBTY3JpcHRUeXBlIHNjcmlwdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzTW9kdWxlU2NyaXB0ID8gU2NyaXB0VHlwZTo6TW9kdWxlIDogU2NyaXB0VHlwZTo6
Q2xhc3NpYzsgfQo=
</data>
<flag name="review"
          id="320696"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298567</attachid>
            <date>2017-01-11 04:09:58 -0800</date>
            <delta_ts>2017-01-11 04:09:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-166888-20170111210820.patch</filename>
            <type>text/plain</type>
            <size>94094</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODY4MjFhZGVmYWJlOGY4ZGE4YzMyMjcyNGU0N2YyYmM1NWQwNGFjLi4zY2E1YTIwZjA3OWIzYmUw
NGNjMzFkZWVkNGVmMzAxYzIzMzZmMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNy0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBEZWNvdXBsZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IgZnJvbSBT
Y3JpcHRFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjY4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU2NyaXB0RmV0Y2hlciBhbmQgSlNTY3JpcHRGZXRjaGVyLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanM6
CisgICAgICAgIChyZXF1ZXN0RmV0Y2gpOgorICAgICAgICAocmVxdWVzdEluc3RhbnRpYXRlKToK
KyAgICAgICAgKHJlcXVlc3RTYXRpc2Z5KToKKyAgICAgICAgKHJlcXVlc3RJbnN0YW50aWF0ZUFs
bCk6CisgICAgICAgIChyZXF1ZXN0TGluayk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKToK
KyAgICAgICAgKGxvYWRBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChpbXBvcnRNb2R1bGUp
OgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9D
b21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUxvYWRlcjo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpmZXRjaCk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjppbnN0YW50aWF0ZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmNwcC4KKyAgICAgICAgKEpT
Qzo6SlNTY3JpcHRGZXRjaGVyOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NyaXB0
RmV0Y2hlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6ZmV0Y2hlcik6CisgICAgICAgIChKU0M6OkpTU2Ny
aXB0RmV0Y2hlcjo6SlNTY3JpcHRGZXRjaGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RmV0Y2hlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwLgorICAgICAgICAoSlNDOjpTY3JpcHRGZXRj
aGVyOjp+U2NyaXB0RmV0Y2hlcik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAg
IChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE3LTAxLTEwICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBKU1NvdXJjZUNvZGUgdG8gcHJvcGFnYXRlIFNvdXJjZUNvZGUgaW4gbW9kdWxlIHBpcGVsaW5l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYmE2NDhjYWU0MWExMjJiNWQ5MDcwYjllMTI4NDNhM2U4M2E2NWMyNS4u
ODQ2ZDY0MjVlOTJjMzBmZjM1ZTk3OWQ5ZmNlMjExNmQyZjI3YzU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDgwIEBACisyMDE3LTAxLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIERlY291cGxlIG1vZHVsZSBsb2FkaW5nIGluaXRpYXRvciBmcm9t
IFNjcmlwdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2Njg4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByZXZpb3VzbHksIHdlIHVzZSBTY3JpcHRFbGVtZW50IChKU0VsZW1lbnQgZm9yIFNj
cmlwdEVsZW1lbnQpIGFzIHRoZSBtb2R1bGUgbG9hZGluZyBpbml0aWF0b3IuCisgICAgICAgIFRo
aXMgZWxlbWVudCBpcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBtZXRhZGF0YSBsaWtlIGNoYXJzZXQg
dGhyb3VnaG91dCB0aGUgbW9kdWxlIHBpcGVsaW5lLgorICAgICAgICBBcyBhIHJlc3VsdCwgb3Vy
IG1vZHVsZSBsb2FkZXIgaW4gdGhlIGJyb3dzZXIgc2lkZSBpcyB0aWdodGx5IGNvdXBsZWQgd2l0
aCBTY3JpcHRFbGVtZW50LgorICAgICAgICBJdCBpcyBub3QgZ29vZCBzaW5jZSBpdCBwcmV2ZW50
IHVzIGZyb20gdXNpbmcgdGhlIG1vZHVsZSBsb2FkZXIgaW4gdGhlIG5vbi1ET00gZW52aXJvbm1l
bnQgbGlrZQorICAgICAgICBXZWIgV29ya2Vycy4KKworICAgICAgICBTbyB3ZSBkZWNvdXBsZSB0
aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9ucyBmcm9tIFNjcmlwdEVsZW1lbnQuIFdlIG1vdmUgdGhl
c2UgaW5mb3JtYXRpb24gdG8KKyAgICAgICAgTG9hZGFibGVTY3JpcHQuIEFuZCB3ZSB1c2UgSlNT
Y3JpcHRGZXRjaGVyIHRvIHRyYW5zZmVyIExvYWRhYmxlU2NyaXB0IHRocm91Z2ggdGhlIEpTIGlt
cGxlbWVudGVkCisgICAgICAgIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuIFdlIHNlbGVjdCBMb2Fk
YWJsZVNjcmlwdCBpbnN0ZWFkIG9mIExvYWRhYmxlTW9kdWxlU2NyaXB0IHNpbmNlIHRoaXMgaW5p
dGlhdG9yCisgICAgICAgIGluZm9ybWF0aW9uIHdpbGwgYmUgbGV2ZXJhZ2VkIGV2ZW4gaW4gY2xh
c3NpYyBzY3JpcHRzIG9uY2Ugd2UgaW1wbGVtZW50IHRoZSBkeW5hbWljIGltcG9ydC4KKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL0pTU2NyaXB0RmV0Y2hlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVTY3JpcHQuY3BwLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
U2NyaXB0RmV0Y2hlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVT
Y3JpcHQuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkTW9kdWxlU2NyaXB0OjpDYWNoZWRNb2R1bGVTY3JpcHQpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oOgorICAgICAgICBOb3cgd2UgY2Fu
IG1lcmdlIENhY2hlZE1vZHVsZVNjcmlwdCB0byBMb2FkYWJsZVNjcmlwdC4gQnV0IHdlIGRvIG5v
dCBkbyB0aGlzIGluIHRoaXMgcGF0Y2ggc2luY2UKKyAgICAgICAgd2UgZm9jdXMgb24gZGVjb3Vw
bGluZyB0aGUgaW5pdGlhdG9yIGluZm9ybWF0aW9uIGZyb20gU2NyaXB0RWxlbWVudC4KKworICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTW9kdWxlU2NyaXB0Ojpub25jZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmNyb3NzT3JpZ2luTW9kZSk6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bG9hZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpsb2FkTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpmZXRjaCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9h
ZGVyLmg6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6On5Mb2FkYWJsZUNsYXNzaWNTY3JpcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojppc0xvYWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2FuY2VsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQpOgorICAgICAgICAqIGRvbS9Mb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6TG9hZGFibGVNb2R1bGVTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmxvYWQpOgorICAgICAg
ICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZVNj
cmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6cmVxdWVzdFNjcmlw
dFdpdGhDYWNoZSk6CisgICAgICAgICogZG9tL0xvYWRhYmxlU2NyaXB0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVNjcmlwdDo6TG9hZGFibGVTY3JpcHQpOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVl
c3RDbGFzc2ljU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVl
c3RNb2R1bGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0
ZU1vZHVsZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
U2NyaXB0V2l0aENhY2hlRm9yTW9kdWxlU2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisKIDIwMTctMDEtMTEgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxODI5NDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDA1Yjhk
OTRhMjYwMzVjMzI0OTNjMTMyMzRjMGQ3MmMyZDhlOWQ4ZC4uYjY4NjUwMDk5MzBlYzg2MGY5MWIw
NGI0N2I1ZDhlNjgwOGI3Yjk2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNzg0LDYgKzc4NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNQcm94eS5jcHAKICAg
ICBydW50aW1lL0pTU2NvcGUuY3BwCisgICAgcnVudGltZS9KU1NjcmlwdEZldGNoZXIuY3BwCiAg
ICAgcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNT
ZXQuY3BwCiAgICAgcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3NjM4NGZhYzcxMWJlN2YzMzRiOGY4ODZmZjA2MTYzMjc0MTU1ZTJhLi43
Y2ZlYjk5MWNmYjlhM2YyMDI2ZGY5Y2M3NGNkNDVkYTFkNzZhYTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjM3Miw2ICsyMzcyLDkgQEAKIAkJRkVGRDZGQzYxRDVFNzk5MjAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZBM0FCMjExQzg0OTQ1MjRBQjM5MDI2NyAvKiBKU1NvdXJjZUNvZGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjczOTI2OTE4REM2NDMzMEFGQ0RG
MEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi87IH07CiAJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJF
RCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMwMzIxNzVERjFBRDQ3RDg5OThCMzRFMSAvKiBKU1NvdXJjZUNvZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDgxNUY1Rjk5
MUM0NkJFQjk4RDAwMTYgLyogSlNTY3JpcHRGZXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBK
U1NjcmlwdEZldGNoZXIuY3BwICovOyB9OworCQk5MDY0MzM3REQ0QjA0MDJCQUYzNEE1OTIgLyog
SlNTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3JpcHRGZXRjaGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0VBRTdEN0I4
ODlCNDc3QkE5M0FCQTZDIC8qIFNjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3Jp
cHRGZXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNDkwMCw2ICs0OTAzLDkgQEAKIAkJRkVGRDZGQzUx
RDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1NvdXJjZUNvZGUuY3BwOyBwYXRoID0g
SlNTb3VyY2VDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURG
MUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU1NvdXJjZUNvZGUuaDsgcGF0aCA9IEpTU291cmNlQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxMUMxOTdDMjYyNDg0OEVEQTg0Q0VEN0YgLyogSlNTY3Jp
cHRGZXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU2Ny
aXB0RmV0Y2hlci5jcHA7IHBhdGggPSBKU1NjcmlwdEZldGNoZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyogSlNTY3JpcHRGZXRj
aGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTU2NyaXB0RmV0Y2hlci5o
OyBwYXRoID0gSlNTY3JpcHRGZXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcmlwdEZldGNoZXIuaDsgcGF0aCA9IFNjcmlwdEZldGNo
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwpAQCAtNjc0MCw2ICs2NzQ2LDkgQEAKIAkJCQk0MjVCQTEzMzdFNDM0NEUxQjI2OUE2NzEgLyog
U291cmNlT3JpZ2luLmggKi8sCiAJCQkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291
cmNlQ29kZS5jcHAgKi8sCiAJCQkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNl
Q29kZS5oICovLAorCQkJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBKU1NjcmlwdEZldGNo
ZXIuY3BwICovLAorCQkJCTZCQTkzQzk1OTA0ODRDNUJBRDkzMTZFQSAvKiBKU1NjcmlwdEZldGNo
ZXIuaCAqLywKKwkJCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hlci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTkxMTQsNiArOTEyMyw4IEBACiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8q
IFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDM0MkYzNkY3MjQ0MDk2
ODA0QURCMjQgLyogU291cmNlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlCREZDQjJCQkU5
MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MDY0
MzM3REQ0QjA0MDJCQUYzNEE1OTIgLyogSlNTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDRUFFN0Q3Qjg4OUI0NzdCQTkzQUJBNkMgLyogU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0xMDUwMiw2ICsxMDUxMyw3IEBACiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
QTNBQjIxMUM4NDk0NTI0QUIzOTAyNjcgLyogSlNTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE0ODE1RjVGOTkxQzQ2QkVCOThEMDAxNiAvKiBKU1NjcmlwdEZldGNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
TW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L01vZHVsZUxvYWRlclByb3RvdHlwZS5qcwppbmRleCBkNGE3NzdmNjY2M2ZiZDE0ODFlN2RmMjE2
OTZiMmU1OGJmOGNlNTZhLi42OGUwMGMxODBhZWI0Mjk2ZTdkNzZlOWNlYzNmOTVmMzQ3NzY0M2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJQcm90b3R5cGUuanMKQEAgLTIwNCw3ICsyMDQsNyBAQCBmdW5jdGlvbiBpbnN0YW50aWF0
aW9uKHJlc3VsdCwgc291cmNlLCBlbnRyeSkKIAogLy8gTG9hZGVyLgogCi1mdW5jdGlvbiByZXF1
ZXN0RmV0Y2goa2V5LCBpbml0aWF0b3IpCitmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5LCBmZXRj
aGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3Qt
ZmV0Y2gKIApAQCAtMjIwLDcgKzIyMCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIGlu
aXRpYXRvcikKICAgICAvLyAgICAgVGFrZSB0aGUga2V5IGFuZCBmZXRjaCB0aGUgcmVzb3VyY2Ug
YWN0dWFsbHkuCiAgICAgLy8gICAgIEZvciBleGFtcGxlLCBKYXZhU2NyaXB0Q29yZSBzaGVsbCBj
YW4gcHJvdmlkZSB0aGUgaG9vayBmZXRjaGluZyB0aGUgcmVzb3VyY2UKICAgICAvLyAgICAgZnJv
bSB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uCi0gICAgdmFyIGZldGNoUHJvbWlzZSA9IHRoaXMuZmV0
Y2goa2V5LCBpbml0aWF0b3IpLnRoZW4oKHNvdXJjZSkgPT4geworICAgIHZhciBmZXRjaFByb21p
c2UgPSB0aGlzLmZldGNoKGtleSwgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7CiAgICAgICAg
IEBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxlSW5zdGFudGlhdGUpOwogICAgICAgICByZXR1
cm4gc291cmNlOwogICAgIH0pOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RG
ZXRjaChrZXksIGluaXRpYXRvcikKICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogfQogCi1mdW5j
dGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoa2V5LCBpbml0aWF0b3IpCitmdW5jdGlvbiByZXF1ZXN0
SW5zdGFudGlhdGUoa2V5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1
Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIApAQCAtMjM4LDcgKzIzOCw3IEBAIGZ1
bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGluaXRpYXRvcikKICAgICBpZiAoZW50cnku
aW5zdGFudGlhdGUpCiAgICAgICAgIHJldHVybiBlbnRyeS5pbnN0YW50aWF0ZTsKIAotICAgIHZh
ciBpbnN0YW50aWF0ZVByb21pc2UgPSB0aGlzLnJlcXVlc3RGZXRjaChrZXksIGluaXRpYXRvciku
dGhlbigoc291cmNlKSA9PiB7CisgICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRoaXMucmVx
dWVzdEZldGNoKGtleSwgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7CiAgICAgICAgIC8vIEhv
b2sgcG9pbnQuCiAgICAgICAgIC8vIDMuIExvYWRlci5pbnN0YW50aWF0ZQogICAgICAgICAvLyAg
ICAgaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jYnJvd3Nlci1pbnN0YW50aWF0ZQpA
QCAtMjQ2LDcgKzI0Niw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIGluaXRp
YXRvcikKICAgICAgICAgLy8gICAgIGJ5IHBhcnNpbmcgdGhlIG1vZHVsZSBzb3VyY2UgY29kZS4K
ICAgICAgICAgLy8gICAgIEl0IGhhcyB0aGUgY2hhbmNlIHRvIHByb3ZpZGUgdGhlIG9wdGlvbmFs
IG1vZHVsZSBpbnN0YW5jZSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tCiAgICAgICAgIC8vICAgICB0
aGUgb3JkaW5hcnkgb25lLgotICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW50aWF0ZShrZXksIHNv
dXJjZSwgaW5pdGlhdG9yKS50aGVuKChvcHRpb25hbEluc3RhbmNlKSA9PiB7CisgICAgICAgIHJl
dHVybiB0aGlzLmluc3RhbnRpYXRlKGtleSwgc291cmNlLCBmZXRjaGVyKS50aGVuKChvcHRpb25h
bEluc3RhbmNlKSA9PiB7CiAgICAgICAgICAgICB0aGlzLmNvbW1pdEluc3RhbnRpYXRlZChlbnRy
eSwgb3B0aW9uYWxJbnN0YW5jZSwgc291cmNlKTsKICAgICAgICAgICAgIHJldHVybiBlbnRyeTsK
ICAgICAgICAgfSk7CkBAIC0yNTUsNyArMjU1LDcgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGtleSwgaW5pdGlhdG9yKQogICAgIHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7CiB9CiAK
LWZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtleSwgaW5pdGlhdG9yKQorZnVuY3Rpb24gcmVxdWVz
dFNhdGlzZnkoa2V5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI3NhdGlzZnktaW5zdGFuY2UKIApAQCAtMjY1LDcgKzI2NSw3IEBAIGZ1bmN0aW9u
IHJlcXVlc3RTYXRpc2Z5KGtleSwgaW5pdGlhdG9yKQogICAgIGlmIChlbnRyeS5zYXRpc2Z5KQog
ICAgICAgICByZXR1cm4gZW50cnkuc2F0aXNmeTsKIAotICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9
IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSwgaW5pdGlhdG9yKS50aGVuKChlbnRyeSkgPT4g
eworICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9IHRoaXMucmVxdWVzdEluc3RhbnRpYXRlKGtleSwg
ZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdmFyIGRlcExvYWRzID0gW107CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbnRyeS5kZXBlbmRlbmNpZXMubGVuZ3Ro
OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGxldCBwYWlyID0gZW50cnkuZGVwZW5k
ZW5jaWVzW2ldOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RTYXRpc2Z5KGtl
eSwgaW5pdGlhdG9yKQogICAgICAgICAgICAgLy8gICAgIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5p
by9sb2FkZXIvI2Jyb3dzZXItcmVzb2x2ZQogICAgICAgICAgICAgLy8gICAgIFRha2UgdGhlIG5h
bWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3Vy
Y2UgbG9jYXRpb24uCiAgICAgICAgICAgICAvLyAgICAgRm9yIGV4YW1wbGUsIHRha2UgdGhlICJq
cXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgotICAgICAgICAgICAg
dmFyIHByb21pc2UgPSB0aGlzLnJlc29sdmUocGFpci5rZXksIGtleSwgaW5pdGlhdG9yKS50aGVu
KChkZXBLZXkpID0+IHsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5yZXNvbHZlKHBh
aXIua2V5LCBrZXksIGZldGNoZXIpLnRoZW4oKGRlcEtleSkgPT4gewogICAgICAgICAgICAgICAg
IHZhciBkZXBFbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOwogCiAgICAgICAg
ICAgICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlz
IGVudHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgZnVuY3Rpb24gcmVxdWVzdFNhdGlzZnkoa2V5LCBpbml0aWF0b3IpCiAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEtleSwgaW5pdGlhdG9yKS50aGVuKChlbnRyeSkg
PT4geworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEtleSwg
ZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgICAgICAgICAgICAgcGFpci52YWx1
ZSA9IGVudHJ5Lm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAg
ICAgICAgICAgICAgIH0pOwpAQCAtMzEyLDE2ICszMTIsMTYgQEAgZnVuY3Rpb24gcmVxdWVzdFNh
dGlzZnkoa2V5LCBpbml0aWF0b3IpCiAgICAgcmV0dXJuIHNhdGlzZnlQcm9taXNlOwogfQogCi1m
dW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5LCBpbml0aWF0b3IpCitmdW5jdGlvbiBy
ZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUtYWxsCiAKICAgICAidXNl
IHN0cmljdCI7CiAKLSAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShrZXksIGluaXRpYXRv
cik7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBmZXRjaGVyKTsKIH0KIAot
ZnVuY3Rpb24gcmVxdWVzdExpbmsoa2V5LCBpbml0aWF0b3IpCitmdW5jdGlvbiByZXF1ZXN0TGlu
ayhrZXksIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRl
ci8jcmVxdWVzdC1saW5rCiAKQEAgLTMzNCwyNiArMzM0LDI2IEBAIGZ1bmN0aW9uIHJlcXVlc3RM
aW5rKGtleSwgaW5pdGlhdG9yKQogICAgICAgICByZXR1cm4gZGVmZXJyZWQuQHByb21pc2U7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHRoaXMucmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSwgaW5pdGlh
dG9yKS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICB0aGlzLmxpbmsoZW50cnksIGluaXRpYXRv
cik7CisgICAgcmV0dXJuIHRoaXMucmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSwgZmV0Y2hlciku
dGhlbigoZW50cnkpID0+IHsKKyAgICAgICAgdGhpcy5saW5rKGVudHJ5LCBmZXRjaGVyKTsKICAg
ICAgICAgcmV0dXJuIGVudHJ5OwogICAgIH0pOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0UmVhZHko
a2V5LCBpbml0aWF0b3IpCitmdW5jdGlvbiByZXF1ZXN0UmVhZHkoa2V5LCBmZXRjaGVyKQogewog
ICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtcmVhZHkKIAog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiB0aGlzLnJlcXVlc3RMaW5rKGtleSwgaW5p
dGlhdG9yKS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24o
ZW50cnkubW9kdWxlLCBpbml0aWF0b3IpOworICAgIHJldHVybiB0aGlzLnJlcXVlc3RMaW5rKGtl
eSwgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKKyAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0
aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CiAgICAgfSk7CiB9CiAKIC8vIExpbmtpbmcgc2Vt
YW50aWNzLgogCi1mdW5jdGlvbiBsaW5rKGVudHJ5LCBpbml0aWF0b3IpCitmdW5jdGlvbiBsaW5r
KGVudHJ5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI2xpbmsKIApAQCAtMzczLDE1ICszNzMsMTUgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgaW5p
dGlhdG9yKQogICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7CiAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICB2YXIgcGFpciA9IGRlcGVuZGVuY2llc1tpXTsKLSAgICAgICAgdGhp
cy5saW5rKHBhaXIudmFsdWUucmVnaXN0cnlFbnRyeSwgaW5pdGlhdG9yKTsKKyAgICAgICAgdGhp
cy5saW5rKHBhaXIudmFsdWUucmVnaXN0cnlFbnRyeSwgZmV0Y2hlcik7CiAgICAgfQogCi0gICAg
dGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBpbml0aWF0
b3IpOworICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVs
ZSwgZmV0Y2hlcik7CiB9CiAKIC8vIE1vZHVsZSBzZW1hbnRpY3MuCiAKLWZ1bmN0aW9uIG1vZHVs
ZUV2YWx1YXRpb24obW9kdWxlUmVjb3JkLCBpbml0aWF0b3IpCitmdW5jdGlvbiBtb2R1bGVFdmFs
dWF0aW9uKG1vZHVsZVJlY29yZCwgZmV0Y2hlcikKIHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogCkBA
IC0zOTgsOSArMzk4LDkgQEAgZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihtb2R1bGVSZWNvcmQs
IGluaXRpYXRvcikKICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxl
bmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIHZhciBwYWlyID0gZGVwZW5kZW5jaWVz
W2ldOwogICAgICAgICB2YXIgcmVxdWlyZWRNb2R1bGVSZWNvcmQgPSBwYWlyLnZhbHVlOwotICAg
ICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24ocmVxdWlyZWRNb2R1bGVSZWNvcmQsIGluaXRpYXRv
cik7CisgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihyZXF1aXJlZE1vZHVsZVJlY29yZCwg
ZmV0Y2hlcik7CiAgICAgfQotICAgIHRoaXMuZXZhbHVhdGUoZW50cnkua2V5LCBtb2R1bGVSZWNv
cmQsIGluaXRpYXRvcik7CisgICAgdGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIG1vZHVsZVJlY29y
ZCwgZmV0Y2hlcik7CiB9CiAKIC8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4K
QEAgLTQzMSw3ICs0MzEsNyBAQCBmdW5jdGlvbiBwcm92aWRlKGtleSwgc3RhZ2UsIHZhbHVlKQog
ICAgIEB0aHJvd1R5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHJlYWR5IHRv
IGJlIGV4ZWN1dGVkLiIpOwogfQogCi1mdW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9k
dWxlTmFtZSwgcmVmZXJyZXIsIGluaXRpYXRvcikKK2Z1bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShtb2R1bGVOYW1lLCByZWZlcnJlciwgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0cmljdCI7
CiAKQEAgLTQzOSwxMiArNDM5LDEyIEBAIGZ1bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZSht
b2R1bGVOYW1lLCByZWZlcnJlciwgaW5pdGlhdG9yKQogICAgIC8vIHJlc29sdmU6IG1vZHVsZU5h
bWUgPT4gUHJvbWlzZShtb2R1bGVLZXkpCiAgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2
ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4K
ICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJM
IGZvciB0aGUgcmVzb3VyY2UuCi0gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCBy
ZWZlcnJlciwgaW5pdGlhdG9yKS50aGVuKChrZXkpID0+IHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
cmVxdWVzdFJlYWR5KGtleSwgaW5pdGlhdG9yKTsKKyAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1v
ZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKS50aGVuKChrZXkpID0+IHsKKyAgICAgICAgcmV0
dXJuIHRoaXMucmVxdWVzdFJlYWR5KGtleSwgZmV0Y2hlcik7CiAgICAgfSk7CiB9CiAKLWZ1bmN0
aW9uIGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGluaXRpYXRvcikKK2Z1bmN0aW9u
IGxvYWRNb2R1bGUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNoZXIpCiB7CiAgICAgInVzZSBz
dHJpY3QiOwogCkBAIC00NTIsMTQgKzQ1MiwxNCBAQCBmdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVs
ZU5hbWUsIHJlZmVycmVyLCBpbml0aWF0b3IpCiAgICAgLy8gcmVzb2x2ZTogbW9kdWxlTmFtZSA9
PiBQcm9taXNlKG1vZHVsZUtleSkKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0
IHRvIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAg
IC8vIEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9y
IHRoZSByZXNvdXJjZS4KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVy
cmVyLCBpbml0aWF0b3IpLnRoZW4oKGtleSkgPT4gewotICAgICAgICByZXR1cm4gdGhpcy5yZXF1
ZXN0SW5zdGFudGlhdGVBbGwoa2V5LCBpbml0aWF0b3IpOworICAgIHJldHVybiB0aGlzLnJlc29s
dmUobW9kdWxlTmFtZSwgcmVmZXJyZXIsIGZldGNoZXIpLnRoZW4oKGtleSkgPT4geworICAgICAg
ICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5LCBmZXRjaGVyKTsKICAgICB9
KS50aGVuKChlbnRyeSkgPT4gewogICAgICAgICByZXR1cm4gZW50cnkua2V5OwogICAgIH0pOwog
fQogCi1mdW5jdGlvbiBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5LCBpbml0aWF0b3IpCitmdW5j
dGlvbiBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5LCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKIApAQCAtNDY3LDExICs0NjcsMTEgQEAgZnVuY3Rpb24gbGlua0FuZEV2YWx1YXRlTW9k
dWxlKGtleSwgaW5pdGlhdG9yKQogICAgIGlmIChlbnRyeS5zdGF0ZSA8IEBNb2R1bGVMaW5rKQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgbm90IGluc3RhbnRp
YXRlZCB5ZXQuIik7CiAKLSAgICB0aGlzLmxpbmsoZW50cnksIGluaXRpYXRvcik7Ci0gICAgcmV0
dXJuIHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeS5tb2R1bGUsIGluaXRpYXRvcik7CisgICAg
dGhpcy5saW5rKGVudHJ5LCBmZXRjaGVyKTsKKyAgICByZXR1cm4gdGhpcy5tb2R1bGVFdmFsdWF0
aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CiB9CiAKLWZ1bmN0aW9uIGltcG9ydE1vZHVsZSht
b2R1bGVOYW1lLCByZWZlcnJlciwgaW5pdGlhdG9yKQorZnVuY3Rpb24gaW1wb3J0TW9kdWxlKG1v
ZHVsZU5hbWUsIHJlZmVycmVyLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIApAQCAt
NDc5LDEwICs0NzksMTAgQEAgZnVuY3Rpb24gaW1wb3J0TW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVy
cmVyLCBpbml0aWF0b3IpCiAgICAgLy8gcmVzb2x2ZTogbW9kdWxlTmFtZSA9PiBQcm9taXNlKG1v
ZHVsZUtleSkKICAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlx
dWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgogICAgIC8vIEZvciBleGFt
cGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJj
ZS4KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyLCBpbml0aWF0
b3IpLnRoZW4oKGtleSkgPT4gewotICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SW5zdGFudGlh
dGVBbGwoa2V5LCBpbml0aWF0b3IpOworICAgIHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFt
ZSwgcmVmZXJyZXIsIGZldGNoZXIpLnRoZW4oKGtleSkgPT4geworICAgICAgICByZXR1cm4gdGhp
cy5yZXF1ZXN0SW5zdGFudGlhdGVBbGwoa2V5LCBmZXRjaGVyKTsKICAgICB9KS50aGVuKChlbnRy
eSkgPT4gewotICAgICAgICB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5rZXksIGlu
aXRpYXRvcik7CisgICAgICAgIHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGVudHJ5LmtleSwg
ZmV0Y2hlcik7CiAgICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChl
bnRyeS5tb2R1bGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAppbmRleCA2Y2IyMWNkNzFjYmUxYjY2MDZkNTgyMzkyYmI5ZGU0NDRiM2MzYjU4
Li44YjYxNWExYTNhNTE1MTA1OTY3MjA2NWQ0NzJiN2U4YWU4NTg2OTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTU2LDIxICsxNTYsMjEgQEAgdm9p
ZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgCiAgICAgU1RBVElDX0FTU0VS
VChTdHJpbmdUeXBlID09IDYpOwogICAgIFNUQVRJQ19BU1NFUlQoU3ltYm9sVHlwZSA9PSA3KTsK
LSAgICBTVEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjIpOwotICAgIFNUQVRJQ19BU1NFUlQo
RmluYWxPYmplY3RUeXBlID09IDIzKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBl
ID09IDI1KTsKLSAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzMyk7Ci0gICAgU1RBVElD
X0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDM0KTsKLSAgICBTVEFUSUNfQVNTRVJUKFByb3h5
T2JqZWN0VHlwZSA9PSA1Mik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQ4QXJyYXlUeXBlID09IDM1
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM2KTsKLSAgICBTVEFUSUNf
QVNTRVJUKEludDMyQXJyYXlUeXBlID09IDM3KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4QXJy
YXlUeXBlID09IDM4KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9
PSAzOSk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0gNDApOwotICAgIFNU
QVRJQ19BU1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKEZs
b2F0MzJBcnJheVR5cGUgPT0gNDIpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlw
ZSA9PSA0Myk7CisgICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIzKTsKKyAgICBTVEFU
SUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChKU0Z1
bmN0aW9uVHlwZSA9PSAyNik7CisgICAgU1RBVElDX0FTU0VSVChBcnJheVR5cGUgPT0gMzQpOwor
ICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7CisgICAgU1RBVElDX0FT
U0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTMpOworICAgIFNUQVRJQ19BU1NFUlQoSW50OEFycmF5
VHlwZSA9PSAzNik7CisgICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlwZSA9PSAzNyk7Cisg
ICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOCk7CisgICAgU1RBVElDX0FTU0VS
VChVaW50OEFycmF5VHlwZSA9PSAzOSk7CisgICAgU1RBVElDX0FTU0VSVChVaW50OENsYW1wZWRB
cnJheVR5cGUgPT0gNDApOworICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJyYXlUeXBlID09IDQx
KTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElD
X0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZsb2F0
NjRBcnJheVR5cGUgPT0gNDQpOwogICAgIFNUQVRJQ19BU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9PSAxKTsKICAgICBTVEFUSUNfQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgPT0gMik7CiAgICAgU1RBVElDX0FTU0VSVChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9
PSAweDQwMDAwMDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQppbmRleCA5YjMyODI2MTg5NzIyY2VmZmU1Mjc2YmM2ZDRkZTlm
ZGRhZTg5NzFiLi5lYzI0NzczYTMwMDQ1NzZjNGJkZDE0Y2ZlMDQzMDc4M2M2OTNjN2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0zNDUsMjQgKzM0NSwyNCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUg
PSAweDBDCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKIGNvbnN0IFN5
bWJvbFR5cGUgPSA3Ci1jb25zdCBPYmplY3RUeXBlID0gMjIKLWNvbnN0IEZpbmFsT2JqZWN0VHlw
ZSA9IDIzCi1jb25zdCBKU0Z1bmN0aW9uVHlwZSA9IDI1Ci1jb25zdCBBcnJheVR5cGUgPSAzMwot
Y29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM0Ci1jb25zdCBQcm94eU9iamVjdFR5cGUgPSA1Mgor
Y29uc3QgT2JqZWN0VHlwZSA9IDIzCitjb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAorY29uc3Qg
SlNGdW5jdGlvblR5cGUgPSAyNgorY29uc3QgQXJyYXlUeXBlID0gMzQKK2NvbnN0IERlcml2ZWRB
cnJheVR5cGUgPSAzNQorY29uc3QgUHJveHlPYmplY3RUeXBlID0gNTMKIAogIyBUaGUgdHlwZWQg
YXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVj
YXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9i
eV92YWwgYW5kIHB1dF9ieV92YWwuCi1jb25zdCBJbnQ4QXJyYXlUeXBlID0gMzUKLWNvbnN0IElu
dDE2QXJyYXlUeXBlID0gMzYKLWNvbnN0IEludDMyQXJyYXlUeXBlID0gMzcKLWNvbnN0IFVpbnQ4
QXJyYXlUeXBlID0gMzgKLWNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDM5Ci1jb25zdCBV
aW50MTZBcnJheVR5cGUgPSA0MAotY29uc3QgVWludDMyQXJyYXlUeXBlID0gNDEKLWNvbnN0IEZs
b2F0MzJBcnJheVR5cGUgPSA0MgotY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQzCitjb25zdCBJ
bnQ4QXJyYXlUeXBlID0gMzYKK2NvbnN0IEludDE2QXJyYXlUeXBlID0gMzcKK2NvbnN0IEludDMy
QXJyYXlUeXBlID0gMzgKK2NvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMzkKK2NvbnN0IFVpbnQ4Q2xh
bXBlZEFycmF5VHlwZSA9IDQwCitjb25zdCBVaW50MTZBcnJheVR5cGUgPSA0MQorY29uc3QgVWlu
dDMyQXJyYXlUeXBlID0gNDIKK2NvbnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MworY29uc3QgRmxv
YXQ2NEFycmF5VHlwZSA9IDQ0CiAKIGNvbnN0IEZpcnN0QXJyYXlUeXBlID0gSW50OEFycmF5VHlw
ZQogY29uc3QgTGFzdEFycmF5VHlwZSA9IEZsb2F0NjRBcnJheVR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKaW5kZXggYjJmNTk1YzI3NjlhMmFkYzY4
ZTBmOTQxYzg4M2EwODgwMjM3M2NlNC4uZTQ3NjhlZTYyMmIyZTczNThmYWQ3NzM0YWQ2MjY4Y2Qz
MjAyYmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAKQEAgLTE2MSwyNiArMTYxLDI2IEBAIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogcmVqZWN0
UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcmV0
dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAKLXN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSog
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1Zh
bHVlIHJlZmVycmVyLCBKU1ZhbHVlIGluaXRpYXRvcikKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBt
b2R1bGVOYW1lLCByZWZlcnJlciwgaW5pdGlhdG9yKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5tb2R1bGVMb2FkZXIoKS0+bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIG1vZHVsZU5hbWUs
IHJlZmVycmVyLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAotc3RhdGljIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZU5hbWUsIEpTVmFsdWUgaW5pdGlhdG9yKQorc3RhdGljIEpTSW50ZXJuYWxQcm9taXNl
KiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZU5hbWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKLSAgICByZXR1cm4gbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNW
YWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSwgaW5pdGlhdG9yKTsK
KyAgICByZXR1cm4gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmlu
ZWQoKSwgc2NyaXB0RmV0Y2hlcik7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZh
bHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIEpT
VmFsdWUgaW5pdGlhdG9yKQorSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXND
b2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgcmV0dXJuIGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIGluaXRpYXRvcik7CisgICAgcmV0
dXJuIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIHNjcmlw
dEZldGNoZXIpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIGluaXRp
YXRvcikKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
QEAgLTE5NiwyOSArMTk2LDI5IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyCiAgICAgZ2xvYmFs
T2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIEpTTW9kdWxlTG9hZGVy
OjpTdGF0dXM6OkZldGNoLCBzb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHJlamVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiAKLSAgICByZXR1cm4gbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5l
ZCgpLCBpbml0aWF0b3IpOworICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywg
ZXhlYywgZ2xvYmFsT2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpOwog
fQogCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoY29uc3QgSlNMb2NrSG9s
ZGVyJiwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgaW5pdGlhdG9yKQorc3Rh
dGljIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7Ci0gICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywgbW9k
dWxlTmFtZSwgcmVmZXJyZXIsIGluaXRpYXRvcik7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
bW9kdWxlTG9hZGVyKCktPmxvYWRNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJyZXIsIHNj
cmlwdEZldGNoZXIpOwogfQogCi1zdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUo
Y29uc3QgSlNMb2NrSG9sZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUsIEpTVmFsdWUgaW5p
dGlhdG9yKQorc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKGNvbnN0IEpTTG9j
a0hvbGRlciYgbG9jaywgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
CiB7Ci0gICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZU5hbWUpLCBqc1VuZGVmaW5lZCgpLCBp
bml0aWF0b3IpOworICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmlu
ZWQoKSwgc2NyaXB0RmV0Y2hlcik7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIGluaXRp
YXRvcikKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKLSAgICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFt
ZSksIGluaXRpYXRvcik7CisgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVs
ZU5hbWUpLCBzY3JpcHRGZXRjaGVyKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgaW5p
dGlhdG9yKQorSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTIzNSwx
NyArMjM1LDE3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlCiAgICAgZ2xvYmFsT2JqZWN0LT5t
b2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIEpTTW9kdWxlTG9hZGVyOjpTdGF0dXM6
OkZldGNoLCBzb3VyY2UpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdFBy
b21pc2UoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiAKLSAgICByZXR1cm4gbG9hZE1vZHVsZShsb2Nr
LCBleGVjLCBnbG9iYWxPYmplY3QsIGtleSwganNVbmRlZmluZWQoKSwgaW5pdGlhdG9yKTsKKyAg
ICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIGtleSwganNVbmRl
ZmluZWQoKSwgc2NyaXB0RmV0Y2hlcik7CiB9CiAKLUpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVl
IGluaXRpYXRvcikKK0pTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+
dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1v
ZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNW
YWx1ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpLCBpbml0aWF0b3IpOworICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRl
bnRpZmllclRvSlNWYWx1ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpLCBzY3JpcHRGZXRjaGVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgKaW5kZXggMTk4ZDdlYzE2MjliZTZlNjdhYWQ5MjQ2NTFjNWY5ZmU3MGU1ZjU3
NS4uODIyYmM0MmUyNTNjMmRmMTEzM2IxZGIwNzhiYzk1MjNkZTFhZGM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtNTcsMTQgKzU3LDE0IEBAIGlu
bGluZSBKU1ZhbHVlIHByb2ZpbGVkRXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9maWxpbmdS
ZWFzb24gcmVhc29uLCBjb25zdCBTCiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVj
dCogc2NvcGVFeHRlbnNpb24sIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KTsKIAogLy8gTG9hZCB0aGUgbW9kdWxlIHNvdXJjZSBhbmQgZXZhbHVhdGUgaXQuCi1KU19FWFBP
UlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBpbml0aWF0b3IgPSBqc1Vu
ZGVmaW5lZCgpKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5k
RXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgaW5p
dGlhdG9yID0ganNVbmRlZmluZWQoKSk7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJv
bWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7CitKU19FWFBP
UlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVm
aW5lZCgpKTsKIAogLy8gRmV0Y2ggdGhlIG1vZHVsZSBzb3VyY2UsIGFuZCBpbnN0YW50aWF0ZSB0
aGUgbW9kdWxlIHJlY29yZC4KLUpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBs
b2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSwgSlNWYWx1ZSBp
bml0aWF0b3IgPSBqc1VuZGVmaW5lZCgpKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVl
IGluaXRpYXRvciA9IGpzVW5kZWZpbmVkKCkpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5h
bFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1l
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsKK0pTX0VYUE9SVF9QUklW
QVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIgPSBqc1VuZGVmaW5lZCgpKTsKIAogLy8gTGlu
ayBhbmQgZXZhbHVhdGUgdGhlIGFscmVhZHkgbGlua2VkIG1vZHVsZS4gVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgaW4gYSBzeW5jIG1hbm5lci4KLUpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbGlu
a0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtl
eSwgSlNWYWx1ZSBpbml0aWF0b3IgPSBqc1VuZGVmaW5lZCgpKTsKK0pTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyID0ganNVbmRlZmluZWQoKSk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGMwMGZkYzBmZGMxNjJjMDIxMjI0NGUyNWIzM2FmMDE1
YzJjMjRkMTAuLjk2ZjE4MjJiZWVhOWI2Nzg3NDc1ZjBiNGJmOTViZmI3ZWM0ODZkMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6cHJvdmlkZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3RhdHVzLCBjb24KICAgICByZXR1cm4gY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpOwogfQog
Ci1KU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwg
SlNWYWx1ZSBpbml0aWF0b3IpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6Omxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwg
SlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTT2JqZWN0
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkubG9hZEFuZEV2YWx1YXRlTW9kdWxlUHVibGljTmFtZSgpKSk7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBKU0ludGVybmFs
UHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBh
cmd1bWVudHMuYXBwZW5kKG1vZHVsZU5hbWUpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVmZXJy
ZXIpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoaW5pdGlhdG9yKTsKKyAgICBhcmd1bWVudHMuYXBw
ZW5kKHNjcmlwdEZldGNoZXIpOwogCiAgICAgcmV0dXJuIGpzQ2FzdDxKU0ludGVybmFsUHJvbWlz
ZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1l
bnRzKSk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZE1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlciwg
SlNWYWx1ZSBpbml0aWF0b3IpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6Omxv
YWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVm
ZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmxvYWRNb2R1bGVQdWJsaWNOYW1lKCkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKQEAgLTExOCwxMiArMTE4LDEyIEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRl
cjo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxl
TmFtZSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChyZWZlcnJlcik7Ci0gICAgYXJndW1lbnRzLmFw
cGVuZChpbml0aWF0b3IpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoc2NyaXB0RmV0Y2hlcik7CiAK
ICAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKIH0KIAotSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBtb2R1bGVLZXksIEpTVmFsdWUgaW5pdGlhdG9yKQorSlNWYWx1ZSBKU01vZHVsZUxvYWRl
cjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVL
ZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVB1YmxpY05hbWUoKSkpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwpAQCAtMTMyLDcgKzEzMiw3IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6Omxp
bmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlS2V5CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVu
ZChtb2R1bGVLZXkpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoaW5pdGlhdG9yKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogCiAgICAgcmV0dXJuIGNhbGwoZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKIH0KQEAgLTE2MSwy
MCArMTYxLDIwIEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9k
dWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIG1vZHVsCiAgICAgcmV0dXJuIGRlZmVycmVk
LT5wcm9taXNlKCk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVz
b2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNW
YWx1ZSBpbml0aWF0b3IpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OnJlc29s
dmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdT
dGF0ZSgpKQogICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW3Jlc29sdmVdICIsIHByaW50YWJsZU1v
ZHVsZUtleShleGVjLCBuYW1lKSwgIlxuIik7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmIChnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlclJlc29sdmUpCi0gICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVs
ZUxvYWRlclJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCB0aGlzLCBuYW1lLCByZWZlcnJlciwg
aW5pdGlhdG9yKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyUmVzb2x2ZShnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMs
IG5hbWUsIHJlZmVycmVyLCBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZURl
ZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVj
LCBnbG9iYWxPYmplY3QpOwogICAgIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIG5hbWUpOwogICAg
IHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogSlNN
b2R1bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUg
aW5pdGlhdG9yKQorSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAg
aWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygi
TG9hZGVyIFtmZXRjaF0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOwpA
QCAtMTgzLDcgKzE4Myw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6ZmV0
Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBpCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJGZXRjaCkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCB0
aGlzLCBrZXksIGluaXRpYXRvcik7CisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckZldGNoKGdsb2JhbE9iamVjdCwgZXhl
YywgdGhpcywga2V5LCBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QpOwogICAgIFN0cmluZyBtb2R1bGVLZXkgPSBrZXkudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpAQCAtMTk2LDI3ICsx
OTYsMjcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIGkKICAgICByZXR1cm4gZGVmZXJyZWQtPnBy
b21pc2UoKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjppbnN0YW50
aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJjZSwgSlNWYWx1
ZSBpbml0aWF0b3IpCitKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6Omluc3RhbnRp
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc291cmNlLCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3Rh
dGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtpbnN0YW50aWF0ZV0gIiwgcHJpbnRhYmxl
TW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbnN0YW50aWF0ZSkK
LSAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bW9kdWxlTG9hZGVySW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBleGVjLCB0aGlzLCBrZXksIHNv
dXJjZSwgaW5pdGlhdG9yKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVySW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBl
eGVjLCB0aGlzLCBrZXksIHNvdXJjZSwgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKIH0KIAotSlNWYWx1
ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwg
SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBpbml0aWF0b3IpCitKU1ZhbHVlIEpT
TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgaWYg
KE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygiTG9h
ZGVyIFtldmFsdWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGV4ZWMsIGtleSksICJcbiIpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5tb2R1bGVMb2FkZXJFdmFsdWF0ZSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCBleGVjLCB0aGlzLCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBpbml0aWF0b3IpOworICAgICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVM
b2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgbW9kdWxlUmVjb3Jk
VmFsdWUsIHNjcmlwdEZldGNoZXIpOwogCiAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7CiAg
ICAgaWYgKCFtb2R1bGVSZWNvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuaAppbmRleCA2MmNjMzgyOTYyMDZlOTdlYzU0MmNjNGRkNjg5ODJhMWYw
NmQyYzZhLi41ZGIxZWZmYmRiYzZmN2ZhODJiMzEyOThkZjQxMzI1Mzg5Mzk4ZWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKQEAgLTY0LDE4
ICs2NCwxOCBAQCBjbGFzcyBKU01vZHVsZUxvYWRlciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIAogICAgIC8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KICAgICBKU1Zh
bHVlIHByb3ZpZGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIFN0YXR1cywgY29uc3QgU291cmNl
Q29kZSYpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIGlu
aXRpYXRvcik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBKU1ZhbHVlIGluaXRpYXRvcik7
Ci0gICAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBt
b2R1bGVLZXksIEpTVmFsdWUgaW5pdGlhdG9yKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1
ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlz
ZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVm
ZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVh
dGVNb2R1bGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVLZXksIEpTVmFsdWUgc2NyaXB0RmV0
Y2hlcik7CiAKICAgICAvLyBQbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCiAgICAgSlNJ
bnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShFeGVjU3RhdGUqLCBKU1N0cmluZyogbW9kdWxl
TmFtZSwgY29uc3QgU291cmNlT3JpZ2luJiByZWZlcnJlcik7Ci0gICAgSlNJbnRlcm5hbFByb21p
c2UqIHJlc29sdmUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyLCBK
U1ZhbHVlIGluaXRpYXRvcik7Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIGZldGNoKEV4ZWNTdGF0
ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIGluaXRpYXRvcik7Ci0gICAgSlNJbnRlcm5hbFByb21p
c2UqIGluc3RhbnRpYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJjZSwg
SlNWYWx1ZSBpbml0aWF0b3IpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogZmV0Y2goRXhlY1N0YXRlKiwgSlNWYWx1ZSBr
ZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIGluc3Rh
bnRpYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNvdXJjZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKTsKIAogICAgIC8vIEFkZGl0aW9uYWwgcGxhdGZvcm0gZGVwZW5kZW50IGhv
b2tlZCBBUElzLgotICAgIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIGluaXRpYXRvcik7CisgICAgSlNWYWx1ZSBl
dmFsdWF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKICAgICAvLyBVdGlsaXR5IGZ1bmN0aW9ucy4KICAgICBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTVmFsdWUgbW9kdWxlUmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NjcmlwdEZldGNoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2M1YmEwZDc1M2U0MDg4
MjI5MjFhNjUyN2IzZmM4NmE4NDZmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNTY3JpcHRGZXRjaGVyLmgiCisKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNTY3Jp
cHRGZXRjaGVyOjpzX2luZm8gPSB7ICJKU1NjcmlwdEZldGNoZXIiLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU2NyaXB0RmV0Y2hlcikgfTsKKwordm9pZCBKU1Njcmlw
dEZldGNoZXI6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTU2Ny
aXB0RmV0Y2hlcio+KGNlbGwpLT5+SlNTY3JpcHRGZXRjaGVyKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3Jp
cHRGZXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNo
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wOTk0ZGIxNjQ4MWJiMGFhMTAwNzg0N2U0NjE0NDQwMTg2NWJhMjdk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3Jp
cHRGZXRjaGVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEZldGNo
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTU2NyaXB0RmV0Y2hlciA6IHB1Ymxp
YyBKU0NlbGwgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU1NjcmlwdEZl
dGNoZXJUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTU2NyaXB0RmV0Y2hlciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
ZlB0cjxTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCisgICAgeworICAgICAgICBhdXRv
KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NjcmlwdEZldGNoZXI+KHZt
LmhlYXApKSBKU1NjcmlwdEZldGNoZXIodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShzY3JpcHRGZXRj
aGVyKSk7CisgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBKU1NjcmlwdEZldGNoZXIqIGNyZWF0ZShW
TSYgdm0sIFJlZlB0cjxTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlKHZtLCB2bS5zY3JpcHRGZXRjaGVyU3RydWN0dXJlLmdldCgpLCBX
VEZNb3ZlKHNjcmlwdEZldGNoZXIpKTsKKyAgICB9CisKKyAgICBTY3JpcHRGZXRjaGVyKiBmZXRj
aGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZldGNoZXIuZ2V0KCk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworcHJpdmF0ZToKKyAgICBK
U1NjcmlwdEZldGNoZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPFNjcmlw
dEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CisgICAgICAgICwgbV9mZXRjaGVyKFdURk1vdmUoc2NyaXB0RmV0Y2hlcikpCisgICAgeworICAg
IH0KKworICAgIFJlZlB0cjxTY3JpcHRGZXRjaGVyPiBtX2ZldGNoZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggYWUx
ODRkZTI3ZGU4ZmEyYzdiMWVmOTc5NzVlYWM2YmViYjE2MzM2NC4uYmVmNmMwNjA4NWU1OWY0ZGU2
MDAyNWUzZGFiNzU0MzU2NjI4ODk1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKIAogICAgIEpT
Rml4ZWRBcnJheVR5cGUsCiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKKyAgICBKU1NjcmlwdEZldGNo
ZXJUeXBlLAogCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFsdWUgbXVzdCBjb21lIGJlZm9yZSBh
bnkgSlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09iamVjdC4KICAgICBPYmplY3RUeXBl
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RmV0Y2hl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RmV0Y2hlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJkMGFlMjk1OGNiMDEwMTVmYmRmMzAxZjIzMzczNWM1OGE3MWU0MDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRGZXRjaGVyLmgK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNjcmlwdEZldGNoZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxTY3JpcHRGZXRjaGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2NyaXB0RmV0Y2hl
cigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggMzhlOTlhZDE2NDlmMTFiNGU4NGNkMGQ0YjNmNDE4NmEzNTIwYjk0YS4u
MmFiYzhhMjdmZDNkZjA2YmY3NzhiMzJkN2E2ZGY2MGIzODVjMDRlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgi
CiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlICJK
U1NvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0yNDAsNiArMjQxLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBmaXhlZEFycmF5U3RydWN0dXJlLnNldCgqdGhpcywgSlNGaXhlZEFycmF5OjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc291cmNlQ29kZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTU291cmNlQ29kZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOworICAgIHNjcmlwdEZldGNoZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NjcmlwdEZldGNo
ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVD
aGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywg
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzZWJlZDczZTViYTExODViNTc0
Y2QzNzI3NDljNGIwYTE3ZTE2OTI3Li4yYTgyZmUwZjUwMzBhNjlkNDUzMTBjYTEwNmE2MGVhOTBi
NDYxZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMyNyw2ICszMjcsNyBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHN5bWJvbFRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGZpeGVkQXJyYXlTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc291cmNlQ29kZVN0
cnVjdHVyZTsKKyAgICBTdHJvbmc8U3RydWN0dXJlPiBzY3JpcHRGZXRjaGVyU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNoYWluU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU2NyaXB0RmV0Y2hlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIwNzNhZmI2NjQyYjU0YTg5NDkyOTA0YTEwOWE3ZjkxYzEzZDMwMjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0pTU2NyaXB0RmV0Y2hlci5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1NjcmlwdEZldGNoZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0RmV0Y2hlci5oIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TY3JpcHRGZXRjaGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjY1ODMzNGFiZWUyMGI0NTlhYWFkN2Q0MTM1MWRlOTVmODVjMjk2MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2NyaXB0RmV0
Y2hlci5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRGZXRjaGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0LmNwcAppbmRleCA0YmVmMmE4YWE4MzhkNzYxNzMzM2UzMGZkMjZkOWFi
ZDFiN2VlZDg3Li4wZmVjNGI1OWIxZDJkMzE0ZDgwNDJmNzExM2FmYjk5OTRjNTY4NmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAK
QEAgLTI5LDM4ICsyOSwzMCBAQAogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdENsaWVudC5o
IgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IENhY2hlZE1vZHVsZVNjcmlw
dDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5N
b2RlKQorUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gQ2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUo
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZE1vZHVsZVNjcmlwdChub25jZSwg
Y3Jvc3NPcmlnaW5Nb2RlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkTW9kdWxl
U2NyaXB0KCkpOwogfQogCi1DYWNoZWRNb2R1bGVTY3JpcHQ6OkNhY2hlZE1vZHVsZVNjcmlwdChj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKLSAgICA6
IG1fbm9uY2Uobm9uY2UpCi0gICAgLCBtX2Nyb3NzT3JpZ2luTW9kZShjcm9zc09yaWdpbk1vZGUp
Cit2b2lkIENhY2hlZE1vZHVsZVNjcmlwdDo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogeworICAgIGlm
IChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zY3JpcHQo
KS5sb2FkTW9kdWxlU2NyaXB0KCp0aGlzLCByb290VVJMLnN0cmluZygpLCBsb2FkYWJsZVNjcmlw
dCk7CiB9CiAKLXZvaWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKEVsZW1lbnQmIGluaXRpYXRv
ciwgY29uc3QgVVJMJiByb290VVJMKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHQ6OmxvYWQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2Fk
YWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCiB7Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gaW5p
dGlhdG9yLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmxvYWRN
b2R1bGVTY3JpcHQoKnRoaXMsIHJvb3RVUkwuc3RyaW5nKCksIGluaXRpYXRvcik7Ci19Ci0KLXZv
aWQgQ2FjaGVkTW9kdWxlU2NyaXB0Ojpsb2FkKEVsZW1lbnQmIGluaXRpYXRvciwgY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKLXsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBpbml0
aWF0b3IuZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1v
ZHVsZVNjcmlwdCgqdGhpcywgc291cmNlQ29kZSwgaW5pdGlhdG9yKTsKKyAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2NyaXB0KCkubG9hZE1v
ZHVsZVNjcmlwdCgqdGhpcywgc291cmNlQ29kZSwgbG9hZGFibGVTY3JpcHQpOwogfQogCiB2b2lk
IENhY2hlZE1vZHVsZVNjcmlwdDo6bm90aWZ5TG9hZENvbXBsZXRlZChVbmlxdWVkU3RyaW5nSW1w
bCYgbW9kdWxlS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fj
aGVkTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1
bGVTY3JpcHQuaAppbmRleCA5ZWFhNzZiNGVkZWFjYzM4NzAwZWRjMDU1ZDlkNDA4ZjJkMDQzYzAy
Li41NjJkOTNkMDYzYjFmNGVjNGVjZWU3YmE2OTdiOTJiNTYyOTUzMTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaApAQCAtMzIsMTUgKzMy
LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdENs
aWVudDsKLWNsYXNzIEVsZW1lbnQ7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdFNvdXJj
ZUNvZGU7CiAKIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPENh
Y2hlZE1vZHVsZVNjcmlwdD4gewogcHVibGljOgogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBtb2R1
bGVLZXkoKSB7IHJldHVybiBtX21vZHVsZUtleS5nZXQoKTsgfQogCi0gICAgdm9pZCBldmFsdWF0
ZShFbGVtZW50Jik7Ci0KICAgICB2b2lkIG5vdGlmeUxvYWRDb21wbGV0ZWQoVW5pcXVlZFN0cmlu
Z0ltcGwmIG1vZHVsZUtleSk7CiAgICAgdm9pZCBub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxlU2Ny
aXB0OjpFcnJvciYmKTsKICAgICB2b2lkIG5vdGlmeUxvYWRXYXNDYW5jZWxlZCgpOwpAQCAtNTIs
MjMgKzUwLDE2IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVk
PENhY2hlZE1vZHVsZVNjcmlwdD4gewogICAgIHZvaWQgYWRkQ2xpZW50KENhY2hlZE1vZHVsZVNj
cmlwdENsaWVudCYpOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZE1vZHVsZVNjcmlwdENs
aWVudCYpOwogCi0gICAgc3RhdGljIFJlZjxDYWNoZWRNb2R1bGVTY3JpcHQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7Ci0KLSAgICB2
b2lkIGxvYWQoRWxlbWVudCYgaW5pdGlhdG9yLCBjb25zdCBVUkwmIHJvb3RVUkwpOwotICAgIHZv
aWQgbG9hZChFbGVtZW50JiBpbml0aWF0b3IsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAg
ICBzdGF0aWMgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4gY3JlYXRlKCk7CiAKLSAgICBjb25zdCBT
dHJpbmcmIG5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9ub25jZTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0K
KyAgICB2b2lkIGxvYWQoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHJvb3RVUkwsIExvYWRhYmxlU2Ny
aXB0Jik7CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IExvYWRhYmxlU2NyaXB0Jik7CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkTW9kdWxlU2NyaXB0KGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKLQogICAg
IHZvaWQgbm90aWZ5Q2xpZW50RmluaXNoZWQoKTsKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4gbV9tb2R1bGVLZXk7CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkTW9kdWxlU2NyaXB0
Q2xpZW50Kj4gbV9jbGllbnRzOwotICAgIFN0cmluZyBtX25vbmNlOwotICAgIFN0cmluZyBtX2Ny
b3NzT3JpZ2luTW9kZTsKICAgICBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4g
bV9lcnJvcjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c0xvYWRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAppbmRleCBjNDk5Y2RhMjRkMjI4ZmZkZmU5
OTRlZDQ2Y2E3YjA2MWQ2MzliMGVhLi42MGJkZDQ4NWNhYjM1OGM5YWM1ZTc5NzkxZjVhYmQ4Mjk0
ZTQwMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKQEAgLTI2LDE0ICsyNiwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oIgogCi0jaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkxvYWRhYmxlU2NyaXB0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAKQEAgLTU4LDEwICs1NywxMCBAQCBD
YWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6On5DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoKQogICAg
IH0KIH0KIAotYm9vbCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmxvYWQoU2NyaXB0RWxlbWVu
dCYgc2NyaXB0RWxlbWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCitib29sIENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlcjo6bG9hZChEb2N1bWVudCYgZG9jdW1lbnQsIExvYWRhYmxlU2NyaXB0JiBs
b2FkYWJsZVNjcmlwdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwpCiB7CiAgICAgQVNTRVJUKCFtX2Nh
Y2hlZFNjcmlwdCk7Ci0gICAgbV9jYWNoZWRTY3JpcHQgPSBzY3JpcHRFbGVtZW50LnJlcXVlc3RT
Y3JpcHRXaXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQoc291cmNlVVJMKTsKKyAgICBtX2NhY2hlZFNj
cmlwdCA9IGxvYWRhYmxlU2NyaXB0LnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNv
dXJjZVVSTCk7CiAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNj
cmlwdExvYWRlci5oCmluZGV4IDhiMzVmY2I4N2FmNjA3ZDc2ZDI2YmVkNzg4MjZjZTllZDMwZTZk
YzYuLjMyZmRlM2JmYTcyNGQ1MjU3OWQyMTRlNTdlNDZkNjNhNTU3MzQ2MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5o
CkBAIC0zNiw4ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlckNsaWVudDsKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERlZmVycmVk
UHJvbWlzZTsKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7Ci1jbGFz
cyBTY3JpcHRFbGVtZW50OworY2xhc3MgTG9hZGFibGVTY3JpcHQ7CiBjbGFzcyBVUkw7CiAKIGNs
YXNzIENhY2hlZE1vZHVsZVNjcmlwdExvYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcj4sIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpA
QCAtNDYsNyArNDcsNyBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZQogCiAgICAgdmlydHVhbCB+
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyKCk7CiAKLSAgICBib29sIGxvYWQoU2NyaXB0RWxlbWVu
dCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKTsKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBMb2Fk
YWJsZVNjcmlwdCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKTsKIAogICAgIENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KCkgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQuZ2V0KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMzk3ZTU5
NDJiOThmYTVhYmQ3OGY5YWJjYmJlY2Y0MmFlZDA2MmZhOS4uNTRiOTNlYjY4MTgyNjkzMzJmNzQ5
ZTFjZDVkZDllOWE1YjQ4MjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0zMDUsMjkgKzMwNSwyOSBAQCB2b2lkIEpTRE9NV2luZG93
QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNocG9pbnRzRm9yV2luZG93KERPTVdpbmRvdyogd2lu
ZG93KQogfQogCiAKLUpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTRE9NV2luZG93QmFzZTo6bW9k
dWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTQzo6
SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXksIEpTQzo6
SlNWYWx1ZSBpbml0aWF0b3IpCitKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jh
c2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVy
LCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5
LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRo
aXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwog
ICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgp
LmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPnJl
c29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZU5hbWUsIGltcG9y
dGVyTW9kdWxlS2V5LCBpbml0aWF0b3IpOworICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVs
ZUxvYWRlcigpLT5yZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxlTG9hZGVyLCBtb2R1
bGVOYW1lLCBpbXBvcnRlck1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTQzo6SlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIGRlZmVycmVk
LT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9CiAKLUpTQzo6SlNJbnRlcm5hbFByb21p
c2UqIEpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRl
ciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgaW5p
dGlhdG9yKQorSlNDOjpKU0ludGVybmFsUHJvbWlzZSogSlNET01XaW5kb3dCYXNlOjptb2R1bGVM
b2FkZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTQzo6SlNWYWx1
ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIEpTRE9NV2lu
ZG93QmFzZSogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NV2luZG93QmFzZSo+KGdsb2Jh
bE9iamVjdCk7CiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB0aGlzT2JqZWN0
LT53cmFwcGVkKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVM
b2FkZXIoKS0+ZmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtl
eSwgaW5pdGlhdG9yKTsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tb2R1bGVMb2FkZXIoKS0+
ZmV0Y2goZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgc2NyaXB0
RmV0Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9
IEpTQzo6SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCk7CiAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywganNVbmRlZmluZWQoKSk7CiB9
CiAKLUpTQzo6SlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwg
SlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIGluaXRpYXRvcikKK0pTQzo6
SlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1
bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1Zh
bHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
Z2xvYmFsT2JqZWN0KTsKICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1v
ZHVsZUxvYWRlcigpLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIG1vZHVsZUxvYWRlciwg
bW9kdWxlS2V5LCBtb2R1bGVSZWNvcmQsIGluaXRpYXRvcik7CisgICAgICAgIHJldHVybiBkb2N1
bWVudC0+bW9kdWxlTG9hZGVyKCktPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgZXhlYywgbW9kdWxl
TG9hZGVyLCBtb2R1bGVLZXksIG1vZHVsZVJlY29yZCwgc2NyaXB0RmV0Y2hlcik7CiAgICAgcmV0
dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCBjMjc2NmYwODZjYzlkMjg3MjI4
OWQzYjY5YjlmZWQ3MjdlMjM2ZjFlLi5kMjQ0ZWZlMGU2MjRmMTliMDU4ZmJjMjdlNzMyMTIzMjk5
MmE0MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuaApAQCAtOTMsMjUgKzkzLDI1IEBAIGNsYXNzIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZSB7CiAgICAgICAgIHRhc2sucnVuKGV4ZWMpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6
OkpTSW50ZXJuYWxQcm9taXNlJiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgaW5pdGlhdG9yKQorICAgIHN0YXRp
YyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
ICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3RhdGUoJnN0YXRl
KTsKLSAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1bGUoJnN0YXRlLCBtb2R1bGVOYW1lLCBp
bml0aWF0b3IpOworICAgICAgICByZXR1cm4gKkpTQzo6bG9hZE1vZHVsZSgmc3RhdGUsIG1vZHVs
ZU5hbWUsIHNjcmlwdEZldGNoZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJu
YWxQcm9taXNlJiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgSlNDOjpT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU0M6OkpTVmFsdWUgaW5pdGlhdG9yKQorICAgIHN0YXRp
YyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlJiBsb2FkTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU0M6OkpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBjdXJyZW50U3Rh
dGUoJnN0YXRlKTsKLSAgICAgICAgcmV0dXJuICpKU0M6OmxvYWRNb2R1bGUoJnN0YXRlLCBzb3Vy
Y2VDb2RlLCBpbml0aWF0b3IpOworICAgICAgICByZXR1cm4gKkpTQzo6bG9hZE1vZHVsZSgmc3Rh
dGUsIHNvdXJjZUNvZGUsIHNjcmlwdEZldGNoZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgSlNDOjpJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewog
ICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlIGN1cnJlbnRTdGF0ZSgmc3RhdGUpOwotICAgICAgICBhdXRvIHJldHVyblZhbHVlID0gSlND
OjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoJnN0YXRlLCBtb2R1bGVLZXksIGluaXRpYXRvcik7Cisg
ICAgICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBKU0M6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZSgmc3Rh
dGUsIG1vZHVsZUtleSwgc2NyaXB0RmV0Y2hlcik7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gc2NvcGUu
ZXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzN2M5
ZWRmMzZlOWNmM2FmMDNiNWJlMzhiMDQzZGE4ZTAzZTU5MTc1Li4zMjM3NjM1NzEwZTYyZjY2NWQx
NzliMzc4NDZmMWViZDk5YzA4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlBhZ2VD
b25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
Vmlld0Jhc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCkBAIC02MCw2ICs1OSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1Njcmlw
dEZldGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CkBAIC0xODYs
MzkgKzE4NiwzOSBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEV4Y2VwdGlvbgogICAgIHJldHVybiBldmFsdWF0
ZUluV29ybGQoc291cmNlQ29kZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGV4Y2VwdGlvbkRl
dGFpbHMpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldv
cmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVs
ZU5hbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlw
dCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0
JiBsb2FkYWJsZVNjcmlwdCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIAogICAgIGF1dG8mIHNoZWxsID0gKndpbmRvd1NoZWxs
KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpzaGVsbC53aW5kb3coKS0+Z2xvYmFsRXhlYygp
OwogCi0gICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bG9hZE1vZHVs
ZShzdGF0ZSwgbW9kdWxlTmFtZSwgdG9KUygmc3RhdGUsIHNoZWxsLndpbmRvdygpLCAmZWxlbWVu
dCkpOworICAgIGF1dG8mIHByb21pc2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1
bGUoc3RhdGUsIG1vZHVsZU5hbWUsIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUu
dm0oKSwgeyAmbG9hZGFibGVTY3JpcHQgfSkpOwogICAgIHNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMobW9kdWxlU2NyaXB0LCBwcm9taXNlLCB3b3JsZCk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6bG9hZE1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlwdCwg
Y29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBTY3JpcHRD
b250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2Ny
aXB0LCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNj
cmlwdCkKIHsKLSAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVs
ZU5hbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBlbGVtZW50KTsKKyAgICBsb2FkTW9kdWxl
U2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIG1vZHVsZU5hbWUsIGxvYWRhYmxlU2NyaXB0LCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6bG9h
ZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3Jp
cHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0o
KSk7CiAKICAgICBhdXRvJiBzaGVsbCA9ICp3aW5kb3dTaGVsbCh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqc2hlbGwud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAotICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIHRvSlMoJnN0YXRlLCBzaGVsbC53aW5kb3coKSwgJmVsZW1lbnQpKTsK
KyAgICBhdXRvJiBwcm9taXNlID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpsb2FkTW9kdWxlKHN0
YXRlLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBKU0M6OkpTU2NyaXB0RmV0Y2hlcjo6Y3Jl
YXRlKHN0YXRlLnZtKCksIHsgJmxvYWRhYmxlU2NyaXB0IH0pKTsKICAgICBzZXR1cE1vZHVsZVNj
cmlwdEhhbmRsZXJzKG1vZHVsZVNjcmlwdCwgcHJvbWlzZSwgd29ybGQpOwogfQogCi12b2lkIFNj
cmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEVsZW1lbnQmIGVs
ZW1lbnQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9k
dWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAgICBsb2FkTW9kdWxlU2Ny
aXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQsIHNvdXJjZUNvZGUsIG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpLCBlbGVtZW50KTsKKyAgICBsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQs
IHNvdXJjZUNvZGUsIGxvYWRhYmxlU2NyaXB0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9
CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0LCBET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBFbGVtZW50JiBlbGVtZW50KQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiBtb2R1bGVTY3JpcHQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChD
YWNoZWRNb2R1bGVTYwogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCiAgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgYXV0byBy
ZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6bGlua0FuZEV2YWx1YXRlTW9kdWxl
KHN0YXRlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZzdGF0ZS52bSgpLCBtb2R1bGVTY3JpcHQubW9k
dWxlS2V5KCkpLCB0b0pTKCZzdGF0ZSwgc2hlbGwud2luZG93KCksICZlbGVtZW50KSwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CisgICAgYXV0byByZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKHN0YXRlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZz
dGF0ZS52bSgpLCBtb2R1bGVTY3JpcHQubW9kdWxlS2V5KCkpLCBqc1VuZGVmaW5lZCgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAg
ICAvLyBGSVhNRTogR2l2ZSBhIGNoYW5jZSB0byBkdW1wIHRoZSBzdGFjayB0cmFjZSBpZiB0aGUg
ImNyb3Nzb3JpZ2luIiBhdHRyaWJ1dGUgYWxsb3dzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NTM5CkBAIC0yNDAsOSArMjQwLDkgQEAgSlND
OjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdElu
V29ybGQoQ2FjaGVkTW9kdWxlU2MKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQsIEVsZW1lbnQmIGVsZW1lbnQpCitKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hl
ZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQogewotICAgIHJldHVybiBsaW5rQW5kRXZhbHVh
dGVNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxk
KCksIGVsZW1lbnQpOworICAgIHJldHVybiBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldv
cmxkKG1vZHVsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCiBKU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VV
UkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
NTI2OGYwMTVhNThlMzhiYWU4ZWI5YzI2MTIwMThjMWFkZGNmNzA2Mi4uOWUyMGMyY2U5NmJmY2Mw
OTdmZjViYWUxOTEzZWVjZmYyNWI3MDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBDYWNoZWRNb2R1
bGVTY3JpcHQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxEb2N1bWVudDsKIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OworY2xhc3MgTG9hZGFibGVTY3JpcHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGU7CiBjbGFzcyBXaWRnZXQ7CkBAIC0xMTMsMTMgKzEx
NCwxMyBAQCBjbGFzcyBTY3JpcHRDb250cm9sbGVyIHsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEV4Y2VwdGlvbkRldGFpbHMqID0gbnVsbHB0cik7
CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiwgRE9NV3JhcHBlcldvcmxkJiwgRXhjZXB0aW9uRGV0YWlscyogPSBudWxscHRyKTsKIAotICAg
IHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3Qg
U3RyaW5nJiBtb2R1bGVOYW1lLCBET01XcmFwcGVyV29ybGQmLCBFbGVtZW50Jik7Ci0gICAgdm9p
ZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgRWxlbWVudCYpOwotICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQoQ2Fj
aGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3Js
ZCYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGxvYWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2Ny
aXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIEVsZW1lbnQmKTsKKyAgICB2b2lkIGxvYWRN
b2R1bGVTY3JpcHRJbldvcmxkKENhY2hlZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFN0cmluZyYgbW9k
dWxlTmFtZSwgTG9hZGFibGVTY3JpcHQmLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGxv
YWRNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lLCBMb2FkYWJsZVNjcmlwdCYpOworICAgIHZvaWQgbG9hZE1vZHVsZVNjcmlwdEluV29ybGQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIExvYWRhYmxlU2Ny
aXB0JiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgdm9pZCBsb2FkTW9kdWxlU2NyaXB0KENhY2hl
ZE1vZHVsZVNjcmlwdCYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBMb2FkYWJsZVNjcmlwdCYp
OwogCi0gICAgSlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQo
Q2FjaGVkTW9kdWxlU2NyaXB0JiAsIERPTVdyYXBwZXJXb3JsZCYsIEVsZW1lbnQmKTsKLSAgICBK
U0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlw
dCYsIEVsZW1lbnQmKTsKKyAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2Ny
aXB0SW5Xb3JsZChDYWNoZWRNb2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJik7CisgICAg
SlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChDYWNoZWRNb2R1bGVTY3Jp
cHQmKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6
OkpTTW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGIz
ZjY1YjJjMzMyZTQ2OWUxNDhkYmI1MzIxODllYzliMTQzNWFmZDQuLjhkZDI0YzM5YzFiODAxNGZj
ZGQ4OWI0ZjYyZjFkNzZkNDI5OThiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMzEsMTUgKzMxLDE0IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvYWRhYmxlTW9kdWxlU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1NjcmlwdEZldGNo
ZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU291cmNlQ29kZS5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL1N5bWJvbC5oPgpAQCAtMTM0LDExICsx
MzMsOSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29s
dmUoSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYQogICAgIHJldHVybiBqc1Byb21pc2UucHJv
bWlzZSgpOwogfQogCi1KU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6
OmZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1
ZSwgSlNDOjpKU1ZhbHVlIGluaXRpYXRvcikKK0pTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3Qs
IEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
IG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKLSAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZXNlIGFyZSB0cnVlPyBXaHkgZG9uJ3Qgd2UgbmVlZCB0
byBjaGVjaz8KLSAgICBBU1NFUlQoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRWxlbWVudCo+KGluaXRp
YXRvcikpOwotICAgIEFTU0VSVChpc1NjcmlwdEVsZW1lbnQoSlNDOjpqc0R5bmFtaWNDYXN0PEpT
RWxlbWVudCo+KGluaXRpYXRvciktPndyYXBwZWQoKSkpOworICAgIEFTU0VSVChKU0M6OmpzRHlu
YW1pY0Nhc3Q8SlNDOjpKU1NjcmlwdEZldGNoZXIqPihzY3JpcHRGZXRjaGVyKSk7CiAKICAgICBh
dXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihqc0ds
b2JhbE9iamVjdCk7CiAgICAgYXV0byYganNQcm9taXNlID0gKkpTQzo6SlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsICZnbG9iYWxPYmplY3QpOwpAQCAtMTY0LDcgKzE2MSw3
IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1
bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyOjpjcmVhdGUoKnRoaXMsIGRlZmVycmVkLmdldCgpKTsKICAgICAgICAgbV9sb2FkZXJz
LmFkZChsb2FkZXIuY29weVJlZigpKTsKLSAgICAgICAgaWYgKCFsb2FkZXItPmxvYWQoZG93bmNh
c3RTY3JpcHRFbGVtZW50KEpTQzo6anNDYXN0PEpTRWxlbWVudCo+KGluaXRpYXRvciktPndyYXBw
ZWQoKSksIGNvbXBsZXRlZFVSTCkpIHsKKyAgICAgICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1
bWVudCwgKnN0YXRpY19jYXN0PExvYWRhYmxlU2NyaXB0Kj4oSlNDOjpqc0Nhc3Q8SlNDOjpKU1Nj
cmlwdEZldGNoZXIqPihzY3JpcHRGZXRjaGVyKS0+ZmV0Y2hlcigpKSwgY29tcGxldGVkVVJMKSkg
ewogICAgICAgICAgICAgbG9hZGVyLT5jbGVhckNsaWVudCgpOwogICAgICAgICAgICAgbV9sb2Fk
ZXJzLnJlbW92ZShXVEZNb3ZlKGxvYWRlcikpOwogICAgICAgICAgICAgZGVmZXJyZWQtPnJlamVj
dChmcmFtZS0+c2NyaXB0KCkubW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2wo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5o
CmluZGV4IDZmN2RjNjc5MTI5YmY5OWZmYzcwNzAyZjdlOTE5YmE3OWM3NmYwNjMuLmEwNjgzZmZj
ODMzMDFkMmNmYjgxMWQxYjE0Y2ZmMjJjNmFiZjE5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC01NCw5ICs1NCw5IEBAIGNsYXNz
IFNjcmlwdE1vZHVsZUxvYWRlciBmaW5hbCA6IHByaXZhdGUgQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyQ2xpZW50IHsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1l
bnQ7IH0KIAotICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIHJlc29sdmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNW
YWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXksIEpTQzo6SlNW
YWx1ZSBpbml0aWF0b3IpOwotICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGZldGNoKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgaW5pdGlhdG9yKTsKLSAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1
ZSBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBpbml0aWF0b3IpOworICAgIEpTQzo6SlNJbnRl
cm5hbFByb21pc2UqIHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpT
VmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAg
ICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtl
eSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwg
SlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyJiwgUmVmUHRyPERlZmVycmVkUHJvbWlz
ZT4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cAppbmRleCA5MDk2MWI4ZWNiODIzM2FjZTY3NjU5NjU4YTU0N2YxYjM1ZDczNGJiLi45OGNiMDZk
ZmI3OGM1M2Y4YmQ1NjRmYjI3NDFhMDAzMWE0ODQxZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApAQCAtMzMsMjYgKzMzLDI2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gTG9hZGFibGVDbGFz
c2ljU2NyaXB0OjpjcmVhdGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNh
Y2hlZFNjcmlwdCkKK1JlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmln
aW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlh
dG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKIHsKLSAgICBBU1NFUlQoY2Fj
aGVkU2NyaXB0KTsKLSAgICBhdXRvIHNjcmlwdCA9IGFkb3B0UmVmKCpuZXcgTG9hZGFibGVDbGFz
c2ljU2NyaXB0KFdURk1vdmUoY2FjaGVkU2NyaXB0KSkpOwotICAgIGNhY2hlZFNjcmlwdC0+YWRk
Q2xpZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBMb2FkYWJsZUNsYXNzaWNTY3JpcHQobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSwg
Y2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpKTsKIH0KIAog
TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp+TG9hZGFibGVDbGFzc2ljU2NyaXB0KCkKIHsKLSAgICBt
X2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV9jYWNoZWRTY3Jp
cHQpCisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBi
b29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAogeworICAgIEFTU0VS
VChtX2NhY2hlZFNjcmlwdCk7CiAgICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFz
c2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsK
ICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuIG1fZXJyb3I7CiAKQEAgLTY0LDExICs2
NCwxMyBAQCBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFz
c2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3
YXNDYW5jZWxlZCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICBy
ZXR1cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKIHZvaWQgTG9hZGFibGVD
bGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7
CisgICAgQVNTRVJUKG1fY2FjaGVkU2NyaXB0KTsKICAgICBpZiAocmVzb3VyY2UucmVzb3VyY2VF
cnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlw
dCBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikp
OwogICAgICAgICBtX2Vycm9yID0gRXJyb3IgewpAQCAtMTA1LDQgKzEwNywxNCBAQCB2b2lkIExv
YWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXhlY3V0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50
KQogICAgIHNjcmlwdEVsZW1lbnQuZXhlY3V0ZUNsYXNzaWNTY3JpcHQoU2NyaXB0U291cmNlQ29k
ZShtX2NhY2hlZFNjcmlwdC5nZXQoKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW0pKTsKIH0KIAorYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKK3sKKyAgICBBU1NFUlQoIW1fY2FjaGVk
U2NyaXB0KTsKKyAgICBtX2NhY2hlZFNjcmlwdCA9IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9j
dW1lbnQsIHNvdXJjZVVSTCk7CisgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVDbGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2Ny
aXB0LmgKaW5kZXggYWQ0MWRjMmFiN2Q0MWQwZjE1YThkYjIyYTBkMDU0NjYzOTRkY2FhOS4uNmEz
YTMwYzNlNzJjMjQ3YWU3ZDUzMDQxYjhkOThkMzg3YzAzZTZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBMb2Fk
YWJsZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUg
Q2FjaGVkUmVzb3VyYwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRhYmxlQ2xhc3NpY1Njcmlw
dCgpOwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFi
bGVDbGFzc2ljU2NyaXB0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKICAgICBi
b29sIGlzTG9hZGVkKCkgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJy
b3IoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgZmluYWw7CkBA
IC01MiwxMiArNTIsMTcgQEAgY2xhc3MgTG9hZGFibGVDbGFzc2ljU2NyaXB0IGZpbmFsIDogcHVi
bGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZFJlc291cmMKIAogICAgIHZvaWQgZXhl
Y3V0ZShTY3JpcHRFbGVtZW50JikgZmluYWw7CiAKKyAgICBib29sIGxvYWQoRG9jdW1lbnQmLCBj
b25zdCBVUkwmKTsKKwogcHJpdmF0ZToKLSAgICBMb2FkYWJsZUNsYXNzaWNTY3JpcHQoQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiYmIGNhY2hlZFNjcmlwdCkgOiBtX2NhY2hlZFNj
cmlwdChXVEZNb3ZlKGNhY2hlZFNjcmlwdCkpIHsgfQorICAgIExvYWRhYmxlQ2xhc3NpY1Njcmlw
dChjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUsIGJv
b2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpCisgICAgICAgIDogTG9hZGFibGVTY3JpcHQobm9u
Y2UsIGNyb3NzT3JpZ2luTW9kZSwgY2hhcnNldCwgaW5pdGlhdG9yTmFtZSwgaXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUpCisgICAgeworICAgIH0KIAogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9jYWNoZWRTY3JpcHQ7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2Ny
aXB0PiBtX2NhY2hlZFNjcmlwdCB7IH07CiAgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gbV9lcnJv
ciB7IHN0ZDo6bnVsbG9wdCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1v
ZHVsZVNjcmlwdC5jcHAKaW5kZXggODQyODdlZTdiMWEzZTcyNDFmYTdlMWYwN2NlOThhNTRlMDlh
ZmZlNi4uMGViMTBiNWI0ZGJhNzI4ZTliZDRlZWNjMmEwYjMyZTJmZmQyMjJkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCkBAIC0zMCwxNiArMzAsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExv
YWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3Jp
cHQpCitSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBi
b29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQogewotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHRS
ZWYoKm5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpKTsKLSAgICBtb2R1bGVT
Y3JpcHQuYWRkQ2xpZW50KHNjcmlwdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHNjcmlwdDsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2FkYWJsZU1vZHVsZVNjcmlwdChub25jZSwgY3Jvc3NPcmln
aW5Nb2RlLCBjaGFyc2V0LCBpbml0aWF0b3JOYW1lLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSwg
Q2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVhdGUoKSkpOwogfQogCi1Mb2FkYWJsZU1vZHVsZVNjcmlw
dDo6TG9hZGFibGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQp
Ci0gICAgOiBtX21vZHVsZVNjcmlwdChtb2R1bGVTY3JpcHQpCitMb2FkYWJsZU1vZHVsZVNjcmlw
dDo6TG9hZGFibGVNb2R1bGVTY3JpcHQoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbk1vZGUsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbml0aWF0b3JOYW1lLCBib29sIGlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBSZWY8Q2Fj
aGVkTW9kdWxlU2NyaXB0PiYmIG1vZHVsZVNjcmlwdCkKKyAgICA6IExvYWRhYmxlU2NyaXB0KG5v
bmNlLCBjcm9zc09yaWdpbk1vZGUsIGNoYXJzZXQsIGluaXRpYXRvck5hbWUsIGlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKQorICAgICwgbV9tb2R1bGVTY3JpcHQoV1RGTW92ZShtb2R1bGVTY3JpcHQp
KQogeworICAgIG1fbW9kdWxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiBMb2FkYWJs
ZU1vZHVsZVNjcmlwdDo6fkxvYWRhYmxlTW9kdWxlU2NyaXB0KCkKQEAgLTcyLDQgKzcyLDE0IEBA
IHZvaWQgTG9hZGFibGVNb2R1bGVTY3JpcHQ6OmV4ZWN1dGUoU2NyaXB0RWxlbWVudCYgc2NyaXB0
RWxlbWVudCkKICAgICBzY3JpcHRFbGVtZW50LmV4ZWN1dGVNb2R1bGVTY3JpcHQobV9tb2R1bGVT
Y3JpcHQuZ2V0KCkpOwogfQogCit2b2lkIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpsb2FkKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiByb290VVJMKQoreworICAgIG1fbW9kdWxlU2NyaXB0
LT5sb2FkKGRvY3VtZW50LCByb290VVJMLCAqdGhpcyk7Cit9CisKK3ZvaWQgTG9hZGFibGVNb2R1
bGVTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlKQoreworICAgIG1fbW9kdWxlU2NyaXB0LT5sb2FkKGRvY3VtZW50LCBzb3Vy
Y2VDb2RlLCAqdGhpcyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZU1vZHVsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxl
U2NyaXB0LmgKaW5kZXggZGRlYTlmOGNiMDUwYWFiYmJjMWRkYmQzNzk4MTYwMmI1MDZlNmIyNC4u
ODNmNTM5MWY1MmZjOTEzZWUzMTQ3ZTc5ZjZhMTExZWM0MTkyOWQyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTG9h
ZGFibGVNb2R1bGVTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUg
Q2FjaGVkTW9kdWxlU2MKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZU1vZHVsZVNjcmlw
dCgpOwogCi0gICAgc3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKENhY2hl
ZE1vZHVsZVNjcmlwdCYpOworICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUs
IGJvb2wgaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgYm9vbCBpc0xvYWRlZCgpIGNv
bnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7
CkBAIC00OSw4ICs0OSwxMSBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1
YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRNb2R1bGVTYwogCiAgICAgdm9pZCBz
ZXRFcnJvcihFcnJvciYmKTsKIAorICAgIHZvaWQgbG9hZChEb2N1bWVudCYsIGNvbnN0IFVSTCYg
cm9vdFVSTCk7CisgICAgdm9pZCBsb2FkKERvY3VtZW50JiwgY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpOworCiBwcml2YXRlOgotICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNj
cmlwdCYpOworICAgIExvYWRhYmxlTW9kdWxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJl
ZSwgUmVmPENhY2hlZE1vZHVsZVNjcmlwdD4mJik7CiAKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZE1vZHVsZVNjcmlwdCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmNwcAppbmRleCBlZmRiNmI4OTQ4NmQ0OTNjOThmYjFmNWIzNTc2YjRjNjk2M2UwYjRjLi5h
M2YwZDE0MmFhY2JkNzQxMGFjYzVkMzY2YmFhOTU5MjhkZDc1M2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZVNjcmlwdC5jcHAKQEAgLTI2LDcgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTG9hZGFibGVTY3JpcHQuaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2Fk
YWJsZVNjcmlwdENsaWVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTUsNCArNjAsMjUgQEAgdm9pZCBMb2FkYWJsZVNjcmlwdDo6bm90aWZ5
Q2xpZW50RmluaXNoZWQoKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzKTsK
IH0KIAorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBMb2FkYWJsZVNjcmlwdDo6
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc291
cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3Mo
KTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc1NjcmlwdEVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoZG9jdW1lbnQuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOworICAgIGJvb2wgaGFzS25vd25Ob25jZSA9IGRvY3VtZW50LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdFdpdGhOb25jZShtX25vbmNlLCBtX2lzSW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlKTsKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAg
b3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/
IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CisKKyAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qoc291cmNlVVJMKSwgb3B0aW9u
cyk7CisgICAgcmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdp
bk1vZGUsIGRvY3VtZW50KTsKKyAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5l
ZWRlZChkb2N1bWVudCk7CisKKyAgICByZXF1ZXN0LnNldENoYXJzZXQobV9jaGFyc2V0KTsKKyAg
ICByZXF1ZXN0LnNldEluaXRpYXRvcihtX2luaXRpYXRvck5hbWUpOworCisgICAgcmV0dXJuIGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlwdChXVEZNb3ZlKHJlcXVl
c3QpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAppbmRleCBiYTIyZmIx
NWI4MTRkNzE3ZDhkMjc0YzgwNDZmYTk1MGUyMTM5ODFhLi43MjcwNGRhNzI3NzI5YzJlZTExYTQ3
N2Y5ZDJmZmExZDA2YmU2ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaApAQCAt
MjUsMTcgKzI1LDIyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRTY3JpcHQ7Citj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIExvYWRhYmxlU2NyaXB0Q2xpZW50OwogY2xhc3MgU2NyaXB0
RWxlbWVudDsKK2NsYXNzIFVSTDsKIAotY2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxMb2FkYWJsZVNjcmlwdD4geworY2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMg
SlNDOjpTY3JpcHRGZXRjaGVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yVHlwZSB7
CiAgICAgICAgIENhY2hlZFNjcmlwdCwKQEAgLTY4LDEwICs3MywyNyBAQCBjbGFzcyBMb2FkYWJs
ZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPExvYWRhYmxlU2NyaXB0PiB7CiAgICAgdmlydHVh
bCBib29sIGlzQ2xhc3NpY1NjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzTW9kdWxlU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNo
ZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNlVVJMKSBjb25zdDsKKwogcHJvdGVjdGVkOgor
ICAgIExvYWRhYmxlU2NyaXB0KGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY3Jv
c3NPcmlnaW5Nb2RlLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdGlhdG9yTmFtZSwgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSkKKyAgICAgICAgOiBt
X25vbmNlKG5vbmNlKQorICAgICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9k
ZSkKKyAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKKyAgICAgICAgLCBtX2luaXRpYXRvck5h
bWUoaW5pdGlhdG9yTmFtZSkKKyAgICAgICAgLCBtX2lzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKGlz
SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKQorICAgIHsKKyAgICB9CisKICAgICB2b2lkIG5vdGlmeUNs
aWVudEZpbmlzaGVkKCk7CiAKIHByaXZhdGU6CisgICAgU3RyaW5nIG1fbm9uY2U7CisgICAgU3Ry
aW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOworICAgIFN0cmluZyBtX2NoYXJzZXQ7CisgICAgQXRvbWlj
U3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKKyAgICBib29sIG1faXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUgeyBmYWxzZSB9OworCiAgICAgSGFzaENvdW50ZWRTZXQ8TG9hZGFibGVTY3JpcHRDbGllbnQq
PiBtX2NsaWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXgg
ZjY4NjM3YWM0ZDk1Y2U4OGExZmIwNTUzMWRmZGFmZjUwMDE0MDBmZS4uYjQzM2ZiYzI4NWY0NWQw
ZWEwYTY3YTEwOWVlZGYxN2Y4YjMyODk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcApAQCAtMjkyLDExICsyOTIsMTQgQEAgYm9vbCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0Q2xh
c3NpY1NjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIAogICAgIEFTU0VSVCghbV9sb2Fk
YWJsZVNjcmlwdCk7CiAgICAgaWYgKCFzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
c291cmNlVVJMKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIG5vbmNlQXR0cmlidXRlID0g
bV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpub25j
ZUF0dHIpOwotICAgICAgICBTdHJpbmcgY3Jvc3NPcmlnaW5Nb2RlID0gbV9lbGVtZW50LmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpOwot
ICAgICAgICBhdXRvIHJlcXVlc3QgPSByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKG1fZWxlbWVudC5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHNvdXJjZVVSTCksIG5vbmNlQXR0cmlidXRlLCBjcm9zc09y
aWdpbk1vZGUpOwotICAgICAgICBpZiAocmVxdWVzdCkgewotICAgICAgICAgICAgbV9sb2FkYWJs
ZVNjcmlwdCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdCkp
OworICAgICAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6Y3JlYXRlKAor
ICAgICAgICAgICAgbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpub25jZUF0dHIpLAorICAgICAgICAgICAgbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLAorICAgICAgICAg
ICAgc2NyaXB0Q2hhcnNldCgpLAorICAgICAgICAgICAgbV9lbGVtZW50LmxvY2FsTmFtZSgpLAor
ICAgICAgICAgICAgbV9lbGVtZW50LmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgICAg
ICBpZiAoc2NyaXB0LT5sb2FkKG1fZWxlbWVudC5kb2N1bWVudCgpLCBtX2VsZW1lbnQuZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChzb3VyY2VVUkwpKSkgeworICAgICAgICAgICAgbV9sb2FkYWJsZVNj
cmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICAgICAgICAgIG1faXNFeHRlcm5hbFNjcmlwdCA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzksOSArMzQyLDkgQEAgYm9vbCBTY3JpcHRF
bGVtZW50OjpyZXF1ZXN0TW9kdWxlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3Rh
cnRQb3NpdGlvbikKICAgICAgICAgfQogCiAgICAgICAgIG1faXNFeHRlcm5hbFNjcmlwdCA9IHRy
dWU7Ci0gICAgICAgIGF1dG8gbW9kdWxlU2NyaXB0ID0gQ2FjaGVkTW9kdWxlU2NyaXB0OjpjcmVh
dGUobm9uY2UsIGNyb3NzT3JpZ2luTW9kZSk7Ci0gICAgICAgIG1fbG9hZGFibGVTY3JpcHQgPSBM
b2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG1vZHVsZVNjcmlwdC5nZXQoKSk7Ci0gICAgICAg
IG1vZHVsZVNjcmlwdC0+bG9hZChtX2VsZW1lbnQsIG1vZHVsZVNjcmlwdFJvb3RVUkwpOworICAg
ICAgICBhdXRvIHNjcmlwdCA9IExvYWRhYmxlTW9kdWxlU2NyaXB0OjpjcmVhdGUobm9uY2UsIGNy
b3NzT3JpZ2luTW9kZSwgc2NyaXB0Q2hhcnNldCgpLCBtX2VsZW1lbnQubG9jYWxOYW1lKCksIG1f
ZWxlbWVudC5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAgICAgc2NyaXB0LT5sb2Fk
KG1fZWxlbWVudC5kb2N1bWVudCgpLCBtb2R1bGVTY3JpcHRSb290VVJMKTsKKyAgICAgICAgbV9s
b2FkYWJsZVNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0zNTQsNDIgKzM1NywxMiBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RN
b2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAg
IGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93SW5saW5lU2NyaXB0KG1fZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLCBtX3N0YXJ0TGluZU51bWJlciwgc291cmNlQ29kZS5zb3VyY2UoKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIGhhc0tub3duTm9uY2UpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvIG1vZHVsZVNjcmlwdCA9IENhY2hlZE1vZHVsZVNjcmlwdDo6Y3Jl
YXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUpOwotICAgIG1fbG9hZGFibGVTY3JpcHQgPSBMb2Fk
YWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG1vZHVsZVNjcmlwdC5nZXQoKSk7Ci0gICAgbW9kdWxl
U2NyaXB0LT5sb2FkKG1fZWxlbWVudCwgc291cmNlQ29kZSk7CisgICAgYXV0byBzY3JpcHQgPSBM
b2FkYWJsZU1vZHVsZVNjcmlwdDo6Y3JlYXRlKG5vbmNlLCBjcm9zc09yaWdpbk1vZGUsIHNjcmlw
dENoYXJzZXQoKSwgbV9lbGVtZW50LmxvY2FsTmFtZSgpLCBtX2VsZW1lbnQuaXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUoKSk7CisgICAgc2NyaXB0LT5sb2FkKG1fZWxlbWVudC5kb2N1bWVudCgpLCBz
b3VyY2VDb2RlKTsKKyAgICBtX2xvYWRhYmxlU2NyaXB0ID0gV1RGTW92ZShzY3JpcHQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNj
cmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGVGb3JNb2R1bGVTY3JpcHQoY29uc3Qg
VVJMJiBzb3VyY2VVUkwpCi17Ci0gICAgQVNTRVJUKG1fbG9hZGFibGVTY3JpcHQpOwotICAgIEFT
U0VSVChpczxMb2FkYWJsZU1vZHVsZVNjcmlwdD4oKm1fbG9hZGFibGVTY3JpcHQpKTsKLSAgICBh
dXRvJiBtb2R1bGVTY3JpcHQgPSBkb3duY2FzdDxMb2FkYWJsZU1vZHVsZVNjcmlwdD4oKm1fbG9h
ZGFibGVTY3JpcHQpOwotICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKHNvdXJjZVVS
TCwgbW9kdWxlU2NyaXB0Lm1vZHVsZVNjcmlwdCgpLm5vbmNlKCksIG1vZHVsZVNjcmlwdC5tb2R1
bGVTY3JpcHQoKS5jcm9zc09yaWdpbk1vZGUoKSk7Ci19Ci0KLUNhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShjb25z
dCBVUkwmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nJiBub25jZUF0dHJpYnV0ZSwgY29uc3QgU3Ry
aW5nJiBjcm9zc09yaWdpbk1vZGUpCi17Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9lbGVt
ZW50LmRvY3VtZW50KCk7Ci0gICAgYXV0byogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygp
OwotICAgIGlmIChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPmlzU2NyaXB0RW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFTU0VSVChkb2N1bWVudC5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSk7Ci0gICAgYm9vbCBoYXNLbm93bk5vbmNlID0gZG9jdW1lbnQuY29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0V2l0aE5vbmNlKG5vbmNlQXR0cmlidXRlLCBtX2Vs
ZW1lbnQuaXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7Ci0gICAgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpOwotICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9
IGhhc0tub3duTm9uY2UgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9s
aWN5Q2hlY2sgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
OwotCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHNv
dXJjZVVSTCksIG9wdGlvbnMpOwotICAgIHJlcXVlc3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3Jp
Z2luKGNyb3NzT3JpZ2luTW9kZSwgZG9jdW1lbnQpOwotICAgIHJlcXVlc3QudXBncmFkZUluc2Vj
dXJlUmVxdWVzdElmTmVlZGVkKGRvY3VtZW50KTsKLQotICAgIHJlcXVlc3Quc2V0Q2hhcnNldChz
Y3JpcHRDaGFyc2V0KCkpOwotICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCZlbGVtZW50KCkpOwot
Ci0gICAgcmV0dXJuIGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFNjcmlw
dChXVEZNb3ZlKHJlcXVlc3QpKTsKLX0KLQogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xh
c3NpY1NjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewogICAgIEFT
U0VSVChtX2FscmVhZHlTdGFydGVkKTsKQEAgLTQzMCw3ICs0MDMsNyBAQCB2b2lkIFNjcmlwdEVs
ZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3Jp
cHQpCiAgICAgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVz
Y3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKCZkb2N1bWVudCk7CiAgICAgQ3VycmVudFNj
cmlwdEluY3JlbWVudGVyIGN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlcihkb2N1bWVudCwgbV9lbGVt
ZW50KTsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS5saW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQo
bW9kdWxlU2NyaXB0LCBlbGVtZW50KCkpOworICAgIGZyYW1lLT5zY3JpcHQoKS5saW5rQW5kRXZh
bHVhdGVNb2R1bGVTY3JpcHQobW9kdWxlU2NyaXB0KTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50
OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVT
Y3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCA1ZjE4MWRmMmUzYjBlODg4
ZWYzOTQ3YmJjZGMxOGQ5MzA3ZGRlYjFhLi4wMzAyNWY4NmQwYjRlNTBmZTlmMTgwMmE0NDZjNmM1
ZjA3ZTJjMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTY2LDggKzY2LDYg
QEAgY2xhc3MgU2NyaXB0RWxlbWVudCB7CiAgICAgYm9vbCB3aWxsRXhlY3V0ZUluT3JkZXIoKSBj
b25zdCB7IHJldHVybiBtX3dpbGxFeGVjdXRlSW5PcmRlcjsgfQogICAgIExvYWRhYmxlU2NyaXB0
KiBsb2FkYWJsZVNjcmlwdCgpIHsgcmV0dXJuIG1fbG9hZGFibGVTY3JpcHQuZ2V0KCk7IH0KIAot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhD
YWNoZUZvck1vZHVsZVNjcmlwdChjb25zdCBVUkwmKTsKLQogICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2NvbmNlcHQtc2NyaXB0LXR5
cGUKICAgICBlbnVtIGNsYXNzIFNjcmlwdFR5cGUgeyBDbGFzc2ljLCBNb2R1bGUgfTsKICAgICBT
Y3JpcHRUeXBlIHNjcmlwdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lzTW9kdWxlU2NyaXB0ID8g
U2NyaXB0VHlwZTo6TW9kdWxlIDogU2NyaXB0VHlwZTo6Q2xhc3NpYzsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>