<?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>228301</bug_id>
          
          <creation_ts>2021-07-26 14:08:46 -0700</creation_ts>
          <short_desc>[JSC] Yarr should perform BoyerMoore search</short_desc>
          <delta_ts>2021-07-30 14:16:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1779562</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-26 14:08:46 -0700</bug_when>
    <thetext>We would like to start the simple one. Let&apos;s try to deploy BM search for the top-level disjunction first.
Then, let&apos;s extend the coverage for the other disjunctions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779567</commentid>
    <comment_count>1</comment_count>
      <attachid>434238</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-26 14:18:47 -0700</bug_when>
    <thetext>Created attachment 434238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779571</commentid>
    <comment_count>2</comment_count>
      <attachid>434239</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-26 14:24:52 -0700</bug_when>
    <thetext>Created attachment 434239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779847</commentid>
    <comment_count>3</comment_count>
      <attachid>434319</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 14:54:43 -0700</bug_when>
    <thetext>Created attachment 434319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779848</commentid>
    <comment_count>4</comment_count>
      <attachid>434320</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 14:58:32 -0700</bug_when>
    <thetext>Created attachment 434320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779850</commentid>
    <comment_count>5</comment_count>
      <attachid>434343</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 15:13:55 -0700</bug_when>
    <thetext>Created attachment 434343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779887</commentid>
    <comment_count>6</comment_count>
      <attachid>434384</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 16:35:06 -0700</bug_when>
    <thetext>Created attachment 434384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779936</commentid>
    <comment_count>7</comment_count>
      <attachid>434394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 19:43:09 -0700</bug_when>
    <thetext>Created attachment 434394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779943</commentid>
    <comment_count>8</comment_count>
      <attachid>434397</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 20:21:25 -0700</bug_when>
    <thetext>Created attachment 434397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779945</commentid>
    <comment_count>9</comment_count>
      <attachid>434398</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 20:37:09 -0700</bug_when>
    <thetext>Created attachment 434398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779947</commentid>
    <comment_count>10</comment_count>
      <attachid>434399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 21:03:41 -0700</bug_when>
    <thetext>Created attachment 434399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779959</commentid>
    <comment_count>11</comment_count>
      <attachid>434403</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-27 23:01:13 -0700</bug_when>
    <thetext>Created attachment 434403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780258</commentid>
    <comment_count>12</comment_count>
      <attachid>434474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 16:42:14 -0700</bug_when>
    <thetext>Created attachment 434474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780279</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-07-28 17:46:49 -0700</bug_when>
    <thetext>Fun! I would replace &quot;BM&quot; with &quot;BoyerMoore&quot; to make it a bit clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780280</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 17:52:36 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; Fun! I would replace &quot;BM&quot; with &quot;BoyerMoore&quot; to make it a bit clearer.

Sounds good, relaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780282</commentid>
    <comment_count>15</comment_count>
      <attachid>434480</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 17:55:13 -0700</bug_when>
    <thetext>Created attachment 434480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780283</commentid>
    <comment_count>16</comment_count>
      <attachid>434481</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 17:57:39 -0700</bug_when>
    <thetext>Created attachment 434481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780285</commentid>
    <comment_count>17</comment_count>
      <attachid>434482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 18:00:25 -0700</bug_when>
    <thetext>Created attachment 434482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780287</commentid>
    <comment_count>18</comment_count>
      <attachid>434484</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 18:07:05 -0700</bug_when>
    <thetext>Created attachment 434484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780291</commentid>
    <comment_count>19</comment_count>
      <attachid>434486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 18:51:22 -0700</bug_when>
    <thetext>Created attachment 434486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780294</commentid>
    <comment_count>20</comment_count>
      <attachid>434488</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-28 18:54:06 -0700</bug_when>
    <thetext>Created attachment 434488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780558</commentid>
    <comment_count>21</comment_count>
      <attachid>434488</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-29 13:56:24 -0700</bug_when>
    <thetext>Comment on attachment 434488
Patch

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

r=me

I also suggest filing/linking bugs for your FIXMEs

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:944
&gt; +        BoyerMooreInfo* m_bmInfo;

can we just default this to nullptr so we don&apos;t need to set it at the call sites

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:2415
&gt; +                            auto vector = makeUniqueRef&lt;BoyerMooreByteVector&gt;(map);
&gt; +                            dataLogLnIf(Options::verboseRegExpCompilation(), &quot;Found bitmap lookahead count:(&quot;, mapCount, &quot;),range:[&quot;, beginIndex, &quot;, &quot;, endIndex, &quot;)&quot;);
&gt; +                            const uint8_t* pointer = vector-&gt;data();
&gt; +                            if (const auto* existingPointer = m_codeBlock.findSameVector(op.m_bmInfo-&gt;index(), vector.get()))
&gt; +                                pointer = existingPointer;
&gt; +                            else
&gt; +                                m_bmVector.append(WTFMove(vector));

small nit: I think it&apos;s nicer to encapsulate this logic in its own function, so we don&apos;t mistakenly use a stale pointer somehow. Like, &quot;getBMByteVector&quot; or something, and it take in BoyerMooreBitmap::Map&amp;

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:127
&gt; +    void set8BitCode(MacroAssemblerCodeRef&lt;Yarr8BitPtrTag&gt; ref, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)

this should take Vector&amp; not Vector&amp;&amp; unless it actually takes ownership over &quot;maps&quot;. Alternatively, it can take &quot;Vector&quot;, and take ownership

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:134
&gt; +    void set16BitCode(MacroAssemblerCodeRef&lt;Yarr16BitPtrTag&gt; ref, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)

ditto

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:144
&gt; +    void set8BitCodeMatchOnly(MacroAssemblerCodeRef&lt;YarrMatchOnly8BitPtrTag&gt; matchOnly, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)

ditto

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:151
&gt; +    void set16BitCodeMatchOnly(MacroAssemblerCodeRef&lt;YarrMatchOnly16BitPtrTag&gt; matchOnly, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)

ditto

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:243
&gt; +    // Compile and Clear are guarded by RegExp&apos;s cell-lock. So these operations work atomically.

nit: would be nicer if they just took a const Locker&amp; instead of a comment

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:254
&gt; +    const uint8_t* findSameVector(unsigned index, BoyerMooreByteVector&amp; vector) const

tryFindSameBoyerMooreVector? or tryFindSameBMVector? or tryReuseBMVector?

findSameVector is a weirdly generic name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780587</commentid>
    <comment_count>22</comment_count>
      <attachid>434488</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 15:05:40 -0700</bug_when>
    <thetext>Comment on attachment 434488
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:944
&gt;&gt; +        BoyerMooreInfo* m_bmInfo;
&gt; 
&gt; can we just default this to nullptr so we don&apos;t need to set it at the call sites

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:2415
&gt;&gt; +                                m_bmVector.append(WTFMove(vector));
&gt; 
&gt; small nit: I think it&apos;s nicer to encapsulate this logic in its own function, so we don&apos;t mistakenly use a stale pointer somehow. Like, &quot;getBMByteVector&quot; or something, and it take in BoyerMooreBitmap::Map&amp;

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:127
&gt;&gt; +    void set8BitCode(MacroAssemblerCodeRef&lt;Yarr8BitPtrTag&gt; ref, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)
&gt; 
&gt; this should take Vector&amp; not Vector&amp;&amp; unless it actually takes ownership over &quot;maps&quot;. Alternatively, it can take &quot;Vector&quot;, and take ownership

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:134
&gt;&gt; +    void set16BitCode(MacroAssemblerCodeRef&lt;Yarr16BitPtrTag&gt; ref, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:144
&gt;&gt; +    void set8BitCodeMatchOnly(MacroAssemblerCodeRef&lt;YarrMatchOnly8BitPtrTag&gt; matchOnly, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:151
&gt;&gt; +    void set16BitCodeMatchOnly(MacroAssemblerCodeRef&lt;YarrMatchOnly16BitPtrTag&gt; matchOnly, Vector&lt;UniqueRef&lt;BoyerMooreByteVector&gt;&gt;&amp;&amp; maps)
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:243
&gt;&gt; +    // Compile and Clear are guarded by RegExp&apos;s cell-lock. So these operations work atomically.
&gt; 
&gt; nit: would be nicer if they just took a const Locker&amp; instead of a comment

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:254
&gt;&gt; +    const uint8_t* findSameVector(unsigned index, BoyerMooreByteVector&amp; vector) const
&gt; 
&gt; tryFindSameBoyerMooreVector? or tryFindSameBMVector? or tryReuseBMVector?
&gt; 
&gt; findSameVector is a weirdly generic name

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780599</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 15:26:22 -0700</bug_when>
    <thetext>Committed r280452 (240087@main): &lt;https://commits.webkit.org/240087@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780600</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-29 15:27:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/81293620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780943</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 14:16:53 -0700</bug_when>
    <thetext>Committed r280496 (240128@main): &lt;https://commits.webkit.org/240128@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434238</attachid>
            <date>2021-07-26 14:18:47 -0700</date>
            <delta_ts>2021-07-26 14:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210726141846.patch</filename>
            <type>text/plain</type>
            <size>7758</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjM5ZGVjZTUzNjk4YmE3MDU5Yjc5OWQ1MDU1ODMxODY5NzQ3ZDY3Li5jZmJkNGNkMGQzN2RiYWE1
ZTFmNDI0MmYxYmRlNDM0NzRkOWRkN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qk1JbmZvOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmNyZWF0
ZSk6CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIs
YXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyYTY2YjRkOGRhMjM5ZGVmMTI5
MGE1OTc0ZWYzNjAyNTViYjI0NjUuLjg2NWE3YWFhYzU5YTM5ZmUwNjIzZjNlYTA0ZDE2YzhjNmRm
YTFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDctMjYgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIHNob3VsZCBwZXJmb3JtIEJN
IHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvVW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cik6CisKIDIwMjEtMDctMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkgaXMgYSBiaXQgZGFuZ2Vyb3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDhiNTAxZWUzNDA3NTQ4
ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLmIzYWM0YjA1NDNhM2M4N2RmNmZmYjA5YTQ1YzM3
ZjJhOTI2ZTJkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0z
NCw3ICszNCw5IEBACiAjaW5jbHVkZSAiWWFyckRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIllh
cnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgor
I2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCkBAIC00NSw2
ICs0NywzNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogSlNDX0FOTk9UQVRF
X0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlU
b1lhcnJKSVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQk1CaXRtYXAgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEKEJNQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1hcFNpemUgPSAxMjg7CisgICAgQk1CaXRtYXAoKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgQml0bWFwPG1hcFNpemU+IG1fbWFwIHsgfTsKK307CisKK2NsYXNzIEJNSW5m
byB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQk1JbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRChCTUluZm8pOworcHVibGljOgorICAgIGV4cGxpY2l0IEJNSW5mbyh1bnNpZ25l
ZCBsZW5ndGgpCisgICAgICAgIDogbV9jaGFyYWN0ZXJzKGxlbmd0aCkKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQor
CisgICAgc3RhdGljIFVuaXF1ZVJlZjxCTUluZm8+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisg
ICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCTUluZm8+KGxlbmd0aCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworfTsKKwog
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICNpZiBDUFUoQVJNX1RIVU1CMikKQEAgLTgzMCw2ICs4NjIsOCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8gdmFsdWUgdGhhdCB3aWxsIGJlIHB1c2hlZCBp
bnRvIHRoZSBwYXR0ZXJuJ3MgZnJhbWUgdG8gcmV0dXJuIHRvLAogICAgICAgICAvLyB1cG9uIGJh
Y2t0cmFja2luZyBiYWNrIGludG8gdGhlIGRpc2p1bmN0aW9uLgogICAgICAgICBEYXRhTGFiZWxQ
dHIgbV9yZXR1cm5BZGRyZXNzOworCisgICAgICAgIEJNSW5mbyogbV9ibUluZm87CiAgICAgfTsK
IAogICAgIC8vIEJhY2t0cmFja2luZ1N0YXRlCkBAIC0yNzgwLDYgKzI4MTQsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBtX29wc1tvcC5tX25leHRPcF07CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGVuZE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0
aXZlRW5kKTsKIAogICAgICAgICAgICAgICAgIFlhcnJPcCogYmVnaW5PcCA9ICZvcDsKICAgICAg
ICAgICAgICAgICB3aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJu
YXRpdmVCZWdpbikgewpAQCAtMjc5Nyw3ICsyODMyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgaWYgKG9uY2VUaHJvdWdoKQogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0
cmFja2luZ1N0YXRlLmxpbmtUbyhlbmRPcC5tX3JlZW50cnksIHRoaXMpOwogICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpICYm
IG1fb3BzW29wLm1fbmV4dE9wXS5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVu
ZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIHN0aWNreSBwYXR0ZXJuIGFuZCB0aGUgbGFz
dCBhbHRlcm5hdGl2ZSBmYWlsZWQsIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUudGFrZUJhY2t0cmFja3NUb0p1bXBMaXN0KGxhc3RT
dGlja3lBbHRlcm5hdGl2ZUZhaWx1cmVzLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZQpAQCAtMzY0Myw2ICszNjc4
LDE1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzaXplX3QgcmVwZWF0TG9vcCA9IG1fb3Bz
LnNpemUoKTsKICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0
ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90
Rm91bmQ7CisgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CisgICAgICAg
IGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgYXV0byBibUlu
Zm8gPSBCTUluZm86OmNyZWF0ZShkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CisgICAgICAg
ICAgICBpZiAoY29sbGVjdEJNSW5mbyhkaXNqdW5jdGlvbiwgY3VycmVudEFsdGVybmF0aXZlSW5k
ZXgsIGJtSW5mby5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUlu
Zm8gPSBibUluZm8ucHRyKCk7CisgICAgICAgICAgICAgICAgbV9ibUluZm9zLmFwcGVuZChXVEZN
b3ZlKGJtSW5mbykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgZG8gewog
ICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKICAgICAg
ICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3Vy
cmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwpAQCAtMzY2OCw2ICszNzEyLDM2IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRMb29wOwogICAgIH0K
IAorICAgIGJvb2wgY29sbGVjdEJNSW5mbyhQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9u
LCBzaXplX3QgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIEJNSW5mbyYgYm1JbmZvKQorICAgIHsK
KyAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2Fo
ZWFkIGZvciBCTSBzZWFyY2guCisgICAgICAgIGlmICghZGlzanVuY3Rpb24tPm1faGFzRml4ZWRT
aXplKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGF1dG8mIGFsdGVybmF0
aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgZm9yICg7IGN1cnJl
bnRBbHRlcm5hdGl2ZUluZGV4IDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCkgeworICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2
ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9ICZhbHRlcm5hdGl2
ZS0+bV90ZXJtc1tpXTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToK
KyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVy
OgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNz
OgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6
CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5j
ZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1
YnBhdHRlcm46CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50
aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
OjpEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgVU5VU0VEX1BBUkFN
KGJtSW5mbyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIGdlbmVy
YXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIoKQogICAgIHsKICNpZmRlZiBKSVRfVU5J
Q09ERV9FWFBSRVNTSU9OUwpAQCAtNDE5Nyw2ICs0MjcxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAK
ICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGV4cHJlc3NlZCBhcyBhIGxpbmVhciBzZXF1
ZW5jZSBvZiBvcGVyYXRpb25zLgogICAgIFZlY3RvcjxZYXJyT3AsIDEyOD4gbV9vcHM7CisgICAg
VmVjdG9yPFVuaXF1ZVJlZjxCTUluZm8+LCA0PiBtX2JtSW5mb3M7CiAKICAgICAvLyBUaGlzIHJl
Y29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFwcGxpZWQgZHVlIHRvIHRoZSBj
dXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4g
RS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVl
UmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCBjNGVlM2RjMTI4NzRmMTk4
ZTFiZjQ1M2YyMzdhOTljZjQ3Njc2ZGU0Li44MjBkMDk2OTc3OGIyNmQwOTZlMTEyZDVhNWU5Yzcy
OGI5Mzk4MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtNDYsNyArNDYsNyBAQCBVbmlxdWVSZWY8VD4g
bWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlx
dWVfcHRyPFQ+IHB0cikKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlx
dWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8
VD4oKnB0ci5yZWxlYXNlKCkpOwogfQpAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBVbmlxdWVSZWYg
ewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0KIAorICAgIFQqIHB0cigpIFJFVFVSTlNf
Tk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIFQqIHB0
cigpIGNvbnN0IFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5n
ZXQoKTsgfQorCiAgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9
CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVm
OyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434239</attachid>
            <date>2021-07-26 14:24:52 -0700</date>
            <delta_ts>2021-07-27 14:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210726142451.patch</filename>
            <type>text/plain</type>
            <size>8463</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YjM5ZGVjZTUzNjk4YmE3MDU5Yjc5OWQ1MDU1ODMxODY5NzQ3ZDY3Li5jZmJkNGNkMGQzN2RiYWE1
ZTFmNDI0MmYxYmRlNDM0NzRkOWRkN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qk1JbmZvOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmNyZWF0
ZSk6CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIs
YXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyYTY2YjRkOGRhMjM5ZGVmMTI5
MGE1OTc0ZWYzNjAyNTViYjI0NjUuLmQyMjczMzUwMTlmOTJjMzE4NzY1ZjU0ZThkMmQ3NDllNGI1
YjA2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDctMjYgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIHNob3VsZCBwZXJmb3JtIEJN
IHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvVW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAy
MS0wNy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJl
ZEJ1ZmZlcjo6dGFrZURhdGEoKSBpcyBhIGJpdCBkYW5nZXJvdXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKaW5kZXggOGI1MDFlZTM0MDc1NDhlNGE0ZTFhMGQ3MDU4OTg0ZDhk
MmY2NWI5Yi4uYWUzMmJkYWM4NzkxOTlmNTM5MmU4NWU2NDFlMmM1YzhlNTg5M2M0NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNs
dWRlICJZYXJyRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiWWFyck1hdGNoaW5nQ29udGV4dEhv
bGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0JpdG1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKQEAgLTQ1LDYgKzQ3LDM2IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklU
VGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKICNl
bmRpZgogCitjbGFzcyBCTUJpdG1hcCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQk1C
aXRtYXApOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9
IDEyODsKKyAgICBCTUJpdG1hcCgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICBCaXRtYXA8
bWFwU2l6ZT4gbV9tYXAgeyB9OworfTsKKworY2xhc3MgQk1JbmZvIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCTUluZm8pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJNSW5mbyk7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5n
dGgoKSB7IHJldHVybiBtX2NoYXJhY3RlcnMuc2l6ZSgpOyB9CisKKyAgICBzdGF0aWMgVW5pcXVl
UmVmPEJNSW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
VmVjdG9yPEJNQml0bWFwPiBtX2NoYXJhY3RlcnM7Cit9OworCiBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAog
I2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODMwLDYgKzg2Miw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAvLyB2YWx1ZSB0aGF0IHdpbGwgYmUgcHVzaGVkIGludG8gdGhlIHBhdHRlcm4ncyBm
cmFtZSB0byByZXR1cm4gdG8sCiAgICAgICAgIC8vIHVwb24gYmFja3RyYWNraW5nIGJhY2sgaW50
byB0aGUgZGlzanVuY3Rpb24uCiAgICAgICAgIERhdGFMYWJlbFB0ciBtX3JldHVybkFkZHJlc3M7
CisKKyAgICAgICAgQk1JbmZvKiBtX2JtSW5mbzsKICAgICB9OwogCiAgICAgLy8gQmFja3RyYWNr
aW5nU3RhdGUKQEAgLTI3ODAsNiArMjgxNCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFy
ck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZW5kT3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAg
ICAgICAgICAgWWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChi
ZWdpbk9wLT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0y
Nzk3LDcgKzI4MzIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25j
ZVRocm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1Rv
KGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3Bd
Lm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEl0IGlzIGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxl
ZCwganVtcCB0byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tp
bmdTdGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFp
bHVyZXMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5t
X2JvZHktPm1faGFzRml4ZWRTaXplCkBAIC0zNjQzLDYgKzM2NzgsMTUgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIHNpemVfdCByZXBlYXRMb29wID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBt
X29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAg
ICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9v
cHMubGFzdCgpLm1fYm1JbmZvID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5t
X21pbmltdW1TaXplICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAg
ICAgYXV0byBibUluZm8gPSBCTUluZm86OmNyZWF0ZShkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6
ZSk7CisgICAgICAgICAgICBpZiAoY29sbGVjdEJNSW5mbyhkaXNqdW5jdGlvbiwgY3VycmVudEFs
dGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBtX29wcy5s
YXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CisgICAgICAgICAgICAgICAgbV9ibUluZm9z
LmFwcGVuZChXVEZNb3ZlKGJtSW5mbykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgp
IC0gMTsKICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRl
cm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwpAQCAtMzY2OCw2ICszNzEy
LDM1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRM
b29wOwogICAgIH0KIAorICAgIGJvb2wgY29sbGVjdEJNSW5mbyhQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uLCBzaXplX3QgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIEJNSW5mbyYgYm1J
bmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSk7
IC8vIEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3Ig
Qk0gc2VhcmNoLgorICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpOwor
CisgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
czsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4IDwgYWx0ZXJuYXRpdmVz
LnNpemUoKTsgKytjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCkgeworICAgICAgICAgICAgUGF0dGVy
bkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRp
dmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0
ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSogdGVybSA9ICZhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpXTsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKHRlcm0tPnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAgICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgVU5VU0VEX1BBUkFNKGJtSW5mbyk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKICAgICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIo
KQogICAgIHsKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtNDE5Nyw2ICs0Mjcw
LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGV4
cHJlc3NlZCBhcyBhIGxpbmVhciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zLgogICAgIFZlY3RvcjxZ
YXJyT3AsIDEyOD4gbV9vcHM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxCTUluZm8+LCA0PiBtX2Jt
SW5mb3M7CiAKICAgICAvLyBUaGlzIHJlY29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJl
aW5nIGFwcGxpZWQgZHVlIHRvIHRoZSBjdXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZl
cyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4gRS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYu
aAppbmRleCBjNGVlM2RjMTI4NzRmMTk4ZTFiZjQ1M2YyMzdhOTljZjQ3Njc2ZGU0Li45MzVkMDZj
NjY5ZGQ0Y2VlODE3ZTBlMzljMmM2OWQ5YzM0ZGVhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtNDYs
OSArNDYsOSBAQCBVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5v
bk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+IHB0cikKK1VuaXF1ZVJlZjxUPiBtYWtl
VW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQog
ewotICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKnB0ci5yZWxlYXNlKCkpOworICAgIHJldHVybiBV
bmlxdWVSZWY8VD4oV1RGTW92ZShwdHIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTY3LDYgKzY3LDkgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsK
ICAgICB9CiAKKyAgICBUKiBwdHIoKSBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyBy
ZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKyAgICBUKiBwdHIoKSBjb25zdCBSRVRVUk5TX05PTk5VTEwg
eyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKwogICAgIFQmIGdldCgpIHsg
QVNTRVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0
IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogCkBAIC04Myw5ICs4NiwxNSBAQCBj
bGFzcyBVbmlxdWVSZWYgewogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNz
Li4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2soQXJncyYmLi4uKTsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVl
UmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8
VT4pOworICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1
ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPiYmKTsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCisgICAgZXhwbGljaXQgVW5p
cXVlUmVmKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKKyAgICAgICAgOiBtX3JlZihXVEZNb3Zl
KHB0cikpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZWYpOworICAgIH0KKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUPiBtX3JlZjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434319</attachid>
            <date>2021-07-27 14:54:43 -0700</date>
            <delta_ts>2021-07-27 14:58:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727145442.patch</filename>
            <type>text/plain</type>
            <size>24240</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi4zOGYzMjI5N2I2MTQ3NmUx
NDEzOTk4MGQ3NDc3ZjMxYzZkMTM5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjpjb3VudCBjb25zdCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
TUJpdG1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpCTUluZm8pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCTUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJNSW5mbzo6c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVy
U2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86
OmNyZWF0ZUJNQnl0ZVZlY3RvciBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVtcG9yYWwgdG8gZmVh
dHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgy
Li5lMzM5NTEzYTY1ODEwYmNlNTE5NTg5ZTZkOTQwN2I3ZDMyOTAzNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgor
ICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIpOgorICAgICAg
ICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2
ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi5lOGVkMzkyYjNl
ODhjYjllMjk0YWM4MWEzZWIyM2YyOWQwOGY4YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDE0NyBAQAogI2luY2x1ZGUg
IllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IHRydWU7Cit9CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9P
UEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJK
SVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQk1CaXRtYXAgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKEJNQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNr
ID0gMTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCTUJp
dG1hcCgpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQorICAgIGNvbnN0IE1hcCYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0K
KworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAobV9tYXAuZ2V0
KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9t
YXAgeyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07Cit9OworCitjbGFzcyBCTUluZm8g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJNSW5mbyk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQoQk1JbmZvKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkK
KyAgICAgICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxl
bmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEJN
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1
ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCTUJ5dGVWZWN0
b3I+IGNyZWF0ZUJNQnl0ZVZlY3Rvcih1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBm
aW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0
KSBjb25zdDsKKworICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworfTsKKworc3Rk
Ojp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gQk1JbmZvOjpmaW5kQmVzdENoYXJhY3Rl
clNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdAoreworICAg
IGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0ID0gMDsKKyAg
ICB1bnNpZ25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgoKSAmJiBt
X2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkKKyAg
ICAgICAgICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4OworICAgICAgICBC
TUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYm
IG1fY2hhcmFjdGVyc1tpbmRleF0uY291bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsg
KytpbmRleCkKKyAgICAgICAgICAgIG1hcC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgp
KTsKKworICAgICAgICAvLyBJZiBtYXAgaGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBv
ZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBzaW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5n
cy4KKyAgICAgICAgLy8gQW5kIGlmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBv
aW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgaGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hh
cmFjdGVycy4KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxs
IGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFj
dGVyIHNpbmNlIGUuZy4gJ2UnIHNob3VsZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2
Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5jeSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0
Y2hpbmdQcm9iYWJpbGl0eSA9IEJNQml0bWFwOjptYXBTaXplIC0gZnJlcXVlbmN5OworICAgICAg
ICBpbnQgcG9pbnQgPSAoaW5kZXggLSBiZWdpbikgKiBtYXRjaGluZ1Byb2JhYmlsaXR5OworICAg
ICAgICBpZiAocG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2lu
dCA9IHBvaW50OworICAgICAgICAgICAgYmVnaW5SZXN1bHQgPSBiZWdpbjsKKyAgICAgICAgICAg
IGVuZFJlc3VsdCA9IGluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1
cGxlIHsgYmlnZ2VzdFBvaW50LCBiZWdpblJlc3VsdCwgZW5kUmVzdWx0IH07Cit9CisKK3N0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBCTUluZm86OmZpbmRXb3J0
aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElm
IGNhbmRpYXRlcy1wZXItY2hhcmFjdGVyIGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlz
IG5vdCBwcm9maXRhYmxlIHNpbmNlIHRoaXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0Cisg
ICAgLy8gdG9vIG1hbnkgY2hhcmFjdGVycy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXIt
Y2hhcmFjdGVyIHNtYWxsZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkg
c2hvcnQKKyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0
LCB0aGVuIGVubGFyZ2luZyB0aGUgbGltaXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFi
bGUKKyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7
CisgICAgdW5zaWduZWQgYmVnaW4gPSAwOworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29u
c3RleHByIHVuc2lnbmVkIG1heENhbmRpZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3Ig
KHVuc2lnbmVkIGxpbWl0ID0gNDsgbGltaXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBs
aW1pdCAqPSAyKSB7CisgICAgICAgIGF1dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9
IGZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQg
PiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50Owor
ICAgICAgICAgICAgYmVnaW4gPSBuZXdCZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPEJNQnl0ZVZlY3Rvcj4gQk1JbmZvOjpjcmVhdGVCTUJ5dGVWZWN0
b3IodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBhdXRvIHZlY3Rv
ciA9IG1ha2VVbmlxdWU8Qk1CeXRlVmVjdG9yPigpOworICAgIHZlY3Rvci0+ZmlsbCgwKTsKKyAg
ICBCTUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2lu
OyBpbmRleCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tp
bmRleF0ubWFwKCkpOworICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkg
eworICAgICAgICAoKnZlY3RvcilbaW5kZXhdID0gMTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVj
dG9yOworfQorCiBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODMw
LDYgKzk2MSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyB2YWx1ZSB0aGF0IHdpbGwg
YmUgcHVzaGVkIGludG8gdGhlIHBhdHRlcm4ncyBmcmFtZSB0byByZXR1cm4gdG8sCiAgICAgICAg
IC8vIHVwb24gYmFja3RyYWNraW5nIGJhY2sgaW50byB0aGUgZGlzanVuY3Rpb24uCiAgICAgICAg
IERhdGFMYWJlbFB0ciBtX3JldHVybkFkZHJlc3M7CisKKyAgICAgICAgQk1JbmZvKiBtX2JtSW5m
bzsKICAgICB9OwogCiAgICAgLy8gQmFja3RyYWNraW5nU3RhdGUKQEAgLTE0MTAsNyArMTU0Myw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAgICBhbGxDaGFyYWN0ZXJzIHw9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oY3VycmVudENoYXJhY3RlcikgPDwgc2hpZnRBbW91bnQpOwogCi0g
ICAgICAgICAgICBpZiAoKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkpICYmIChpc0FTQ0lJQWxwaGEo
Y3VycmVudENoYXJhY3RlcikpKQorICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNl
KCkgJiYgaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgIGln
bm9yZUNhc2VNYXNrIHw9IDMyVUxMIDw8IHNoaWZ0QW1vdW50OwogICAgICAgICB9CiAKQEAgLTIy
NTYsNiArMjM4OSwzMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBVcG9u
IGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0ZXJuYXRpdmVzLCBjaGVjayBpZiBp
bnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAvLyB0byBydW4gdGhlIGZpcnN0IGFs
dGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1dCBwb3NpdGlvbikuCiAgICAgICAg
ICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSkpOworCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZv
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdv
cnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5k
ZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bklmKFlhcnJKSVRJbnRlcm5hbDo6dmVyYm9zZSwgIkZvdW5kIHdvcnRod2hpbGUgY2hhcmFjdGVy
IHNlcXVlbmNlIGZvciBsb29rYWhlYWQgKCIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAi
KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZEluZGV4IDw9IGFsdGVybmF0
aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9y
ID0gb3AubV9ibUluZm8tPmNyZWF0ZUJNQnl0ZVZlY3RvcihiZWdpbkluZGV4LCBlbmRJbmRleCk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cih2ZWN0b3ItPmRh
dGEoKSksIHJlZ1QxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBs
YWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNp
emU6OkNoYXI4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ4KG5lZ2F0aXZlT2Zm
c2V0SW5kZXhlZEFkZHJlc3MoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBlbmRJbmRleCwg
cmVnVDApLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZDE2VW5hbGlnbmVkKG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFk
ZHJlc3MoKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gZW5kSW5kZXgpICogMiwgcmVnVDAp
LCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1C
aXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVn
VDAsIFRpbWVzT25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVu
ZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBy
ZWVudGVyIGFmdGVyIHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8g
aGF2ZSBiZWVuCiAgICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMg
YWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKQEAg
LTI3ODAsNiArMjkzNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9
IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AubV9vcCA9
PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAgICAgICAgWWFy
ck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9wLT5tX29w
ICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5NTUs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gpCiAg
ICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVl
bnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0gWWFy
ck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEg
c3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0byB0
aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtl
QmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRoaXMp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1faGFz
Rml4ZWRTaXplCkBAIC0zNjA3LDYgKzM3NjUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
aWYgKGFsdGVybmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgp
KSB7CiAgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRl
cm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0g
bm90Rm91bmQ7CisgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOwog
CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0g
bV9vcHMuc2l6ZSgpIC0gMTsKQEAgLTM2NDMsNiArMzgwMiwxNSBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgc2l6ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXplKCk7CiAgICAgICAgIG1fb3Bz
LmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAg
ICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wcy5s
YXN0KCkubV9ibUluZm8gPSBudWxscHRyOworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWlu
aW11bVNpemUgJiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICBh
dXRvIGJtSW5mbyA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVkPihkaXNqdW5jdGlv
bi0+bV9taW5pbXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChj
b2xsZWN0Qk1JbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZv
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5m
by5wdHIoKTsKKyAgICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZv
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAg
ICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleF0uZ2V0KCk7CkBAIC0zNjY4LDYgKzM4MzYsNjcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9v
bCBjb2xsZWN0Qk1JbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBj
dXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8pCisgICAgeworICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2UgY2FuIGNo
ZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQsIGUsIGZ9
LgorICAgICAgICAvLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hhcmFj
dGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVuZGVk
IGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xh
c3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJj
fGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICAvLyBhZ2FpbnN0IHth
LCBiLCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1h
dGNoLgorICAgICAgICAvLworICAgICAgICAvLyBUaGVuLCB0aGUgYmVzdCB3YXkgdG8gcGVyZm9y
bSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRoZSBsb25nZXN0IGNoYXJhY3Rl
ciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIG1hbnkgY2FuZGlkYXRl
cy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywgd2UgY2FuIGV4dHJhY3QgImFh
YWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVyIGFnaW5zdCB7YX0uCisgICAg
ICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3Rl
cnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVz
aW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2UgYW5kIHthLXp9IHNl
dCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgorICAgICAgICAvLwor
ICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2gg
Y2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29v
ZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3Qg
ZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBBU1NFUlQoZGlzanVu
Y3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZml4
ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAgICAgIEFTU0VSVChkaXNqdW5j
dGlvbi0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBv
bmx5IGNvbGxlY3QgdGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNqdW5jdGlvbi4gV2Ugd2lsbCBl
eHRlbmQgaXQgdG8gc3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLy4KKyAgICAg
ICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAg
ICAgICBmb3IgKDsgY3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgp
OyArK2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJz
b3IgPSAwOworICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFs
dGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXpl
KCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgUGF0dGVyblRlcm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAg
ICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBh
dHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRl
cm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGlu
ZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9k
ZWNvZGVTdXJyb2dhdGVQYWlycykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywg
bm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAg
ICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBjb252ZXJ0ZWQg
dG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0
ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8
fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxN
b2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYm
IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJh
Y3RlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVND
SUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0
ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVy
bmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVs
cGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQg
KzQxODEsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUg
PT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNp
emUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0
Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOwor
ICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9S
RUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9u
bHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRj
aC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29k
ZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVm
ZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFy
IGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJNQnl0ZVZlY3Rvcj4+
KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQ
dHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29k
ZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnI4
Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxh
ciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUo
RklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1CeXRl
VmVjdG9yPj4oV1RGTW92ZShtX2JtVmVjdG9yKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICht
X2ZhaWx1cmVSZWFzb24pCiAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFp
bHVyZVJlYXNvbigqbV9mYWlsdXJlUmVhc29uKTsKQEAgLTQxOTcsNiArNDQyNiw4IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogCiAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMg
YSBsaW5lYXIgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+
IG1fb3BzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1JbmZvPiwgND4gbV9ibUluZm9zOworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1CeXRlVmVjdG9yPiwgND4gbV9ibVZlY3RvcjsKIAog
ICAgIC8vIFRoaXMgcmVjb3JkcyB0aGUgY3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGll
ZCBkdWUgdG8gdGhlIGN1cnJlbnQKICAgICAvLyBzZXQgb2YgYWx0ZXJuYXRpdmVzIHdlIGFyZSBu
ZXN0ZWQgd2l0aGluLiBFLmcuIHdoZW4gbWF0Y2hpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmgKaW5kZXggZWYzOWM4YjQwNDUyZmQ4NWFhYmUzZTA3Mjk2NWMwZGYzZGJiMDlm
NS4uYmY0MjI3MWUxODMwMTcwN2RiMzM2NjQwZGJhZTk4NjNkNDc3ZGI5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlZNLmgi
CiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8
d3RmL0ZpeGVkVmVjdG9yLmg+CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzU3LDEw
IEBAIGVudW0gY2xhc3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1dGFi
bGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSwKIH07CiAKK2NsYXNzIEJNQnl0ZVZlY3RvciA6IHB1
YmxpYyBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEyOD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworfTsKKwogI2lmIENQVShBUk02NEUpCiBleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJlc3Vs
dCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRjaGlu
Z0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOwogZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlU
b1lhcnJKSVRBZnRlcih2b2lkKTsKQEAgLTc4LDEzICs4MywyOSBAQCBjbGFzcyBZYXJyQ29kZUJs
b2NrIHsKIAogICAgIGJvb2wgaGFzOEJpdENvZGUoKSB7IHJldHVybiBtX3JlZjguc2l6ZSgpOyB9
CiAgICAgYm9vbCBoYXMxNkJpdENvZGUoKSB7IHJldHVybiBtX3JlZjE2LnNpemUoKTsgfQotICAg
IHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiBy
ZWYpIHsgbV9yZWY4ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0KKyAgICB2
b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVm
LCBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAg
eworICAgICAgICBtX21hcDggPSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fcmVmOCA9IHJlZjsK
KyAgICB9CisgICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIx
NkJpdFB0clRhZz4gcmVmLCBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1CeXRlVmVjdG9y
Pj4mJiBtYXApCisgICAgeworICAgICAgICBtX21hcDE2ID0gV1RGTW92ZShtYXApOworICAgICAg
ICBtX3JlZjE2ID0gcmVmOworICAgIH0KIAogICAgIGJvb2wgaGFzOEJpdENvZGVNYXRjaE9ubHko
KSB7IHJldHVybiBtX21hdGNoT25seTguc2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGVN
YXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0
OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0
UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9Ci0gICAgdm9p
ZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9u
bHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0K
KyAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5LCBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgeworICAgICAgICBtX21hdGNoT25seU1hcDgg
PSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsKKyAgICB9
CisgICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5LCBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgeworICAgICAgICBtX21hdGNoT25seU1h
cDE2ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5Owor
ICAgIH0KIAogICAgIGJvb2wgdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkgeyByZXR1cm4gbV91
c2VzUGF0dGVybkNvbnRleHRCdWZmZXI7IH0KICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVO
U19FWFBSRVNTSU9OUykKQEAgLTE3Niw2ICsxOTcsMTAgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7
CiAgICAgICAgIG1fcmVmMTYgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFn
PigpOwogICAgICAgICBtX21hdGNoT25seTggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1h
dGNoT25seThCaXRQdHJUYWc+KCk7CiAgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPigpOworICAgICAgICBtX21hcDgg
PSBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAg
bV9tYXAxNiA9IEZpeGVkVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCTUJ5dGVWZWN0b3I+PigpOwor
ICAgICAgICBtX21hdGNoT25seU1hcDggPSBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qk1C
eXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IEZpeGVkVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCTUJ5dGVWZWN0b3I+PigpOwogICAgICAgICBtX2ZhaWx1cmVSZWFzb24g
PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xODQsNiArMjA5LDEwIEBAIGNsYXNzIFlhcnJD
b2RlQmxvY2sgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IG1f
cmVmMTY7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFn
PiBtX21hdGNoT25seTg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkx
NkJpdFB0clRhZz4gbV9tYXRjaE9ubHkxNjsKKyAgICBGaXhlZFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qk1CeXRlVmVjdG9yPj4gbV9tYXA4OworICAgIEZpeGVkVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCTUJ5dGVWZWN0b3I+PiBtX21hcDE2OworICAgIEZpeGVkVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCTUJ5dGVWZWN0b3I+PiBtX21hdGNoT25seU1hcDg7CisgICAgRml4ZWRWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJNQnl0ZVZlY3Rvcj4+IG1fbWF0Y2hPbmx5TWFwMTY7CiAgICAgYm9vbCBtX3Vz
ZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlciB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxKSVRG
YWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCBjNGVl
M2RjMTI4NzRmMTk4ZTFiZjQ1M2YyMzdhOTljZjQ3Njc2ZGU0Li45MzVkMDZjNjY5ZGQ0Y2VlODE3
ZTBlMzljMmM2OWQ5YzM0ZGVhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVS
ZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtNDYsOSArNDYsOSBAQCBV
bmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQ
dHIoc3RkOjp1bmlxdWVfcHRyPFQ+IHB0cikKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJv
bU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQogewotICAgIHJldHVy
biBVbmlxdWVSZWY8VD4oKnB0ci5yZWxlYXNlKCkpOworICAgIHJldHVybiBVbmlxdWVSZWY8VD4o
V1RGTW92ZShwdHIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTY3LDYgKzY3LDkg
QEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsKICAgICB9CiAKKyAg
ICBUKiBwdHIoKSBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYu
Z2V0KCk7IH0KKyAgICBUKiBwdHIoKSBjb25zdCBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9y
ZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKwogICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcmVm
KTsgcmV0dXJuICptX3JlZjsgfQogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1f
cmVmKTsgcmV0dXJuICptX3JlZjsgfQogCkBAIC04Myw5ICs4NiwxNSBAQCBjbGFzcyBVbmlxdWVS
ZWYgewogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJn
cyYmLi4uKTsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VV
bmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4pOworICAgIHRl
bXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25O
dWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPiYmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBV
PiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCisgICAgZXhwbGljaXQgVW5pcXVlUmVmKHN0ZDo6
dW5pcXVlX3B0cjxUPiYmIHB0cikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKHB0cikpCisgICAg
eworICAgICAgICBBU1NFUlQobV9yZWYpOworICAgIH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
PiBtX3JlZjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434320</attachid>
            <date>2021-07-27 14:58:32 -0700</date>
            <delta_ts>2021-07-27 15:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727145831.patch</filename>
            <type>text/plain</type>
            <size>24157</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi4zOGYzMjI5N2I2MTQ3NmUx
NDEzOTk4MGQ3NDc3ZjMxYzZkMTM5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjpjb3VudCBjb25zdCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
TUJpdG1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpCTUluZm8pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCTUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJNSW5mbzo6c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVy
U2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86
OmNyZWF0ZUJNQnl0ZVZlY3RvciBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVtcG9yYWwgdG8gZmVh
dHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgy
Li5lMzM5NTEzYTY1ODEwYmNlNTE5NTg5ZTZkOTQwN2I3ZDMyOTAzNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgor
ICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIpOgorICAgICAg
ICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2
ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi45NDYzMTY0OGFj
ZmQ2N2M3ZTJlNzc4MmI3ODI3OWQwNTI2Y2YxNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDE0NyBAQAogI2luY2x1ZGUg
IllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IHRydWU7Cit9CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9P
UEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJK
SVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQk1CaXRtYXAgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKEJNQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNr
ID0gMTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCTUJp
dG1hcCgpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQorICAgIGNvbnN0IE1hcCYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0K
KworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAobV9tYXAuZ2V0
KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9t
YXAgeyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07Cit9OworCitjbGFzcyBCTUluZm8g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJNSW5mbyk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQoQk1JbmZvKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkK
KyAgICAgICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxl
bmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEJN
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1
ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+IGNy
ZWF0ZUJNQnl0ZVZlY3Rvcih1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25z
dDsKKworICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworfTsKKworc3RkOjp0dXBs
ZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gQk1JbmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVl
bmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdAoreworICAgIGludCBi
aWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0ID0gMDsKKyAgICB1bnNp
Z25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJh
Y3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkKKyAgICAgICAg
ICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4OworICAgICAgICBCTUJpdG1h
cDo6TWFwIG1hcCB7IH07CisgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hh
cmFjdGVyc1tpbmRleF0uY291bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsgKytpbmRl
eCkKKyAgICAgICAgICAgIG1hcC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKwor
ICAgICAgICAvLyBJZiBtYXAgaGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBvZiB0aGlz
IHNlcXVlbmNlIGlzIGxvdyBzaW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5ncy4KKyAg
ICAgICAgLy8gQW5kIGlmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBvaW50IG9m
IHRoaXMgc2VxdWVuY2UgaXMgaGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hhcmFjdGVy
cy4KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxsIGNoYXJh
Y3RlcnMgZXF1YWxseS4gQnV0IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFjdGVyIHNp
bmNlIGUuZy4gJ2UnIHNob3VsZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2Jy4KKyAg
ICAgICAgaW50IGZyZXF1ZW5jeSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0Y2hpbmdQ
cm9iYWJpbGl0eSA9IEJNQml0bWFwOjptYXBTaXplIC0gZnJlcXVlbmN5OworICAgICAgICBpbnQg
cG9pbnQgPSAoaW5kZXggLSBiZWdpbikgKiBtYXRjaGluZ1Byb2JhYmlsaXR5OworICAgICAgICBp
ZiAocG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IHBv
aW50OworICAgICAgICAgICAgYmVnaW5SZXN1bHQgPSBiZWdpbjsKKyAgICAgICAgICAgIGVuZFJl
c3VsdCA9IGluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsg
YmlnZ2VzdFBvaW50LCBiZWdpblJlc3VsdCwgZW5kUmVzdWx0IH07Cit9CisKK3N0ZDo6b3B0aW9u
YWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBCTUluZm86OmZpbmRXb3J0aHdoaWxl
Q2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElmIGNhbmRp
YXRlcy1wZXItY2hhcmFjdGVyIGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlzIG5vdCBw
cm9maXRhYmxlIHNpbmNlIHRoaXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0CisgICAgLy8g
dG9vIG1hbnkgY2hhcmFjdGVycy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXItY2hhcmFj
dGVyIHNtYWxsZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkgc2hvcnQK
KyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0LCB0aGVu
IGVubGFyZ2luZyB0aGUgbGltaXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFibGUKKyAg
ICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7CisgICAg
dW5zaWduZWQgYmVnaW4gPSAwOworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29uc3RleHBy
IHVuc2lnbmVkIG1heENhbmRpZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3IgKHVuc2ln
bmVkIGxpbWl0ID0gNDsgbGltaXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBsaW1pdCAq
PSAyKSB7CisgICAgICAgIGF1dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9IGZpbmRC
ZXN0Q2hhcmFjdGVyU2VxdWVuY2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQgPiBiaWdn
ZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50OworICAgICAg
ICAgICAgYmVnaW4gPSBuZXdCZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30KKworVW5p
cXVlUmVmPEJNQnl0ZVZlY3Rvcj4gQk1JbmZvOjpjcmVhdGVCTUJ5dGVWZWN0b3IodW5zaWduZWQg
YmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBhdXRvIHZlY3RvciA9IG1ha2VVbmlx
dWVSZWY8Qk1CeXRlVmVjdG9yPigpOworICAgIHZlY3Rvci0+ZmlsbCgwKTsKKyAgICBCTUJpdG1h
cDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRleCA8
IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0ubWFw
KCkpOworICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAgICAg
ICAoKnZlY3RvcilbaW5kZXhdID0gMTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVjdG9yOworfQor
CiBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODMwLDYgKzk2MSw4
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyB2YWx1ZSB0aGF0IHdpbGwgYmUgcHVzaGVk
IGludG8gdGhlIHBhdHRlcm4ncyBmcmFtZSB0byByZXR1cm4gdG8sCiAgICAgICAgIC8vIHVwb24g
YmFja3RyYWNraW5nIGJhY2sgaW50byB0aGUgZGlzanVuY3Rpb24uCiAgICAgICAgIERhdGFMYWJl
bFB0ciBtX3JldHVybkFkZHJlc3M7CisKKyAgICAgICAgQk1JbmZvKiBtX2JtSW5mbzsKICAgICB9
OwogCiAgICAgLy8gQmFja3RyYWNraW5nU3RhdGUKQEAgLTE0MTAsNyArMTU0Myw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogCiAgICAgICAgICAgICBhbGxDaGFyYWN0ZXJzIHw9IChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oY3VycmVudENoYXJhY3RlcikgPDwgc2hpZnRBbW91bnQpOwogCi0gICAgICAgICAg
ICBpZiAoKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkpICYmIChpc0FTQ0lJQWxwaGEoY3VycmVudENo
YXJhY3RlcikpKQorICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNB
U0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgIGlnbm9yZUNhc2VN
YXNrIHw9IDMyVUxMIDw8IHNoaWZ0QW1vdW50OwogICAgICAgICB9CiAKQEAgLTIyNTYsNiArMjM4
OSwzMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBVcG9uIGVudHJ5IGF0
IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0ZXJuYXRpdmVzLCBjaGVjayBpZiBpbnB1dCBpcyBh
dmFpbGFibGUKICAgICAgICAgICAgICAgICAvLyB0byBydW4gdGhlIGZpcnN0IGFsdGVybmF0aXZl
LiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1dCBwb3NpdGlvbikuCiAgICAgICAgICAgICAgICAg
b3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSkpOworCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVD
aGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZElu
ZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFlhcnJK
SVRJbnRlcm5hbDo6dmVyYm9zZSwgIkZvdW5kIHdvcnRod2hpbGUgY2hhcmFjdGVyIHNlcXVlbmNl
IGZvciBsb29rYWhlYWQgKCIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZEluZGV4IDw9IGFsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gb3AubV9i
bUluZm8tPmNyZWF0ZUJNQnl0ZVZlY3RvcihiZWdpbkluZGV4LCBlbmRJbmRleCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cih2ZWN0b3ItPmRhdGEoKSksIHJl
Z1QxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ4KG5lZ2F0aXZlT2Zmc2V0SW5kZXhl
ZEFkZHJlc3MoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBlbmRJbmRleCwgcmVnVDApLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZDE2VW5hbGlnbmVkKG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3MoKGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gZW5kSW5kZXgpICogMiwgcmVnVDApLCByZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1h
cE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRj
aGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVz
T25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZO
b0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2Jt
VmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFm
dGVyIHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVu
CiAgICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRp
dmUuCiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKQEAgLTI3ODAsNiAr
MjkzNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29w
Lm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AubV9vcCA9PSBZYXJyT3BD
b2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAgICAgICAgWWFyck9wKiBiZWdp
bk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9wLT5tX29wICE9IFlhcnJP
cENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5NTUsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gpCiAgICAgICAgICAg
ICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVlbnRyeSwgdGhp
cyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3Bh
dHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0gWWFyck9wQ29kZTo6
Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4u
c3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgc3RpY2t5IHBh
dHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0byB0aGUgZW5kLgog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNr
c1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRoaXMpOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXpl
CkBAIC0zNjA3LDYgKzM3NjUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgaWYgKGFsdGVy
bmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgpKSB7CiAgICAg
ICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJl
Z2luKSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7
CisgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOwogCiAgICAgICAg
ICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6
ZSgpIC0gMTsKQEAgLTM2NDMsNiArMzgwMiwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
c2l6ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXplKCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZ
YXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgbV9vcHMu
bGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wcy5sYXN0KCkubV9i
bUluZm8gPSBudWxscHRyOworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUg
JiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICBhdXRvIGJtSW5m
byA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChjb2xsZWN0Qk1J
bmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkg
eworICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsK
KyAgICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3Qg
bGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0dGVybkFsdGVy
bmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRl
eF0uZ2V0KCk7CkBAIC0zNjY4LDYgKzM4MzYsNjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0
Qk1JbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0
ZXJuYXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8pCisgICAgeworICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2UgY2FuIGNoZWNrIHRoZSA2
dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQsIGUsIGZ9LgorICAgICAg
ICAvLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hhcmFjdGVycy4gV2Ug
dXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVuZGVkIGVhc2lseSB0
byBzdXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xhc3MsIGFuZCBp
Z25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJjfGRlZikvLCB3
ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICAvLyBhZ2FpbnN0IHthLCBiLCBjLCBk
LCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1hdGNoLgorICAg
ICAgICAvLworICAgICAgICAvLyBUaGVuLCB0aGUgYmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJv
dmUgc2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRoZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5j
ZSB3aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhl
IGNhc2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywgd2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNl
cXVlbmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVyIGFnaW5zdCB7YX0uCisgICAgICAgIC8vIElm
IGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0
aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16
XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7
YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgorICAgICAgICAvLworICAgICAgICAv
LyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVy
IHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0
ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFy
Y2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1f
aGFzRml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQg
bG9va2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9t
aW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IGNvbGxl
Y3QgdGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNqdW5jdGlvbi4gV2Ugd2lsbCBleHRlbmQgaXQg
dG8gc3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLy4KKyAgICAgICAgYXV0byYg
YWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBmb3Ig
KDsgY3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJl
bnRBbHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOwor
ICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZl
c1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vy
c29yIDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgUGF0dGVy
blRlcm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAgICAgICAgICAg
ICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRp
dHlNYXhDb3VudCAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBp
ZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJy
b2dhdGVQYWlycykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lp
IGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyB1
cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gYSBjaGFy
YWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9y
ZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9u
aWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlB
bHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBi
bUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0
ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFj
dGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJi
b3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAg
ICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQgKzQxODEsMTQg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29t
cGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hh
clNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNo
T25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0
clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAg
ICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09E
RShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQg
cmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+
PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShs
aW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCBy
ZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0
Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hP
bmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwg
Rml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KFdURk1vdmUobV9ibVZlY3Rvcikp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJT
aXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJ
WkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFy
IGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJ
TkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVn
dWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihX
VEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZ
YXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAg
ICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1
ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBGaXhl
ZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92ZShtX2JtVmVjdG9yKSkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFzb24pCiAgICAgICAgICAgICBjb2Rl
QmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigqbV9mYWlsdXJlUmVhc29uKTsKQEAg
LTQxOTcsNiArNDQyNiw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgLy8gVGhlIHJlZ3VsYXIg
ZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4K
ICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1J
bmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPiwg
ND4gbV9ibVZlY3RvcjsKIAogICAgIC8vIFRoaXMgcmVjb3JkcyB0aGUgY3VycmVudCBpbnB1dCBv
ZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJlbnQKICAgICAvLyBzZXQgb2YgYWx0
ZXJuYXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGluLiBFLmcuIHdoZW4gbWF0Y2hpbmcgdGhlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggZWYzOWM4YjQwNDUyZmQ4NWFhYmUz
ZTA3Mjk2NWMwZGYzZGJiMDlmNS4uYTJjOGQzYTM0OTFkODk3OWM5YWJlYWE2ZDY5NjYxNTQ2NTE5
ZTczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtMzIsNiArMzIsOCBA
QAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0
ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01Niw2ICs1OCwxMCBAQCBlbnVtIGNs
YXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxs
b2NhdGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBCTUJ5dGVWZWN0b3IgOiBwdWJsaWMgc3RkOjph
cnJheTx1aW50OF90LCAxMjg+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CisK
ICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBFbmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRv
WWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBj
b25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAiQyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0
ZXIodm9pZCk7CkBAIC03OCwxMyArODQsMjkgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAKICAg
ICBib29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWY4LnNpemUoKTsgfQogICAgIGJvb2wg
aGFzMTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhC
aXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVmKSB7IG1fcmVm
OCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZ
YXJyMTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2ID0gcmVmOyB9CisgICAgdm9pZCBzZXQ4Qml0
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0
b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXA4
ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3JlZjggPSByZWY7CisgICAgfQorICAgIHZvaWQg
c2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwg
Rml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAg
ICAgbV9tYXAxNiA9IFdURk1vdmUobWFwKTsKKyAgICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICB9
CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4
LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9t
YXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1f
bWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25s
eSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1h
dGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1h
dGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAg
IHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX21h
dGNoT25seTggPSBtYXRjaE9ubHk7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hP
bmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNo
T25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsK
KyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IFdURk1vdmUobWFwKTsKKyAgICAgICAgbV9tYXRj
aE9ubHkxNiA9IG1hdGNoT25seTsKKyAgICB9CiAKICAgICBib29sIHVzZXNQYXR0ZXJuQ29udGV4
dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOyB9CiAjaWYgRU5B
QkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCkBAIC0xNzYsNiArMTk4LDEwIEBA
IGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgICAgICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAgICAgICBtX21h
dGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRh
Zz4oKTsKKyAgICAgICAgbV9tYXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rv
cj4+KCk7CisgICAgICAgIG1fbWFwMTYgPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVj
dG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVm
PEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWF0Y2hPbmx5TWFwMTYgPSBGaXhlZFZlY3Rv
cjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
c3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtMTg0LDYgKzIxMCwxMCBAQCBjbGFzcyBZYXJyQ29k
ZUJsb2NrIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiBtX3Jl
ZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4g
bV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZC
aXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0
ZVZlY3Rvcj4+IG1fbWFwODsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4gbV9tYXAxNjsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9t
YXRjaE9ubHlNYXA4OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBt
X21hdGNoT25seU1hcDE2OwogICAgIGJvb2wgbV91c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBm
YWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVh
c29uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oIGIvU291cmNl
L1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRlZTNkYzEyODc0ZjE5OGUxYmY0NTNmMjM3YTk5
Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2UwZTM5YzJjNjlkOWMzNGRlYTNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYv
VW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYo
QXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1VbmlxdWVSZWY8VD4g
bWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiBwdHIp
CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5p
cXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KCpwdHIucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdURk1vdmUocHRyKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAg
ICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisgICAgVCogcHRyKCkgUkVUVVJOU19OT05OVUxM
IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisgICAgVCogcHRyKCkgY29u
c3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9
CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9yZWY7IH0KICAgICBj
b25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9yZWY7IH0KIApA
QCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogcHJpdmF0ZToKICAgICB0ZW1w
bGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlx
dWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQ
dHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5p
cXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9w
dHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsK
IAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCisgICAg
ICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVmKTsK
KyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbV9yZWY7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="456828"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434343</attachid>
            <date>2021-07-27 15:13:55 -0700</date>
            <delta_ts>2021-07-27 16:53:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727151354.patch</filename>
            <type>text/plain</type>
            <size>24577</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi4zOGYzMjI5N2I2MTQ3NmUx
NDEzOTk4MGQ3NDc3ZjMxYzZkMTM5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjpjb3VudCBjb25zdCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
TUJpdG1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpCTUluZm8pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCTUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJNSW5mbzo6c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVy
U2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86
OmNyZWF0ZUJNQnl0ZVZlY3RvciBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVtcG9yYWwgdG8gZmVh
dHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgy
Li5lMzM5NTEzYTY1ODEwYmNlNTE5NTg5ZTZkOTQwN2I3ZDMyOTAzNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgor
ICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIpOgorICAgICAg
ICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2
ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi4yZTJkODhmOTli
OTU4MzBiMDY0ZDBkYTAyZjYzZjM5YWQ2MDY5YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDE0NyBAQAogI2luY2x1ZGUg
IllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IHRydWU7Cit9CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9P
UEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJK
SVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQk1CaXRtYXAgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKEJNQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNr
ID0gMTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCTUJp
dG1hcCgpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQorICAgIGNvbnN0IE1hcCYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0K
KworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAobV9tYXAuZ2V0
KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9t
YXAgeyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07Cit9OworCitjbGFzcyBCTUluZm8g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJNSW5mbyk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQoQk1JbmZvKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkK
KyAgICAgICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxl
bmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEJN
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1
ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+IGNy
ZWF0ZUJNQnl0ZVZlY3Rvcih1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25z
dDsKKworICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworfTsKKworc3RkOjp0dXBs
ZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gQk1JbmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVl
bmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdAoreworICAgIGludCBi
aWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0ID0gMDsKKyAgICB1bnNp
Z25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJh
Y3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkKKyAgICAgICAg
ICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgoKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4OworICAgICAgICBCTUJpdG1h
cDo6TWFwIG1hcCB7IH07CisgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hh
cmFjdGVyc1tpbmRleF0uY291bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsgKytpbmRl
eCkKKyAgICAgICAgICAgIG1hcC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKwor
ICAgICAgICAvLyBJZiBtYXAgaGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBvZiB0aGlz
IHNlcXVlbmNlIGlzIGxvdyBzaW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5ncy4KKyAg
ICAgICAgLy8gQW5kIGlmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBvaW50IG9m
IHRoaXMgc2VxdWVuY2UgaXMgaGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hhcmFjdGVy
cy4KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxsIGNoYXJh
Y3RlcnMgZXF1YWxseS4gQnV0IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFjdGVyIHNp
bmNlIGUuZy4gJ2UnIHNob3VsZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2Jy4KKyAg
ICAgICAgaW50IGZyZXF1ZW5jeSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0Y2hpbmdQ
cm9iYWJpbGl0eSA9IEJNQml0bWFwOjptYXBTaXplIC0gZnJlcXVlbmN5OworICAgICAgICBpbnQg
cG9pbnQgPSAoaW5kZXggLSBiZWdpbikgKiBtYXRjaGluZ1Byb2JhYmlsaXR5OworICAgICAgICBp
ZiAocG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IHBv
aW50OworICAgICAgICAgICAgYmVnaW5SZXN1bHQgPSBiZWdpbjsKKyAgICAgICAgICAgIGVuZFJl
c3VsdCA9IGluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsg
YmlnZ2VzdFBvaW50LCBiZWdpblJlc3VsdCwgZW5kUmVzdWx0IH07Cit9CisKK3N0ZDo6b3B0aW9u
YWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBCTUluZm86OmZpbmRXb3J0aHdoaWxl
Q2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElmIGNhbmRp
YXRlcy1wZXItY2hhcmFjdGVyIGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlzIG5vdCBw
cm9maXRhYmxlIHNpbmNlIHRoaXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0CisgICAgLy8g
dG9vIG1hbnkgY2hhcmFjdGVycy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXItY2hhcmFj
dGVyIHNtYWxsZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkgc2hvcnQK
KyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0LCB0aGVu
IGVubGFyZ2luZyB0aGUgbGltaXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFibGUKKyAg
ICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7CisgICAg
dW5zaWduZWQgYmVnaW4gPSAwOworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29uc3RleHBy
IHVuc2lnbmVkIG1heENhbmRpZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3IgKHVuc2ln
bmVkIGxpbWl0ID0gNDsgbGltaXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBsaW1pdCAq
PSAyKSB7CisgICAgICAgIGF1dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9IGZpbmRC
ZXN0Q2hhcmFjdGVyU2VxdWVuY2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQgPiBiaWdn
ZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50OworICAgICAg
ICAgICAgYmVnaW4gPSBuZXdCZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30KKworVW5p
cXVlUmVmPEJNQnl0ZVZlY3Rvcj4gQk1JbmZvOjpjcmVhdGVCTUJ5dGVWZWN0b3IodW5zaWduZWQg
YmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBhdXRvIHZlY3RvciA9IG1ha2VVbmlx
dWVSZWY8Qk1CeXRlVmVjdG9yPigpOworICAgIHZlY3Rvci0+ZmlsbCgwKTsKKyAgICBCTUJpdG1h
cDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRleCA8
IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0ubWFw
KCkpOworICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAgICAg
ICB2ZWN0b3IuZ2V0KClbaW5kZXhdID0gMTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVjdG9yOwor
fQorCiBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODExLDYgKzk0
Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBpbnRvIHRoZSBjb2RlIGZvciBhIG5v
ZGUgKGxpa2VseSB3aGVyZSBhIGJhY2t0cmFjayB3aWxsIHRyaWdnZXIKICAgICAgICAgLy8gcmVt
YXRjaGluZykuCiAgICAgICAgIExhYmVsIG1fcmVlbnRyeTsKKyAgICAgICAgTGFiZWwgbV9ibVNl
YXJjaEVudHJ5OwogICAgICAgICBKdW1wTGlzdCBtX2p1bXBzOwogCiAgICAgICAgIC8vIFVzZWQg
Zm9yIGJhY2t0cmFja2luZyB3aGVuIHRoZSBwcmlvciBhbHRlcm5hdGl2ZSBkaWQgbm90IGNvbnN1
bWUgYW55CkBAIC04MzAsNiArOTYyLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIHZh
bHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRvIHJldHVy
biB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBkaXNqdW5j
dGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAgICAgICBC
TUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0ZQpAQCAt
MTQxMCw3ICsxNTQ0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFsbENoYXJh
Y3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8PCBzaGlm
dEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSkgJiYg
KGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAobV9wYXR0
ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlcikpCiAgICAg
ICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7CiAgICAg
ICAgIH0KIApAQCAtMjI1Niw2ICsyMzkwLDMxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAg
ICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2
ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgIC8vIHRvIHJ1
biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0
aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJs
ZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAob3AubV9ibUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByYW5nZSA9IG9wLm1f
Ym1JbmZvLT5maW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBbYmVnaW5JbmRleCwgZW5kSW5kZXhdID0gKnJhbmdlOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiRm91bmQgd29ydGh3
aGlsZSBjaGFyYWN0ZXIgc2VxdWVuY2UgZm9yIGxvb2thaGVhZCAoIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kSW5k
ZXggPD0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0byB2ZWN0b3IgPSBvcC5tX2JtSW5mby0+Y3JlYXRlQk1CeXRlVmVjdG9yKGJlZ2luSW5k
ZXgsIGVuZEluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9ibVNlYXJjaEVu
dHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cih2ZWN0b3ItPmRhdGEoKSksIHJlZ1QxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8g
bG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNp
emUgPT0gQ2hhclNpemU6OkNoYXI4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ4
KG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3MoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUg
LSBlbmRJbmRleCwgcmVnVDApLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDE2VW5hbGlnbmVkKG5lZ2F0aXZlT2Zm
c2V0SW5kZXhlZEFkZHJlc3MoKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gZW5kSW5kZXgp
ICogMiwgcmVnVDApLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVz
dGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRl
eChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcC5t
X2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRl
eCkpOworICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhp
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg
Ly8gV2Ugd2lsbCByZWVudGVyIGFmdGVyIHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQg
cG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAgICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJp
YXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0g
bGFiZWwoKTsKQEAgLTI3ODAsNiArMjkzOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFy
ck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZW5kT3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAg
ICAgICAgICAgWWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChi
ZWdpbk9wLT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0y
Nzk3LDcgKzI5NTcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25j
ZVRocm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1Rv
KGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3Bd
Lm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEl0IGlzIGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxl
ZCwganVtcCB0byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tp
bmdTdGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFp
bHVyZXMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5t
X2JvZHktPm1faGFzRml4ZWRTaXplCkBAIC0zNjA3LDYgKzM3NjcsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5v
bmNlVGhyb3VnaCgpKSB7CiAgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9w
cmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8g
PSBudWxscHRyOwogCiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxh
c3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKQEAgLTM2NDMsNiArMzgwNCwxNSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgc2l6ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXplKCk7CiAg
ICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVn
aW4pKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAg
ICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOworICAgICAgICBpZiAoZGlzanVu
Y3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKSB7Cisg
ICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVk
PihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsKKyAgICAg
ICAgICAgIGlmIChjb2xsZWN0Qk1JbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJ
bmRleCwgYm1JbmZvLmdldCgpKSkgeworICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2Jt
SW5mbyA9IGJtSW5mby5wdHIoKTsKKyAgICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBwZW5kKFdU
Rk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogICAg
ICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tj
dXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CkBAIC0zNjY4LDYgKzM4MzgsNjcgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAg
fQogCisgICAgYm9vbCBjb2xsZWN0Qk1JbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rp
b24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8pCisgICAg
eworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRo
ZW4gd2UgY2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIs
IGMsIGQsIGUsIGZ9LgorICAgICAgICAvLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNo
aWZ0IDYgY2hhcmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2Fu
IGJlIGV4dGVuZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0aW9uLCBj
aGFyYWN0ZXItY2xhc3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2Fz
ZSBvZiAvKD86YWJjfGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICAv
LyBhZ2FpbnN0IHthLCBiLCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0
IGRvZXMgbm90IG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBUaGVuLCB0aGUgYmVzdCB3
YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRoZSBsb25n
ZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIG1h
bnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywgd2UgY2Fu
IGV4dHJhY3QgImFhYWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVyIGFnaW5z
dCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlm
dCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJl
dHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2Ug
YW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgor
ICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3Rl
cnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRv
IGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFu
ZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBB
U1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3ZSBvbmx5
IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAgICAgIEFT
U0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSB3ZSBvbmx5IGNvbGxlY3QgdGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNqdW5jdGlv
bi4gV2Ugd2lsbCBleHRlbmQgaXQgdG8gc3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGcoPzpoaXxq
aykpLy4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJu
YXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5h
dGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRl
cm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5hdGl2ZS0+
bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4KSB7Cisg
ICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tp
bmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CisgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgor
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3Nl
cnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVu
Y2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhl
ZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBv
c2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIp
ICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2
ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVudAorICAg
ICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFy
ZSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJu
Q2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3Rlciwg
bV9jYW5vbmljYWxNb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdu
b3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0u
cGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChj
dXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNv
ciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYo
WWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2Rl
Q2hhcmFjdGVySGVscGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMK
QEAgLTM5NTIsMTQgKzQxODMsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1f
Y29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAgICAgICAg
aWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVC
bG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVy
LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25s
eShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRh
ZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVu
aXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShG
SU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcs
ICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShs
aW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCBy
ZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+
KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQ
dHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29k
ZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnI4
Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1
ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdF
WFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUoRklOQUxJ
WkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3Vs
YXIgZXhwcmVzc2lvbiIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RG
TW92ZShtX2JtVmVjdG9yKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFz
b24pCiAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigq
bV9mYWlsdXJlUmVhc29uKTsKQEAgLTQxOTcsNiArNDQyOCw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
CiAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2Vx
dWVuY2Ugb2Ygb3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAg
IFZlY3RvcjxVbmlxdWVSZWY8Qk1JbmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3RvcjxVbmlx
dWVSZWY8Qk1CeXRlVmVjdG9yPiwgND4gbV9ibVZlY3RvcjsKIAogICAgIC8vIFRoaXMgcmVjb3Jk
cyB0aGUgY3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJl
bnQKICAgICAvLyBzZXQgb2YgYWx0ZXJuYXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGluLiBFLmcu
IHdoZW4gbWF0Y2hpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXgg
ZWYzOWM4YjQwNDUyZmQ4NWFhYmUzZTA3Mjk2NWMwZGYzZGJiMDlmNS4uYTJjOGQzYTM0OTFkODk3
OWM5YWJlYWE2ZDY5NjYxNTQ2NTE5ZTczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuaApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiWWFyci5o
IgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01
Niw2ICs1OCwxMCBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAg
ICBFeGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBCTUJ5dGVW
ZWN0b3IgOiBwdWJsaWMgc3RkOjphcnJheTx1aW50OF90LCAxMjg+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBFbmNvZGVk
TWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRl
ciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAiQyIgdm9p
ZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArODQsMjkgQEAgY2xhc3Mg
WWFyckNvZGVCbG9jayB7CiAKICAgICBib29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWY4
LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYxNi5zaXpl
KCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJp
dFB0clRhZz4gcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2ID0gcmVm
OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQ
dHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQor
ICAgIHsKKyAgICAgICAgbV9tYXA4ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3JlZjggPSBy
ZWY7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZ
YXJyMTZCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+
JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXAxNiA9IFdURk1vdmUobWFwKTsKKyAgICAgICAg
bV9yZWYxNiA9IHJlZjsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkg
eyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0
Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhC
aXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0
clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAgIHZvaWQg
c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9Cisg
ICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1h
dGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0
ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0gV1RGTW92
ZShtYXApOworICAgICAgICBtX21hdGNoT25seTggPSBtYXRjaE9ubHk7CisgICAgfQorICAgIHZv
aWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hP
bmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IFdURk1vdmUo
bWFwKTsKKyAgICAgICAgbV9tYXRjaE9ubHkxNiA9IG1hdGNoT25seTsKKyAgICB9CiAKICAgICBi
b29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250
ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMp
CkBAIC0xNzYsNiArMTk4LDEwIEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgICAgICBtX3Jl
ZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAg
bV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRy
VGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKKyAgICAgICAgbV9tYXA4ID0gRml4ZWRWZWN0b3I8
VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWFwMTYgPSBGaXhlZFZlY3Rv
cjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0g
Rml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWF0Y2hP
bmx5TWFwMTYgPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKICAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtMTg0LDYgKzIx
MCwxMCBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFycjE2Qml0UHRyVGFnPiBtX3JlZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5OEJpdFB0clRhZz4gbV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgRml4ZWRW
ZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1fbWFwODsKKyAgICBGaXhlZFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXAxNjsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVS
ZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXRjaE9ubHlNYXA4OworICAgIEZpeGVkVmVjdG9yPFVuaXF1
ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21hdGNoT25seU1hcDE2OwogICAgIGJvb2wgbV91c2VzUGF0
dGVybkNvbnRleHRCdWZmZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVy
ZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRlZTNkYzEy
ODc0ZjE5OGUxYmY0NTNmMjM3YTk5Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2UwZTM5
YzJjNjlkOWMzNGRlYTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgK
KysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5pcXVl
UmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1VbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0
ZDo6dW5pcXVlX3B0cjxUPiBwdHIpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25O
dWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1cm4gVW5p
cXVlUmVmPFQ+KCpwdHIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdURk1v
dmUocHRyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBAIGNs
YXNzIFVuaXF1ZVJlZiB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisgICAgVCog
cHRyKCkgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgp
OyB9CisgICAgVCogcHRyKCkgY29uc3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsg
cmV0dXJuIG1fcmVmLmdldCgpOyB9CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3JlZik7IHJl
dHVybiAqbV9yZWY7IH0KICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3JlZik7
IHJldHVybiAqbV9yZWY7IH0KIApAQCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVmIHsK
IAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQg
VW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4u
Lik7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVl
UmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVu
aXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJp
ZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVuaXF1
ZV9wdHI8VD4mJiBwdHIpCisgICAgICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVmKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbV9y
ZWY7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="456868"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434384</attachid>
            <date>2021-07-27 16:35:06 -0700</date>
            <delta_ts>2021-07-27 19:44:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727163505.patch</filename>
            <type>text/plain</type>
            <size>24583</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi4zOGYzMjI5N2I2MTQ3NmUx
NDEzOTk4MGQ3NDc3ZjMxYzZkMTM5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjpjb3VudCBjb25zdCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
TUJpdG1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpCTUluZm8pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCTUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJNSW5mbzo6c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVy
U2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86
OmNyZWF0ZUJNQnl0ZVZlY3RvciBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVtcG9yYWwgdG8gZmVh
dHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgy
Li5lMzM5NTEzYTY1ODEwYmNlNTE5NTg5ZTZkOTQwN2I3ZDMyOTAzNjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgor
ICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIpOgorICAgICAg
ICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2
ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi5lZmI0NTcxOGZk
Njg0NTMxYmE3ODVjZTBiMTlhNDI1Y2YzNDFkZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDE0NyBAQAogI2luY2x1ZGUg
IllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wg
dmVyYm9zZSA9IHRydWU7Cit9CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9P
UEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJK
SVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQk1CaXRtYXAgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKEJNQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNr
ID0gMTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCTUJp
dG1hcCgpID0gZGVmYXVsdDsKKworICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudDsgfQorICAgIGNvbnN0IE1hcCYgbWFwKCkgY29uc3QgeyByZXR1cm4gbV9tYXA7IH0K
KworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAobV9tYXAuZ2V0
KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9t
YXAgeyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07Cit9OworCitjbGFzcyBCTUluZm8g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJNSW5mbyk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQoQk1JbmZvKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkK
KyAgICAgICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRo
aXMtPmxlbmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFy
YWN0ZXJzW2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVW5pcXVl
UmVmPEJNSW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0
ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIFVuaXF1ZVJlZjxCTUJ5dGVWZWN0
b3I+IGNyZWF0ZUJNQnl0ZVZlY3Rvcih1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBm
aW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0
KSBjb25zdDsKKworICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworfTsKKworc3Rk
Ojp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gQk1JbmZvOjpmaW5kQmVzdENoYXJhY3Rl
clNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdAoreworICAg
IGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0ID0gMDsKKyAg
ICB1bnNpZ25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgoKSAmJiBt
X2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkKKyAg
ICAgICAgICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4OworICAgICAgICBC
TUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYm
IG1fY2hhcmFjdGVyc1tpbmRleF0uY291bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsg
KytpbmRleCkKKyAgICAgICAgICAgIG1hcC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgp
KTsKKworICAgICAgICAvLyBJZiBtYXAgaGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBv
ZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBzaW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5n
cy4KKyAgICAgICAgLy8gQW5kIGlmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBv
aW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgaGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hh
cmFjdGVycy4KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxs
IGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFj
dGVyIHNpbmNlIGUuZy4gJ2UnIHNob3VsZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2
Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5jeSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0
Y2hpbmdQcm9iYWJpbGl0eSA9IEJNQml0bWFwOjptYXBTaXplIC0gZnJlcXVlbmN5OworICAgICAg
ICBpbnQgcG9pbnQgPSAoaW5kZXggLSBiZWdpbikgKiBtYXRjaGluZ1Byb2JhYmlsaXR5OworICAg
ICAgICBpZiAocG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2lu
dCA9IHBvaW50OworICAgICAgICAgICAgYmVnaW5SZXN1bHQgPSBiZWdpbjsKKyAgICAgICAgICAg
IGVuZFJlc3VsdCA9IGluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1
cGxlIHsgYmlnZ2VzdFBvaW50LCBiZWdpblJlc3VsdCwgZW5kUmVzdWx0IH07Cit9CisKK3N0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBCTUluZm86OmZpbmRXb3J0
aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElm
IGNhbmRpYXRlcy1wZXItY2hhcmFjdGVyIGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlz
IG5vdCBwcm9maXRhYmxlIHNpbmNlIHRoaXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0Cisg
ICAgLy8gdG9vIG1hbnkgY2hhcmFjdGVycy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXIt
Y2hhcmFjdGVyIHNtYWxsZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkg
c2hvcnQKKyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0
LCB0aGVuIGVubGFyZ2luZyB0aGUgbGltaXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFi
bGUKKyAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7
CisgICAgdW5zaWduZWQgYmVnaW4gPSAwOworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29u
c3RleHByIHVuc2lnbmVkIG1heENhbmRpZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3Ig
KHVuc2lnbmVkIGxpbWl0ID0gNDsgbGltaXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBs
aW1pdCAqPSAyKSB7CisgICAgICAgIGF1dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9
IGZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQg
PiBiaWdnZXN0UG9pbnQpIHsKKyAgICAgICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50Owor
ICAgICAgICAgICAgYmVnaW4gPSBuZXdCZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30K
KworVW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4gQk1JbmZvOjpjcmVhdGVCTUJ5dGVWZWN0b3IodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBhdXRvIHZlY3RvciA9IG1h
a2VVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPigpOworICAgIHZlY3Rvci0+ZmlsbCgwKTsKKyAgICBC
TUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBp
bmRleCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRl
eF0ubWFwKCkpOworICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgewor
ICAgICAgICB2ZWN0b3IuZ2V0KClbaW5kZXhdID0gMTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVj
dG9yOworfQorCiBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODEx
LDYgKzk0Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBpbnRvIHRoZSBjb2RlIGZv
ciBhIG5vZGUgKGxpa2VseSB3aGVyZSBhIGJhY2t0cmFjayB3aWxsIHRyaWdnZXIKICAgICAgICAg
Ly8gcmVtYXRjaGluZykuCiAgICAgICAgIExhYmVsIG1fcmVlbnRyeTsKKyAgICAgICAgTGFiZWwg
bV9ibVNlYXJjaEVudHJ5OwogICAgICAgICBKdW1wTGlzdCBtX2p1bXBzOwogCiAgICAgICAgIC8v
IFVzZWQgZm9yIGJhY2t0cmFja2luZyB3aGVuIHRoZSBwcmlvciBhbHRlcm5hdGl2ZSBkaWQgbm90
IGNvbnN1bWUgYW55CkBAIC04MzAsNiArOTYyLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRv
IHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBk
aXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAg
ICAgICBCTUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0
ZQpAQCAtMTQxMCw3ICsxNTQ0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFs
bENoYXJhY3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8
PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2Uo
KSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7
CiAgICAgICAgIH0KIApAQCAtMjI1Niw2ICsyMzkwLDMxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRl
cm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgIC8v
IHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNzZXMgdGhlIGlucHV0
IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2
YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7CisKKyAgICAgICAgICAg
ICAgICBpZiAob3AubV9ibUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByYW5nZSA9
IG9wLm1fYm1JbmZvLT5maW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFk
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBbYmVnaW5JbmRleCwgZW5kSW5kZXhdID0gKnJhbmdlOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiRm91bmQg
d29ydGh3aGlsZSBjaGFyYWN0ZXIgc2VxdWVuY2UgZm9yIGxvb2thaGVhZCAoIiwgYmVnaW5JbmRl
eCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
ZW5kSW5kZXggPD0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byB2ZWN0b3IgPSBvcC5tX2JtSW5mby0+Y3JlYXRlQk1CeXRlVmVjdG9yKGJl
Z2luSW5kZXgsIGVuZEluZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9ibVNl
YXJjaEVudHJ5ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cih2ZWN0b3ItPmRhdGEoKSksIHJlZ1QxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWQ4KG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3MoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgLSBlbmRJbmRleCwgcmVnVDApLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDE2VW5hbGlnbmVkKG5lZ2F0
aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3MoKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gZW5k
SW5kZXgpICogMiwgcmVnVDApLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQz
MihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJh
c2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVn
aW5JbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVh
ZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3Rvcikp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVyIHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUg
aW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAgICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFw
cHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgb3AubV9yZWVu
dHJ5ID0gbGFiZWwoKTsKQEAgLTI3ODAsNiArMjkzOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoZW5kT3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAg
ICAgICAgICAgICAgICAgWWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdo
aWxlIChiZWdpbk9wLT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7
CkBAIC0yNzk3LDcgKzI5NTcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBp
ZiAob25jZVRocm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUu
bGlua1RvKGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9u
ZXh0T3BdLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEl0IGlzIGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZl
IGZhaWxlZCwganVtcCB0byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNr
dHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0
aXZlRmFpbHVyZXMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0
dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplCkBAIC0zNjA3LDYgKzM3NjcsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVz
WzBdLT5vbmNlVGhyb3VnaCgpKSB7CiAgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlh
cnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0
KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9i
bUluZm8gPSBudWxscHRyOwogCiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6
ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKQEAgLTM2NDMsNiArMzgwNCwxNSBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgc2l6ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXpl
KCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0
aXZlQmVnaW4pKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5k
OworICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOworICAgICAgICBpZiAo
ZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXpl
KSB7CisgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVu
c2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsK
KyAgICAgICAgICAgIGlmIChjb2xsZWN0Qk1JbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgeworICAgICAgICAgICAgICAgIG1fb3BzLmxhc3Qo
KS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKKyAgICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBw
ZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAx
OwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0
aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CkBAIC0zNjY4LDYgKzM4MzgsNjcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7
CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qk1JbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlz
anVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8p
CisgICAgeworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2Rl
Zi8sIHRoZW4gd2UgY2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yg
e2EsIGIsIGMsIGQsIGUsIGZ9LgorICAgICAgICAvLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2Ug
Y2FuIHNoaWZ0IDYgY2hhcmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3
YXkgY2FuIGJlIGV4dGVuZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0
aW9uLCBjaGFyYWN0ZXItY2xhc3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0
aGUgY2FzZSBvZiAvKD86YWJjfGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAg
ICAgICAvLyBhZ2FpbnN0IHthLCBiLCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJz
IGlmIGl0IGRvZXMgbm90IG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBUaGVuLCB0aGUg
YmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRo
ZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAg
IC8vIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywg
d2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVy
IGFnaW5zdCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNh
biBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5n
IGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2Vx
dWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1h
dGNoLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNo
YXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0
aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0
aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAg
ICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3
ZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAg
ICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBvbmx5IGNvbGxlY3QgdGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNq
dW5jdGlvbi4gV2Ugd2lsbCBleHRlbmQgaXQgdG8gc3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGco
PzpoaXxqaykpLy4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBh
bHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0
KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5h
dGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4
KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90
ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0
ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGlj
YWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90
U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBl
OjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5p
bnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFy
YWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5z
ZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVu
dAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRp
b25zIGFyZSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5w
YXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJh
Y3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRl
cm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVy
KHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZv
LnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0
KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytj
dXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxv
Z0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRV
bmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVT
U0lPTlMKQEAgLTM5NTIsMTQgKzQxODMsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAg
aWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAg
ICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAg
IGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5r
QnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxh
ciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1h
dGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJp
dFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVj
dG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNo
T25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQ
dHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAg
ICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2
LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBj
b2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFy
cjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIs
IFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9y
PFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxh
ciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUo
RklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4oV1RGTW92ZShtX2JtVmVjdG9yKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1
cmVSZWFzb24pCiAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJl
YXNvbigqbV9mYWlsdXJlUmVhc29uKTsKQEAgLTQxOTcsNiArNDQyOCw4IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogCiAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5l
YXIgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3Bz
OworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1JbmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3Rv
cjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPiwgND4gbV9ibVZlY3RvcjsKIAogICAgIC8vIFRoaXMg
cmVjb3JkcyB0aGUgY3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhl
IGN1cnJlbnQKICAgICAvLyBzZXQgb2YgYWx0ZXJuYXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGlu
LiBFLmcuIHdoZW4gbWF0Y2hpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgK
aW5kZXggZWYzOWM4YjQwNDUyZmQ4NWFhYmUzZTA3Mjk2NWMwZGYzZGJiMDlmNS4uYTJjOGQzYTM0
OTFkODk3OWM5YWJlYWE2ZDY5NjYxNTQ2NTE5ZTczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuaApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
WWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAog
CkBAIC01Niw2ICs1OCwxMCBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90
IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBC
TUJ5dGVWZWN0b3IgOiBwdWJsaWMgc3RkOjphcnJheTx1aW50OF90LCAxMjg+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBF
bmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4
dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAi
QyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArODQsMjkgQEAg
Y2xhc3MgWWFyckNvZGVCbG9jayB7CiAKICAgICBib29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4g
bV9yZWY4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYx
Ni5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZ
YXJyOEJpdFB0clRhZz4gcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2
ID0gcmVmOyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFy
cjhCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYg
bWFwKQorICAgIHsKKyAgICAgICAgbV9tYXA4ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3Jl
ZjggPSByZWY7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXAxNiA9IFdURk1vdmUobWFwKTsKKyAg
ICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hP
bmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRD
b2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lk
IHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAg
IHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0
Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5
OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVm
PEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0g
V1RGTW92ZShtYXApOworICAgICAgICBtX21hdGNoT25seTggPSBtYXRjaE9ubHk7CisgICAgfQor
ICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IFdU
Rk1vdmUobWFwKTsKKyAgICAgICAgbV9tYXRjaE9ubHkxNiA9IG1hdGNoT25seTsKKyAgICB9CiAK
ICAgICBib29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRl
cm5Db250ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCkBAIC0xNzYsNiArMTk4LDEwIEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgICAg
ICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAg
ICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4
Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKKyAgICAgICAgbV9tYXA4ID0gRml4ZWRW
ZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWFwMTYgPSBGaXhl
ZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlN
YXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1f
bWF0Y2hPbmx5TWFwMTYgPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsK
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtMTg0
LDYgKzIxMCwxMCBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8WWFycjE2Qml0UHRyVGFnPiBtX3JlZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAg
Rml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1fbWFwODsKKyAgICBGaXhlZFZl
Y3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXAxNjsKKyAgICBGaXhlZFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXRjaE9ubHlNYXA4OworICAgIEZpeGVkVmVjdG9y
PFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21hdGNoT25seU1hcDE2OwogICAgIGJvb2wgbV91
c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklU
RmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRl
ZTNkYzEyODc0ZjE5OGUxYmY0NTNmMjM3YTk5Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgx
N2UwZTM5YzJjNjlkOWMzNGRlYTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVl
UmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAg
VW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1VbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVl
UHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiBwdHIpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZy
b21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1
cm4gVW5pcXVlUmVmPFQ+KCpwdHIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+
KFdURk1vdmUocHRyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5
IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisg
ICAgVCogcHRyKCkgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVm
LmdldCgpOyB9CisgICAgVCogcHRyKCkgY29uc3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1f
cmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3Jl
Zik7IHJldHVybiAqbV9yZWY7IH0KICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVCht
X3JlZik7IHJldHVybiAqbV9yZWY7IH0KIApAQCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVl
UmVmIHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBm
cmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFy
Z3MmJi4uLik7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtl
VW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9u
TnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
VT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6
OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCisgICAgICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fcmVmKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VD4gbV9yZWY7CiB9OwogCg==
</data>
<flag name="commit-queue"
          id="456886"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434394</attachid>
            <date>2021-07-27 19:43:09 -0700</date>
            <delta_ts>2021-07-27 20:21:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727194309.patch</filename>
            <type>text/plain</type>
            <size>27368</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi5hMzY4YTZkODUxMDQwMjk1
Njg2MGFkMzc5Nzg4MDFmZWE2NzNlNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjpjb3VudCBjb25zdCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
TUJpdG1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpCTUluZm8pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCTUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJNSW5mbzo6c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVy
U2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86
OmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCBjb25zdCk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisKIDIwMjEtMDctMjYgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVtcG9yYWwgdG8g
ZmVhdHVyZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0
ZTgyLi42OWM5NjUzNGZkZTM0OGZhNDQ2MmU0MDU2YWMxOTRlM2Y1NWJlYjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0JpdFZlY3Rvci5j
cHA6CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogd3Rm
L0JpdG1hcC5oOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmR1bXAgY29uc3QpOgorICAgICAg
ICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZkZyb21Ob25O
dWxsVW5pcXVlUHRyKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorCiAy
MDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgcmV2ZXJ0IG9mIHIyODAxOTMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggOGI1MDFlZTM0MDc1NDhlNGE0ZTFhMGQ3MDU4OTg0
ZDhkMmY2NWI5Yi4uYWU1MTQ1ZmQ5N2I1NDI4ZjdhZDlhM2U0ODU0MTQ5MzY5MTQxYmFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDE3
ICszNSwxNDMgQEAKICNpbmNsdWRlICJZYXJyRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiWWFy
ck1hdGNoaW5nQ29udGV4dEhvbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Cisj
aW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7Citu
YW1lc3BhY2UgWWFyckpJVEludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3Nl
ID0gdHJ1ZTsKK30KIAogI2lmIENQVShBUk02NEUpCiBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElP
TihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVy
KTsKICNlbmRpZgogCitjbGFzcyBCTUJpdG1hcCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoQk1CaXRtYXApOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFw
U2l6ZSA9IDEyODsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1hcE1hc2sgPSAxMjgg
LSAxOworICAgIHVzaW5nIE1hcCA9IEJpdG1hcDxtYXBTaXplPjsKKworICAgIEJNQml0bWFwKCkg
PSBkZWZhdWx0OworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50
OyB9CisgICAgY29uc3QgTWFwJiBtYXAoKSBjb25zdCB7IHJldHVybiBtX21hcDsgfQorCisgICAg
dm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb3Np
dGlvbiA9IGNoYXJhY3RlciAmIG1hcE1hc2s7CisgICAgICAgIGlmICghbV9tYXAuZ2V0KHBvc2l0
aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAgICAgICsr
bV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9tYXAgeyB9
OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07Cit9OworCitjbGFzcyBCTUluZm8geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJNSW5mbyk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoQk1JbmZvKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heExl
bmd0aCA9IDMyOworCisgICAgZXhwbGljaXQgQk1JbmZvKHVuc2lnbmVkIGxlbmd0aCkKKyAgICAg
ICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPmxl
bmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEJN
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJNSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1
ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIEJNQml0bWFwOjpNYXAgY3JlYXRlQ2FuZGlk
YXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCitwcml2YXRl
OgorICAgIHN0ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IGZpbmRCZXN0Q2hhcmFj
dGVyU2VxdWVuY2UodW5zaWduZWQgbnVtYmVyT2ZDYW5kaWRhdGVzTGltaXQpIGNvbnN0OworCisg
ICAgVmVjdG9yPEJNQml0bWFwPiBtX2NoYXJhY3RlcnM7Cit9OworCitzdGQ6OnR1cGxlPGludCwg
dW5zaWduZWQsIHVuc2lnbmVkPiBCTUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UodW5z
aWduZWQgbnVtYmVyT2ZDYW5kaWRhdGVzTGltaXQpIGNvbnN0Cit7CisgICAgaW50IGJpZ2dlc3RQ
b2ludCA9IDA7CisgICAgdW5zaWduZWQgYmVnaW5SZXN1bHQgPSAwOworICAgIHVuc2lnbmVkIGVu
ZFJlc3VsdCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3Ro
KCk7KSB7CisgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hhcmFjdGVyc1tp
bmRleF0uY291bnQoKSA+IG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KQorICAgICAgICAgICAgKytp
bmRleDsKKyAgICAgICAgaWYgKGluZGV4ID09IGxlbmd0aCgpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHVuc2lnbmVkIGJlZ2luID0gaW5kZXg7CisgICAgICAgIEJNQml0bWFwOjpNYXAg
bWFwIHsgfTsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJz
W2luZGV4XS5jb3VudCgpIDw9IG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0OyArK2luZGV4KQorICAg
ICAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0ubWFwKCkpOworCisgICAgICAg
IC8vIElmIG1hcCBoYXMgbWFueSBjYW5kaWRhdGVzLCB0aGVuIHBvaW50IG9mIHRoaXMgc2VxdWVu
Y2UgaXMgbG93IHNpbmNlIGl0IHdpbGwgbWF0Y2ggdG9vIG1hbnkgdGhpbmdzLgorICAgICAgICAv
LyBBbmQgaWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciwgdGhlbiB0aGUgcG9pbnQgb2YgdGhpcyBz
ZXF1ZW5jZSBpcyBoaWdoZXIgc2luY2UgaXQgY2FuIHNraXAgbWFueSBjaGFyYWN0ZXJzLgorICAg
ICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIGFyZSBoYW5kbGluZyBhbGwgY2hhcmFjdGVycyBl
cXVhbGx5LiBCdXQgd2Ugc2hvdWxkIGhhdmUgd2VpZ2h0IHBlciBjaGFyYWN0ZXIgc2luY2UgZS5n
LiAnZScgc2hvdWxkIGFwcGVhciBtb3JlIGZyZXF1ZW50bHkgdGhhbiAnXHYnLgorICAgICAgICBp
bnQgZnJlcXVlbmN5ID0gbWFwLmNvdW50KCk7CisgICAgICAgIGludCBtYXRjaGluZ1Byb2JhYmls
aXR5ID0gQk1CaXRtYXA6Om1hcFNpemUgLSBmcmVxdWVuY3k7CisgICAgICAgIGludCBwb2ludCA9
IChpbmRleCAtIGJlZ2luKSAqIG1hdGNoaW5nUHJvYmFiaWxpdHk7CisgICAgICAgIGlmIChwb2lu
dCA+IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gcG9pbnQ7Cisg
ICAgICAgICAgICBiZWdpblJlc3VsdCA9IGJlZ2luOworICAgICAgICAgICAgZW5kUmVzdWx0ID0g
aW5kZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0
UG9pbnQsIGJlZ2luUmVzdWx0LCBlbmRSZXN1bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6
OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD4+IEJNSW5mbzo6ZmluZFdvcnRod2hpbGVDaGFyYWN0
ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0Cit7CisgICAgLy8gSWYgY2FuZGlhdGVzLXBl
ci1jaGFyYWN0ZXIgYmVjb21lcyBsYXJnZXIsIHRoZW4gc2VxdWVuY2UgaXMgbm90IHByb2ZpdGFi
bGUgc2luY2UgdGhpcyBzZXF1ZW5jZSB3aWxsIG1hdGNoIGFnYWluc3QKKyAgICAvLyB0b28gbWFu
eSBjaGFyYWN0ZXJzLiBCdXQgaWYgd2UgbGltaXQgY2FuZGlhdGVzLXBlci1jaGFyYWN0ZXIgc21h
bGxlciwgaXQgaXMgcG9zc2libGUgdGhhdCB3ZSBvbmx5IGZpbmQgdmVyeSBzaG9ydAorICAgIC8v
IGNoYXJhY3RlciBzZXF1ZW5jZS4gV2Ugc3RhcnQgd2l0aCBsb3cgbGltaXQsIHRoZW4gZW5sYXJn
aW5nIHRoZSBsaW1pdCB0byBmaW5kIG1vcmUgYW5kIG1vcmUgcHJvZml0YWJsZQorICAgIC8vIGNo
YXJhY3RlciBzZXF1ZW5jZS4KKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25l
ZCBiZWdpbiA9IDA7CisgICAgdW5zaWduZWQgZW5kID0gMDsKKyAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4Q2FuZGlkYXRlc1BlckNoYXJhY3RlciA9IDMyOworICAgIGZvciAodW5zaWduZWQgbGlt
aXQgPSA0OyBsaW1pdCA8IG1heENhbmRpZGF0ZXNQZXJDaGFyYWN0ZXI7IGxpbWl0ICo9IDIpIHsK
KyAgICAgICAgYXV0byBbbmV3UG9pbnQsIG5ld0JlZ2luLCBuZXdFbmRdID0gZmluZEJlc3RDaGFy
YWN0ZXJTZXF1ZW5jZShsaW1pdCk7CisgICAgICAgIGlmIChuZXdQb2ludCA+IGJpZ2dlc3RQb2lu
dCkgeworICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gbmV3UG9pbnQ7CisgICAgICAgICAgICBi
ZWdpbiA9IG5ld0JlZ2luOworICAgICAgICAgICAgZW5kID0gbmV3RW5kOworICAgICAgICB9Cisg
ICAgfQorICAgIGlmICghYmlnZ2VzdFBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgYmVnaW4sIGVuZCB9OworfQorCitCTUJpdG1hcDo6
TWFwIEJNSW5mbzo6Y3JlYXRlQ2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25l
ZCBlbmQpIGNvbnN0Cit7CisgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9OworICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSBiZWdpbjsgaW5kZXggPCBlbmQ7ICsraW5kZXgpCisgICAgICAgIG1hcC5t
ZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCiBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODExLDYgKzkzOCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBpbnRvIHRoZSBjb2RlIGZvciBhIG5vZGUgKGxp
a2VseSB3aGVyZSBhIGJhY2t0cmFjayB3aWxsIHRyaWdnZXIKICAgICAgICAgLy8gcmVtYXRjaGlu
ZykuCiAgICAgICAgIExhYmVsIG1fcmVlbnRyeTsKKyAgICAgICAgTGFiZWwgbV9ibVNlYXJjaEVu
dHJ5OwogICAgICAgICBKdW1wTGlzdCBtX2p1bXBzOwogCiAgICAgICAgIC8vIFVzZWQgZm9yIGJh
Y2t0cmFja2luZyB3aGVuIHRoZSBwcmlvciBhbHRlcm5hdGl2ZSBkaWQgbm90IGNvbnN1bWUgYW55
CkBAIC04MzAsNiArOTU4LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIHZhbHVlIHRo
YXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRvIHJldHVybiB0bywK
ICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4K
ICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAgICAgICBCTUluZm8q
IG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0ZQpAQCAtMTQxMCw3
ICsxNTQwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFsbENoYXJhY3RlcnMg
fD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8PCBzaGlmdEFtb3Vu
dCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSkgJiYgKGlzQVND
SUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLmln
bm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlcikpCiAgICAgICAgICAg
ICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7CiAgICAgICAgIH0K
IApAQCAtMjI1NiwxMSArMjM4Niw1MCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAg
ICAvLyBVcG9uIGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0ZXJuYXRpdmVzLCBj
aGVjayBpZiBpbnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAvLyB0byBydW4gdGhl
IGZpcnN0IGFsdGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1dCBwb3NpdGlvbiku
CiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1
dChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkpOworICAgICAgICAgICAgICAgIG1fY2hlY2tl
ZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKworICAgICAgICAgICAgICAg
IGlmIChvcC5tX2JtSW5mbykgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHJhbmdlID0gb3Au
bV9ibUluZm8tPmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIFtiZWdpbkluZGV4LCBlbmRJbmRleF0gPSAqcmFuZ2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoZW5kSW5kZXggPD0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hcCA9IG9wLm1fYm1JbmZvLT5jcmVhdGVD
YW5kaWRhdGVCaXRtYXAoYmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hcC5jb3VudCgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVQ2hhcjMyIGNoYXJhY3RlciA9IG1hcC5maW5kQml0KDAsIHRydWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0gQk1CaXRtYXA6Ok1hcDo6c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJu
YWw6OnZlcmJvc2UsICJGb3VuZCBzaW5nbGUgY2hhcmFjdGVyIGxvb2thaGVhZCBjaGFyYWN0ZXI6
KDB4IiwgaGV4KGNoYXJhY3RlciksICIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJ
bmRleCwgIikiKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fYm1TZWFyY2hF
bnRyeSA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVh
ZCA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3Rlciht
X2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwg
cmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5j
aDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
ZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVt
cCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHZlY3RvciA9IG1ha2VVbmlxdWVSZWY8Qk1C
eXRlVmVjdG9yPigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvci0+ZmlsbCgw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJu
YWw6OnZlcmJvc2UsICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXAuY291bnQo
KSwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9ibVNlYXJjaEVudHJ5ID0gbGFiZWwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodmVjdG9yLT5kYXRh
KCkpLCByZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9
IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2No
ZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVn
VDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5jaFRl
c3QzMihOb25aZXJvLCBCYXNlSW5kZXgocmVnVDEsIHJlZ1QwLCBUaW1lc09uZSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxl
SW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Ym1WZWN0b3IuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgICAgICAvLyBXZSB3aWxsIHJlZW50ZXIgYWZ0ZXIgdGhlIGNoZWNrLCBhbmQgYXNzdW1lIHRo
ZSBpbnB1dCBwb3NpdGlvbiB0byBoYXZlIGJlZW4KICAgICAgICAgICAgICAgICAvLyBzZXQgYXMg
YXBwcm9wcmlhdGUgdG8gdGhpcyBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAgICAgICBvcC5tX3Jl
ZW50cnkgPSBsYWJlbCgpOwotCi0gICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVOZXh0
OgpAQCAtMjc4MCw2ICsyOTQ5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBZYXJyT3AmIGVu
ZE9wID0gbV9vcHNbb3AubV9uZXh0T3BdOworICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC5t
X29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCk7CiAKICAgICAgICAgICAgICAg
ICBZYXJyT3AqIGJlZ2luT3AgPSAmb3A7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGJlZ2luT3At
Pm1fb3AgIT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pIHsKQEAgLTI3OTcsNyAr
Mjk2Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGlmIChvbmNlVGhyb3Vn
aCkKICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rVG8oZW5kT3Au
bV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fcGF0dGVybi5zdGlja3koKSAmJiBtX29wc1tvcC5tX25leHRPcF0ubV9vcCA9
PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1fcGF0dGVybi5zdGlja3koKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQg
aXMgYSBzdGlja3kgcGF0dGVybiBhbmQgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgZmFpbGVkLCBqdW1w
IHRvIHRoZSBlbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRl
LnRha2VCYWNrdHJhY2tzVG9KdW1wTGlzdChsYXN0U3RpY2t5QWx0ZXJuYXRpdmVGYWlsdXJlcywg
dGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wYXR0ZXJuLm1fYm9keS0+
bV9oYXNGaXhlZFNpemUKQEAgLTM2MDcsNiArMzc3Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJv
dWdoKCkpIHsKICAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9k
eUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3Vz
T3AgPSBub3RGb3VuZDsKKyAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxw
dHI7CiAKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5k
ZXggPSBtX29wcy5zaXplKCkgLSAxOwpAQCAtMzY0Myw2ICszODE0LDE1IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICBzaXplX3QgcmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAg
bV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwog
ICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgIG1f
b3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+
bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAg
ICAgIGF1dG8gYm1JbmZvID0gQk1JbmZvOjpjcmVhdGUoc3RkOjptaW48dW5zaWduZWQ+KGRpc2p1
bmN0aW9uLT5tX21pbmltdW1TaXplLCBCTUluZm86Om1heExlbmd0aCkpOworICAgICAgICAgICAg
aWYgKGNvbGxlY3RCTUluZm8oZGlzanVuY3Rpb24sIGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBi
bUluZm8uZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0g
Ym1JbmZvLnB0cigpOworICAgICAgICAgICAgICAgIG1fYm1JbmZvcy5hcHBlbmQoV1RGTW92ZShi
bUluZm8pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CiAgICAgICAgICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRB
bHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKQEAgLTM2NjgsNiArMzg0OCw2NyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gcmVwZWF0TG9vcDsKICAgICB9CiAKKyAg
ICBib29sIGNvbGxlY3RCTUluZm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6
ZV90IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBCTUluZm8mIGJtSW5mbykKKyAgICB7CisgICAg
ICAgIC8vIElmIHdlIGhhdmUgYSBzZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBj
YW4gY2hlY2sgdGhlIDZ0aCBjaGFyYWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwg
ZSwgZn0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBj
aGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBzdHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0
ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQKKyAgICAgICAgLy8gZGlzanVuY3Rpb24sIGNoYXJhY3Rl
ci1jbGFzcywgYW5kIGlnbm9yZS1jYXNlcy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8o
PzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVjayAzcmQgY2hhcmFjdGVyCisgICAgICAgIC8vIGFnYWlu
c3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFuZCBzaGlmdCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBu
b3QgbWF0Y2guCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZW4sIHRoZSBiZXN0IHdheSB0byBw
ZXJmb3JtIHRoZSBhYm92ZSBzaGlmdGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hh
cmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAgICAgICAgLy8gbWFueSBjYW5k
aWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAvW2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFj
dCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5kIGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdpbnN0IHthfS4K
KyAgICAgICAgLy8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNoaWZ0IDcgY2hh
cmFjdGVycyAobGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMgYmV0dGVyIHRo
YW4gdXNpbmcgIlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICAvLyBzZXF1ZW5jZSBhbmQge2Et
en0gc2V0IHNpbmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisgICAgICAg
IC8vCisgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3Ig
ZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFj
dCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0
cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAgICAgIEFTU0VSVChk
aXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAvLyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9y
dCBmaXhlZC1zaXplZCBsb29rYWhlYWQgZm9yIEJNIHNlYXJjaC4KKyAgICAgICAgQVNTRVJUKGRp
c2p1bmN0aW9uLT5tX21pbmltdW1TaXplKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5
IHdlIG9ubHkgY29sbGVjdCB0aGUgc2hhbGxvdyAxLWRlcHRoIG9mIGRpc2p1bmN0aW9uLiBXZSB3
aWxsIGV4dGVuZCBpdCB0byBzdXBwb3J0IGxpa2UgLyg/OmFiY3xkZWZ8Zyg/OmhpfGprKSkvLgor
ICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7
CisgICAgICAgIGZvciAoOyBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA8IGFsdGVybmF0aXZlcy5z
aXplKCk7ICsrY3VycmVudEFsdGVybmF0aXZlSW5kZXgpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGN1cnNvciA9IDA7CisgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZl
ID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0aXZlLT5tX3Rlcm1z
LnNpemUoKSAmJiBjdXJzb3IgPCBibUluZm8ubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBQYXR0ZXJuVGVybSYgdGVybSA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zW2luZGV4XTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0udHlwZSkgeworICAgICAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKKyAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoK
KyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJl
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjogeworICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQg
fHwgdGVybS5xdWFudGl0eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlucHV0UG9zaXRpb24g
IT0gaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChVMTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAm
JiBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBh
cmVzLCBub24tYXNjaWkgY2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CisgICAgICAgICAg
ICAgICAgICAgIC8vIHVwcGVyICYgbG93ZXIgY2FzZSByZXByZXNlbnRhdGlvbnMgYXJlIGNvbnZl
cnRlZCB0byBhIGNoYXJhY3RlciBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFt
X3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9u
aWNhbE1vZGUpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNl
KCkgJiYgaXNBU0NJSUFscGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0b0FTQ0lJVXBwZXIodGVybS5wYXR0ZXJu
Q2hhcmFjdGVyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwg
dG9BU0NJSUxvd2VyKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJt
LnBhdHRlcm5DaGFyYWN0ZXIpOworICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihZYXJySklU
SW50ZXJuYWw6OnZlcmJvc2UsICJDaGFyYWN0ZXJzIGNvbGxlY3RlZCIpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKICAgICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0
ZXJIZWxwZXIoKQogICAgIHsKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMzk1
MiwxNCArNDE5MywxNCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9jb21waWxl
TW9kZSA9PSBKSVRDb21waWxlTW9kZTo6TWF0Y2hPbmx5KSB7CiAgICAgICAgICAgICBpZiAobV9j
aGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNl
dDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJN
YXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24i
KSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFM
SVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0
Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVm
PEJNQnl0ZVZlY3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpF
X1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgIk1hdGNo
LW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2Rl
QmxvY2suc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZm
ZXIsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgIk1hdGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIg
ZXhwcmVzc2lvbiIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92
ZShtX2JtVmVjdG9yKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1fY2hh
clNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4
Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyOEJpdFB0clRhZywg
IjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2su
c2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJU
YWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RF
KGxpbmtCdWZmZXIsIFlhcnIxNkJpdFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24i
KSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdF
WFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1f
Ym1WZWN0b3IpKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZmFpbHVyZVJlYXNvbikKICAg
ICAgICAgICAgIGNvZGVCbG9jay5zZXRGYWxsQmFja1dpdGhGYWlsdXJlUmVhc29uKCptX2ZhaWx1
cmVSZWFzb24pOwpAQCAtNDE5Nyw2ICs0NDM4LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAv
LyBUaGUgcmVndWxhciBleHByZXNzaW9uIGV4cHJlc3NlZCBhcyBhIGxpbmVhciBzZXF1ZW5jZSBv
ZiBvcGVyYXRpb25zLgogICAgIFZlY3RvcjxZYXJyT3AsIDEyOD4gbV9vcHM7CisgICAgVmVjdG9y
PFVuaXF1ZVJlZjxCTUluZm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxC
TUJ5dGVWZWN0b3I+LCA0PiBtX2JtVmVjdG9yOwogCiAgICAgLy8gVGhpcyByZWNvcmRzIHRoZSBj
dXJyZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUgY3VycmVudAogICAg
IC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBt
YXRjaGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCBlZjM5Yzhi
NDA0NTJmZDg1YWFiZTNlMDcyOTY1YzBkZjNkYmIwOWY1Li5hMmM4ZDNhMzQ5MWQ4OTc5YzlhYmVh
YTZkNjk2NjE1NDY1MTllNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBA
IC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5j
bHVkZSAiWWFyclBhdHRlcm4uaCIKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzU4
LDEwIEBAIGVudW0gY2xhc3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1
dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSwKIH07CiAKK2NsYXNzIEJNQnl0ZVZlY3RvciA6
IHB1YmxpYyBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEyOD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworfTsKKwogI2lmIENQVShBUk02NEUpCiBleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJl
c3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRj
aGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOwogZXh0ZXJuICJDIiB2b2lkIHZtRW50
cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKQEAgLTc4LDEzICs4NCwyOSBAQCBjbGFzcyBZYXJyQ29k
ZUJsb2NrIHsKIAogICAgIGJvb2wgaGFzOEJpdENvZGUoKSB7IHJldHVybiBtX3JlZjguc2l6ZSgp
OyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGUoKSB7IHJldHVybiBtX3JlZjE2LnNpemUoKTsgfQot
ICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFn
PiByZWYpIHsgbV9yZWY4ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0KKyAg
ICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4g
cmVmLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgewor
ICAgICAgICBtX21hcDggPSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fcmVmOCA9IHJlZjsKKyAg
ICB9CisgICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJp
dFB0clRhZz4gcmVmLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXAp
CisgICAgeworICAgICAgICBtX21hcDE2ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3JlZjE2
ID0gcmVmOworICAgIH0KIAogICAgIGJvb2wgaGFzOEJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVy
biBtX21hdGNoT25seTguc2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGVNYXRjaE9ubHko
KSB7IHJldHVybiBtX21hdGNoT25seTE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGVN
YXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBt
YXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9Ci0gICAgdm9pZCBzZXQxNkJp
dENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0
clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0KKyAgICB2b2lk
IHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4gbWF0Y2hPbmx5LCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4mJiBtYXApCisgICAgeworICAgICAgICBtX21hdGNoT25seU1hcDggPSBXVEZNb3ZlKG1hcCk7
CisgICAgICAgIG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsKKyAgICB9CisgICAgdm9pZCBzZXQx
NkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJp
dFB0clRhZz4gbWF0Y2hPbmx5LCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4m
JiBtYXApCisgICAgeworICAgICAgICBtX21hdGNoT25seU1hcDE2ID0gV1RGTW92ZShtYXApOwor
ICAgICAgICBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OworICAgIH0KIAogICAgIGJvb2wgdXNl
c1BhdHRlcm5Db250ZXh0QnVmZmVyKCkgeyByZXR1cm4gbV91c2VzUGF0dGVybkNvbnRleHRCdWZm
ZXI7IH0KICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKQEAgLTE3
Niw2ICsxOTgsMTAgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgICAgIG1fcmVmMTYgPSBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNo
T25seTggPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+KCk7
CiAgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNo
T25seTE2Qml0UHRyVGFnPigpOworICAgICAgICBtX21hcDggPSBGaXhlZFZlY3RvcjxVbmlxdWVS
ZWY8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXAxNiA9IEZpeGVkVmVjdG9yPFVuaXF1
ZVJlZjxCTUJ5dGVWZWN0b3I+PigpOworICAgICAgICBtX21hdGNoT25seU1hcDggPSBGaXhlZFZl
Y3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAx
NiA9IEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PigpOwogICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xODQsNiArMjEwLDEwIEBA
IGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZC
aXRQdHJUYWc+IG1fcmVmMTY7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9u
bHk4Qml0UHRyVGFnPiBtX21hdGNoT25seTg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbV9tYXRjaE9ubHkxNjsKKyAgICBGaXhlZFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXA4OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJl
ZjxCTUJ5dGVWZWN0b3I+PiBtX21hcDE2OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5
dGVWZWN0b3I+PiBtX21hdGNoT25seU1hcDg7CisgICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+IG1fbWF0Y2hPbmx5TWFwMTY7CiAgICAgYm9vbCBtX3VzZXNQYXR0ZXJuQ29u
dGV4dEJ1ZmZlciB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxKSVRGYWlsdXJlUmVhc29u
PiBtX2ZhaWx1cmVSZWFzb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVj
dG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKaW5kZXggM2NlNjhmYzFiZDdk
MmQwZmYyOWZiNmVjZTAwYmIxYTVkZmIxMzdiNy4uMzkxNjEyMTE2ZWY4NjZjYjUwNTQ1YzM3NzQy
NTJiYThlZTQ1MDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCkBAIC0yNjIsMTIgKzI2Miw4IEBAIHVp
bnRwdHJfdCBCaXRWZWN0b3I6Omhhc2hTbG93Q2FzZSgpIGNvbnN0CiAKIHZvaWQgQml0VmVjdG9y
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZ2V0KGkpKQotICAgICAgICAgICAgb3V0
LnByaW50ZigiMSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCItIik7
Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAg
IG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIGIvU291cmNlL1dURi93dGYvQml0
bWFwLmgKaW5kZXggOGYxMzI3YTQ3NDEyZmQyYWRkNGVhZjU5YjFmNWFlZTM2ZGZmMWE4Ni4uYzUw
MTEwYjVkZWExM2NlNGJhNWJhZGEzZTQ5ZWI3MWY1YzFkMjdhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVu
Y3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC0xMzAsNiArMTMxLDggQEAgY2xhc3Mg
Qml0bWFwIGZpbmFsIHsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3b3JkcyA9IChiaXRtYXBTaXplICsgd29yZFNpemUgLSAx
KSAvIHdvcmRTaXplOwpAQCAtNTA3LDYgKzUxMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisg
ICAgICAgIG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpCaXRtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmluZGV4IGM0ZWUzZGMxMjg3
NGYxOThlMWJmNDUzZjIzN2E5OWNmNDc2NzZkZTQuLjkzNWQwNmM2NjlkZDRjZWU4MTdlMGUzOWMy
YzY5ZDljMzRkZWEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC00Niw5ICs0Niw5IEBAIFVuaXF1ZVJl
ZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6
OnVuaXF1ZV9wdHI8VD4gcHRyKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCiB7Ci0gICAgcmV0dXJuIFVuaXF1
ZVJlZjxUPigqcHRyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPihXVEZNb3Zl
KHB0cikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjcsNiArNjcsOSBAQCBjbGFz
cyBVbmlxdWVSZWYgewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0KIAorICAgIFQqIHB0
cigpIFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsg
fQorICAgIFQqIHB0cigpIGNvbnN0IFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJl
dHVybiBtX3JlZi5nZXQoKTsgfQorCiAgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1
cm4gKm1fcmVmOyB9CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyBy
ZXR1cm4gKm1fcmVmOyB9CiAKQEAgLTgzLDkgKzg2LDE1IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAK
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVu
aXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4p
OwotICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJl
ZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlx
dWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+JiYpOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVu
ZCBjbGFzcyBVbmlxdWVSZWY7CiAKKyAgICBleHBsaWNpdCBVbmlxdWVSZWYoc3RkOjp1bmlxdWVf
cHRyPFQ+JiYgcHRyKQorICAgICAgICA6IG1fcmVmKFdURk1vdmUocHRyKSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVm
OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434397</attachid>
            <date>2021-07-27 20:21:25 -0700</date>
            <delta_ts>2021-07-27 20:45:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727202124.patch</filename>
            <type>text/plain</type>
            <size>29451</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi42ZTFhODYyY2ZjZDVlMDM3
MWZlYzExYWQ2YjMyODQ3NjM5Njg4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCTUJpdG1hcDo6Y291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUJpdG1hcDo6
bWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1CaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZv
OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OnNldCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1J
bmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAg
Y29uc3QpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2Rl
QmxvY2s6OnNldDE2Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6
OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9j
azo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVC
bG9jazo6Y2xlYXIpOgorCiAyMDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIFRlbXBvcmFsIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDU0
YTNmMGViYTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4uNjljOTY1MzRmZGUzNDhmYTQ0
NjJlNDA1NmFjMTk0ZTNmNTViZWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0yNyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIg
c2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGOjpCaXRW
ZWN0b3I6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6Cisg
ICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cik6CisgICAgICAg
IChXVEY6OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZl
IHJldmVydCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEyMjRlMTg5YWNkZTkxZTc4Li4x
YjljMTAxODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBib29s
IGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoVW5zaWduZWQsIHByb3RvdHlw
ZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJOdW1iZXIgb2YgcHJvdG90eXBl
IHByb3BlcnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5cGUgaW4gdGhlIExMSW50LiBB
IGNvdW50IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1
bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9y
bWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4
IDhiNTAxZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLjlmMTg0YmMyZGZiNzc4
NmZlM2ZiNzg1OWRlYmQ1NjFlNjM4ZTM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTQzIEBACiAjaW5jbHVkZSAiWWFy
ckRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAjaWYgQ1BVKEFS
TTY0RSkKIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfdm1FbnRyeVRvWWFy
ckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpOwogI2VuZGlmCiAKK2NsYXNzIEJNQml0
bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUJpdG1hcCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBTaXplID0gMTI4OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWFwTWFzayA9IDEyOCAtIDE7CisgICAgdXNpbmcgTWFwID0gQml0
bWFwPG1hcFNpemU+OworCisgICAgQk1CaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25l
ZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBNYXAmIG1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisKKyAgICB2b2lkIGFkZChVQ2hhcjMyIGNoYXJhY3Rl
cikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gY2hhcmFjdGVyICYgbWFwTWFz
azsKKyAgICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21h
cC5zZXQocG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAg
fQorCitwcml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIEJNSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQk1J
bmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUluZm8pOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMzI7CisKKyAgICBleHBsaWNp
dCBCTUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhsZW5ndGgp
CisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMu
c2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIpOwor
ICAgIH0KKworICAgIHN0YXRpYyBVbmlxdWVSZWY8Qk1JbmZvPiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Qk1JbmZvPihsZW5ndGgp
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWdu
ZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3Q7
CisgICAgQk1CaXRtYXA6Ok1hcCBjcmVhdGVDYW5kaWRhdGVCaXRtYXAodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp0dXBsZTxpbnQsIHVu
c2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1i
ZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0b3I8Qk1CaXRtYXA+IG1fY2hh
cmFjdGVyczsKK307CisKK3N0ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IEJNSW5m
bzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNM
aW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25lZCBi
ZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hpbGUgKGlu
ZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVtYmVyT2ZD
YW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAoaW5kZXgg
PT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgYmVnaW4g
PSBpbmRleDsKKyAgICAgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9OworICAgICAgICBmb3IgKDsg
aW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPD0gbnVtYmVy
T2ZDYW5kaWRhdGVzTGltaXQ7ICsraW5kZXgpCisgICAgICAgICAgICBtYXAubWVyZ2UobV9jaGFy
YWN0ZXJzW2luZGV4XS5tYXAoKSk7CisKKyAgICAgICAgLy8gSWYgbWFwIGhhcyBtYW55IGNhbmRp
ZGF0ZXMsIHRoZW4gcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBsb3cgc2luY2UgaXQgd2lsbCBt
YXRjaCB0b28gbWFueSB0aGluZ3MuCisgICAgICAgIC8vIEFuZCBpZiB0aGUgc2VxdWVuY2UgaXMg
bG9uZ2VyLCB0aGVuIHRoZSBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGhpZ2hlciBzaW5jZSBp
dCBjYW4gc2tpcCBtYW55IGNoYXJhY3RlcnMuCisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
d2UgYXJlIGhhbmRsaW5nIGFsbCBjaGFyYWN0ZXJzIGVxdWFsbHkuIEJ1dCB3ZSBzaG91bGQgaGF2
ZSB3ZWlnaHQgcGVyIGNoYXJhY3RlciBzaW5jZSBlLmcuICdlJyBzaG91bGQgYXBwZWFyIG1vcmUg
ZnJlcXVlbnRseSB0aGFuICdcdicuCisgICAgICAgIGludCBmcmVxdWVuY3kgPSBtYXAuY291bnQo
KTsKKyAgICAgICAgaW50IG1hdGNoaW5nUHJvYmFiaWxpdHkgPSBCTUJpdG1hcDo6bWFwU2l6ZSAt
IGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4IC0gYmVnaW4pICogbWF0Y2hp
bmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAg
ICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAgICAgIGJlZ2luUmVzdWx0ID0g
YmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwgYmVnaW5SZXN1bHQsIGVuZFJl
c3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVk
Pj4gQk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdl
ciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJvZml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdp
bGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRvbyBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBs
aW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0
IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0CisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBz
dGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBlbmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9y
ZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGlu
dCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFj
dGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlk
YXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0gMikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwg
bmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAg
ICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0
UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAgICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAg
ICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9p
bnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUg
eyBiZWdpbiwgZW5kIH07Cit9CisKK0JNQml0bWFwOjpNYXAgQk1JbmZvOjpjcmVhdGVDYW5kaWRh
dGVCaXRtYXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBCTUJp
dG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRl
eCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0u
bWFwKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAjaWYgQ1BV
KEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTU3LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRv
IHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBk
aXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAg
ICAgICBCTUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0
ZQpAQCAtMTQxMCw3ICsxNTM5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFs
bENoYXJhY3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8
PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2Uo
KSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7
CiAgICAgICAgIH0KIApAQCAtMjI1NiwxMSArMjM4NSw1NCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAvLyBVcG9uIGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0
ZXJuYXRpdmVzLCBjaGVjayBpZiBpbnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAv
LyB0byBydW4gdGhlIGZpcnN0IGFsdGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1
dCBwb3NpdGlvbikuCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9B
dmFpbGFibGVJbnB1dChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkpOworICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKwogICAg
ICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVlbnRlciBhZnRlciB0aGUgY2hlY2ssIGFuZCBhc3N1
bWUgdGhlIGlucHV0IHBvc2l0aW9uIHRvIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgIC8vIHNl
dCBhcyBhcHByb3ByaWF0ZSB0byB0aGlzIGFsdGVybmF0aXZlLgogICAgICAgICAgICAgICAgIG9w
Lm1fcmVlbnRyeSA9IGxhYmVsKCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1f
Ym1JbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+
ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2Jl
Z2luSW5kZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChlbmRJbmRleCA8PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbWFwID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJp
dG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcENvdW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyICE9IEJNQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIxID0gbWFwLmZpbmRCaXQoMCwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIyID0gMHhmZjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPT0gMikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyMiA9IG1hcC5maW5kQml0KGNoYXJhY3RlcjEgKyAxLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIDEtb3ItMiBjaGFyYWN0ZXJzIGxvb2th
aGVhZCBjaGFyYWN0ZXI6KDB4IiwgaGV4KGNoYXJhY3RlcjEpLCAiKSxjaGFyYWN0ZXIyOigiLCBo
ZXgoY2hhcmFjdGVyMiksICIpcmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAi
KSIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVu
ZEluZGV4ICsgMSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRy
dXN0ZWRJbW0zMihCTUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QwLCBU
cnVzdGVkSW1tMzIoY2hhcmFjdGVyMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobWFwQ291bnQgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hl
ZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoY2hhcmFjdGVyMikp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZO
b0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB2ZWN0b3IgPSBt
YWtlVW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZWN0b3ItPmZpbGwoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9v
a2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIs
IGVuZEluZGV4LCAiKSIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKHZlY3Rvci0+ZGF0YSgpKSwgcmVnVDEpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEJNQml0bWFw
OjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdU
MCwgVGltZXNPbmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFw
cGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVOZXh0OgpAQCAtMjc4MCw2ICsy
OTUyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBZYXJyT3AmIGVuZE9wID0gbV9vcHNbb3Au
bV9uZXh0T3BdOworICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC5tX29wID09IFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCk7CiAKICAgICAgICAgICAgICAgICBZYXJyT3AqIGJlZ2lu
T3AgPSAmb3A7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGJlZ2luT3AtPm1fb3AgIT0gWWFyck9w
Q29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pIHsKQEAgLTI3OTcsNyArMjk3MCw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGlmIChvbmNlVGhyb3VnaCkKICAgICAgICAgICAg
ICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rVG8oZW5kT3AubV9yZWVudHJ5LCB0aGlz
KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0
dGVybi5zdGlja3koKSAmJiBtX29wc1tvcC5tX25leHRPcF0ubV9vcCA9PSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVFbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5z
dGlja3koKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgYSBzdGlja3kgcGF0
dGVybiBhbmQgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgZmFpbGVkLCBqdW1wIHRvIHRoZSBlbmQuCiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLnRha2VCYWNrdHJhY2tz
VG9KdW1wTGlzdChsYXN0U3RpY2t5QWx0ZXJuYXRpdmVGYWlsdXJlcywgdGhpcyk7CiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUK
QEAgLTM2MDcsNiArMzc4MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAoYWx0ZXJu
YXRpdmVzLnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpIHsKICAgICAg
ICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVn
aW4pKTsKICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsK
KyAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXpl
KCkgLSAxOwpAQCAtMzY0Myw2ICszODE3LDE1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBz
aXplX3QgcmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgbV9vcHMuYXBwZW5kKFlh
cnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5s
YXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgIG1fb3BzLmxhc3QoKS5tX2Jt
SW5mbyA9IG51bGxwdHI7CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAm
JiBkaXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgIGF1dG8gYm1JbmZv
ID0gQk1JbmZvOjpjcmVhdGUoc3RkOjptaW48dW5zaWduZWQ+KGRpc2p1bmN0aW9uLT5tX21pbmlt
dW1TaXplLCBCTUluZm86Om1heExlbmd0aCkpOworICAgICAgICAgICAgaWYgKGNvbGxlY3RCTUlu
Zm8oZGlzanVuY3Rpb24sIGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8uZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZvLnB0cigpOwor
ICAgICAgICAgICAgICAgIG1fYm1JbmZvcy5hcHBlbmQoV1RGTW92ZShibUluZm8pKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHNpemVfdCBs
YXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJu
YXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4
XS5nZXQoKTsKQEAgLTM2NjgsNiArMzg1MSw2NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
bGFzdE9wLm1fbmV4dE9wID0gcmVwZWF0TG9vcDsKICAgICB9CiAKKyAgICBib29sIGNvbGxlY3RC
TUluZm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6ZV90IGN1cnJlbnRBbHRl
cm5hdGl2ZUluZGV4LCBCTUluZm8mIGJtSW5mbykKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGhh
dmUgYSBzZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0
aCBjaGFyYWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAg
IC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1
c2UgdGhpcyBzdHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRv
IHN1cHBvcnQKKyAgICAgICAgLy8gZGlzanVuY3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGln
bm9yZS1jYXNlcy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdl
IGNhbiBjaGVjayAzcmQgY2hhcmFjdGVyCisgICAgICAgIC8vIGFnYWluc3Qge2EsIGIsIGMsIGQs
IGUsIGZ9IGFuZCBzaGlmdCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92
ZSBzaGlmdGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNl
IHdoaWNoIGRvZXMgbm90IGhhdmUKKyAgICAgICAgLy8gbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUg
Y2FzZSBvZiAvW2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2Vx
dWVuY2UgYW5kIGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdpbnN0IHthfS4KKyAgICAgICAgLy8gSWYg
aXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNoaWZ0IDcgY2hhcmFjdGVycyAobGVuZ3Ro
IG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMgYmV0dGVyIHRoYW4gdXNpbmcgIlthLXpd
YWFhYWFhYVthLXpdIgorICAgICAgICAvLyBzZXF1ZW5jZSBhbmQge2Eten0gc2V0IHNpbmNlIHth
LXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisgICAgICAgIC8vCisgICAgICAgIC8v
IFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIg
cG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3Rl
ciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJj
aGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9o
YXNGaXhlZFNpemUpOyAvLyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBmaXhlZC1zaXplZCBs
b29rYWhlYWQgZm9yIEJNIHNlYXJjaC4KKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX21p
bmltdW1TaXplKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgY29sbGVj
dCB0aGUgc2hhbGxvdyAxLWRlcHRoIG9mIGRpc2p1bmN0aW9uLiBXZSB3aWxsIGV4dGVuZCBpdCB0
byBzdXBwb3J0IGxpa2UgLyg/OmFiY3xkZWZ8Zyg/OmhpfGprKSkvLgorICAgICAgICBhdXRvJiBh
bHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIGZvciAo
OyBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA8IGFsdGVybmF0aXZlcy5zaXplKCk7ICsrY3VycmVu
dEFsdGVybmF0aXZlSW5kZXgpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnNvciA9IDA7Cisg
ICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRpdmVz
W2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0aXZlLT5tX3Rlcm1zLnNpemUoKSAmJiBjdXJz
b3IgPCBibUluZm8ubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSYgdGVybSA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zW2luZGV4XTsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHRlcm0udHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkFzc2VydGlvbkJPTDoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlOjpBc3NlcnRpb25FT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAgICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6UGF0dGVybkNoYXJhY3RlcjogeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0
eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlm
IChVMTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1cnJv
Z2F0ZVBhaXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNjaWkg
Y2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgIC8vIHVw
cGVyICYgbG93ZXIgY2FzZSByZXByZXNlbnRhdGlvbnMgYXJlIGNvbnZlcnRlZCB0byBhIGNoYXJh
Y3RlciBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3Jl
Q2FzZSgpIHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25p
Y2FsbHlVbmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFs
cGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5zZXQoY3Vyc29yLCB0b0FTQ0lJVXBwZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSUxvd2VyKHRl
cm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpOworICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJv
c2UsICJDaGFyYWN0ZXJzIGNvbGxlY3RlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIoKQogICAg
IHsKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMzk1MiwxNCArNDE5NiwxNCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21w
aWxlTW9kZTo6TWF0Y2hPbmx5KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFy
U2l6ZTo6Q2hhcjgpCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hP
bmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRy
VGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RF
KGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCBy
ZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+
KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxp
bmtCdWZmZXIsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgIk1hdGNoLW9ubHkgMTYtYml0IHJl
Z3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRD
b2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9u
bHkxNkJpdFB0clRhZywgIk1hdGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBG
aXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92ZShtX2JtVmVjdG9yKSkp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNp
emU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIg
ZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklO
QUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1
bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KFdU
Rk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
b2RlQmxvY2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlh
cnIxNkJpdFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVm
ZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVk
VmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fZmFpbHVyZVJlYXNvbikKICAgICAgICAgICAgIGNvZGVC
bG9jay5zZXRGYWxsQmFja1dpdGhGYWlsdXJlUmVhc29uKCptX2ZhaWx1cmVSZWFzb24pOwpAQCAt
NDE5Nyw2ICs0NDQxLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAvLyBUaGUgcmVndWxhciBl
eHByZXNzaW9uIGV4cHJlc3NlZCBhcyBhIGxpbmVhciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zLgog
ICAgIFZlY3RvcjxZYXJyT3AsIDEyOD4gbV9vcHM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxCTUlu
Zm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+LCA0
PiBtX2JtVmVjdG9yOwogCiAgICAgLy8gVGhpcyByZWNvcmRzIHRoZSBjdXJyZW50IGlucHV0IG9m
ZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUgY3VycmVudAogICAgIC8vIHNldCBvZiBhbHRl
cm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBtYXRjaGluZyB0aGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCBlZjM5YzhiNDA0NTJmZDg1YWFiZTNl
MDcyOTY1YzBkZjNkYmIwOWY1Li5hMmM4ZDNhMzQ5MWQ4OTc5YzlhYmVhYTZkNjk2NjE1NDY1MTll
NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0zMiw2ICszMiw4IEBA
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRl
cm4uaCIKKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzU4LDEwIEBAIGVudW0gY2xh
c3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1dGFibGVNZW1vcnlBbGxv
Y2F0aW9uRmFpbHVyZSwKIH07CiAKK2NsYXNzIEJNQnl0ZVZlY3RvciA6IHB1YmxpYyBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIDEyOD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworfTsKKwog
I2lmIENQVShBUk02NEUpCiBleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9Z
YXJySklUKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
LCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNv
bnN0IHZvaWQqIGNvZGVQdHIpOwogZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRl
cih2b2lkKTsKQEAgLTc4LDEzICs4NCwyOSBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKIAogICAg
IGJvb2wgaGFzOEJpdENvZGUoKSB7IHJldHVybiBtX3JlZjguc2l6ZSgpOyB9CiAgICAgYm9vbCBo
YXMxNkJpdENvZGUoKSB7IHJldHVybiBtX3JlZjE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJp
dENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiByZWYpIHsgbV9yZWY4
ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnIxNkJpdFB0clRhZz4gcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0KKyAgICB2b2lkIHNldDhCaXRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVmLCBGaXhlZFZlY3Rv
cjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgeworICAgICAgICBtX21hcDgg
PSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fcmVmOCA9IHJlZjsKKyAgICB9CisgICAgdm9pZCBz
ZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmLCBG
aXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgeworICAgICAg
ICBtX21hcDE2ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3JlZjE2ID0gcmVmOworICAgIH0K
IAogICAgIGJvb2wgaGFzOEJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTgu
c2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21h
dGNoT25seTE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9t
YXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHko
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5
KSB7IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlTWF0
Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0
Y2hPbmx5LCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAg
eworICAgICAgICBtX21hdGNoT25seU1hcDggPSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fbWF0
Y2hPbmx5OCA9IG1hdGNoT25seTsKKyAgICB9CisgICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9u
bHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hP
bmx5LCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4mJiBtYXApCisgICAgewor
ICAgICAgICBtX21hdGNoT25seU1hcDE2ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX21hdGNo
T25seTE2ID0gbWF0Y2hPbmx5OworICAgIH0KIAogICAgIGJvb2wgdXNlc1BhdHRlcm5Db250ZXh0
QnVmZmVyKCkgeyByZXR1cm4gbV91c2VzUGF0dGVybkNvbnRleHRCdWZmZXI7IH0KICNpZiBFTkFC
TEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKQEAgLTE3Niw2ICsxOTgsMTAgQEAg
Y2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgICAgIG1fcmVmMTYgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8WWFycjE2Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25seTggPSBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+KCk7CiAgICAgICAgIG1fbWF0
Y2hPbmx5MTYgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFn
PigpOworICAgICAgICBtX21hcDggPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4oKTsKKyAgICAgICAgbV9tYXAxNiA9IEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0
b3I+PigpOworICAgICAgICBtX21hdGNoT25seU1hcDggPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8
Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IEZpeGVkVmVjdG9y
PFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PigpOwogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xODQsNiArMjEwLDEwIEBAIGNsYXNzIFlhcnJDb2Rl
QmxvY2sgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IG1fcmVm
MTY7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBt
X21hdGNoT25seTg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJp
dFB0clRhZz4gbV9tYXRjaE9ubHkxNjsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRl
VmVjdG9yPj4gbV9tYXA4OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+
PiBtX21hcDE2OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21h
dGNoT25seU1hcDg7CisgICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1f
bWF0Y2hPbmx5TWFwMTY7CiAgICAgYm9vbCBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlciB7IGZh
bHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFz
b247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKaW5kZXggM2NlNjhmYzFiZDdkMmQwZmYyOWZiNmVjZTAw
YmIxYTVkZmIxMzdiNy4uMzkxNjEyMTE2ZWY4NjZjYjUwNTQ1YzM3NzQyNTJiYThlZTQ1MDc3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9CaXRWZWN0b3IuY3BwCkBAIC0yNjIsMTIgKzI2Miw4IEBAIHVpbnRwdHJfdCBCaXRWZWN0
b3I6Omhhc2hTbG93Q2FzZSgpIGNvbnN0CiAKIHZvaWQgQml0VmVjdG9yOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoZ2V0KGkpKQotICAgICAgICAgICAgb3V0LnByaW50ZigiMSIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCItIik7Ci0gICAgfQorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChnZXQo
aSkgPyAiMSIgOiAiLSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0JpdG1hcC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggOGYx
MzI3YTQ3NDEyZmQyYWRkNGVhZjU5YjFmNWFlZTM2ZGZmMWE4Ni4uYzUwMTEwYjVkZWExM2NlNGJh
NWJhZGEzZTQ5ZWI3MWY1YzFkMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFw
LmgKKysrIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CkBAIC0xMzAsNiArMTMxLDggQEAgY2xhc3MgQml0bWFwIGZpbmFsIHsK
IAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCB3b3JkcyA9IChiaXRtYXBTaXplICsgd29yZFNpemUgLSAxKSAvIHdvcmRTaXplOwpA
QCAtNTA3LDYgKzUxMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmlu
dChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpCaXRtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1Nv
dXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmluZGV4IGM0ZWUzZGMxMjg3NGYxOThlMWJmNDUzZjIz
N2E5OWNmNDc2NzZkZTQuLjkzNWQwNmM2NjlkZDRjZWU4MTdlMGUzOWMyYzY5ZDljMzRkZWEzZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1VuaXF1ZVJlZi5oCkBAIC00Niw5ICs0Niw5IEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmKEFyZ3MmJi4uLiBhcmdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVW5pcXVlUmVm
PFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4g
cHRyKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6
OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCiB7Ci0gICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqcHRyLnJl
bGVhc2UoKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPihXVEZNb3ZlKHB0cikpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBVbmlxdWVSZWYgewog
ICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0KIAorICAgIFQqIHB0cigpIFJFVFVSTlNfTk9O
TlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIFQqIHB0cigp
IGNvbnN0IFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQo
KTsgfQorCiAgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAg
ICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9
CiAKQEAgLTgzLDkgKzg2LDE1IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAKIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtl
VW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4pOwotICAgIHRlbXBsYXRl
PGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5p
cXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5k
IFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlx
dWVfcHRyPFU+JiYpOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBVbmlxdWVS
ZWY7CiAKKyAgICBleHBsaWNpdCBVbmlxdWVSZWYoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQor
ICAgICAgICA6IG1fcmVmKFdURk1vdmUocHRyKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jl
Zik7CisgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOwogfTsKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkYWFjZjk3
Zjk1OGM4NWRjOWY1MmQ0YzJlMmUyOGUzMjdiODg4MWVkLi5iM2RkNDQ2YmEzZTI1MGI5ZDFhMjQ4
OTE5ZWE2OTdiYTQ4MzA5NmQyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA3LTI3ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVy
Zm9ybSBCTSBzZWFyY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qczoKKwogMjAy
MS0wNy0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAg
ICAgUGFydGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90b3R5cGUue2NhbGxlcixhcmd1bWVudHN9
IHJlZmxlY3Rpb24gcHJvcG9zYWwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVy
eS10b2RvbXZjLXJlZ2V4cC5qcwppbmRleCBhZjNhNDI0NTk3ZTE3MzlkMmNkYTNkMDMzY2QyNTk0
ZGQyNDc4ZTYxLi40ZjMwYWVlODg3MzU1YTM3ZjIxZTg2NWU2ZjE0NzdkMTgyYjU3MWZhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMK
KysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzCkBA
IC04NDIwOSw3ICs4NDIwOSw4IEBAIGZ1bmN0aW9uIHRlc3QocmVnRXhwcywgc3RyaW5ncykgewog
ICAgIHJlZ0V4cCQxNi5sYXN0SW5kZXggPSAwOwogICAgIHJlc3VsdHMgPSByZWdFeHAkMTYuZXhl
YyhzdHJpbmckMjE1KTsKIH0KLW5vSW5saW5lKHRlc3QpOworaWYgKHR5cGVvZiBub0lubGluZSAh
PT0gInVuZGVmaW5lZCIpCisgICAgbm9JbmxpbmUodGVzdCk7CiByZWdFeHBzLnB1c2goL2F2b2lk
IGNvbnN0YW50IGZvbGRpbmcvZ2kpOwogc3RyaW5ncy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xk
aW5nL2dpKTsKIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7ICsraSkK
</data>
<flag name="commit-queue"
          id="456888"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434398</attachid>
            <date>2021-07-27 20:37:09 -0700</date>
            <delta_ts>2021-07-27 21:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727203709.patch</filename>
            <type>text/plain</type>
            <size>29563</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi42ZTFhODYyY2ZjZDVlMDM3
MWZlYzExYWQ2YjMyODQ3NjM5Njg4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCTUJpdG1hcDo6Y291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUJpdG1hcDo6
bWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1CaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZv
OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OnNldCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1J
bmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAg
Y29uc3QpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2Rl
QmxvY2s6OnNldDE2Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6
OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9j
azo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVC
bG9jazo6Y2xlYXIpOgorCiAyMDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIFRlbXBvcmFsIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDU0
YTNmMGViYTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4uNjljOTY1MzRmZGUzNDhmYTQ0
NjJlNDA1NmFjMTk0ZTNmNTViZWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0yNyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIg
c2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGOjpCaXRW
ZWN0b3I6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6Cisg
ICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cik6CisgICAgICAg
IChXVEY6OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZl
IHJldmVydCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEyMjRlMTg5YWNkZTkxZTc4Li4x
YjljMTAxODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBib29s
IGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoVW5zaWduZWQsIHByb3RvdHlw
ZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJOdW1iZXIgb2YgcHJvdG90eXBl
IHByb3BlcnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5cGUgaW4gdGhlIExMSW50LiBB
IGNvdW50IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1
bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9y
bWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4
IDhiNTAxZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLjg3ZmE0YmIzZjc5NWMw
NDVhM2I5MjcyMDAyMTBlNTFjYjk2ZjkxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTQzIEBACiAjaW5jbHVkZSAiWWFy
ckRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAjaWYgQ1BVKEFS
TTY0RSkKIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfdm1FbnRyeVRvWWFy
ckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpOwogI2VuZGlmCiAKK2NsYXNzIEJNQml0
bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUJpdG1hcCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBTaXplID0gMTI4OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWFwTWFzayA9IDEyOCAtIDE7CisgICAgdXNpbmcgTWFwID0gQml0
bWFwPG1hcFNpemU+OworCisgICAgQk1CaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25l
ZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBNYXAmIG1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisKKyAgICB2b2lkIGFkZChVQ2hhcjMyIGNoYXJhY3Rl
cikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gY2hhcmFjdGVyICYgbWFwTWFz
azsKKyAgICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21h
cC5zZXQocG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAg
fQorCitwcml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIEJNSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQk1J
bmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUluZm8pOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMzI7CisKKyAgICBleHBsaWNp
dCBCTUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhsZW5ndGgp
CisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMu
c2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIpOwor
ICAgIH0KKworICAgIHN0YXRpYyBVbmlxdWVSZWY8Qk1JbmZvPiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Qk1JbmZvPihsZW5ndGgp
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWdu
ZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3Q7
CisgICAgQk1CaXRtYXA6Ok1hcCBjcmVhdGVDYW5kaWRhdGVCaXRtYXAodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp0dXBsZTxpbnQsIHVu
c2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1i
ZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0b3I8Qk1CaXRtYXA+IG1fY2hh
cmFjdGVyczsKK307CisKK3N0ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IEJNSW5m
bzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNM
aW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25lZCBi
ZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hpbGUgKGlu
ZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVtYmVyT2ZD
YW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAoaW5kZXgg
PT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgYmVnaW4g
PSBpbmRleDsKKyAgICAgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9OworICAgICAgICBmb3IgKDsg
aW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPD0gbnVtYmVy
T2ZDYW5kaWRhdGVzTGltaXQ7ICsraW5kZXgpCisgICAgICAgICAgICBtYXAubWVyZ2UobV9jaGFy
YWN0ZXJzW2luZGV4XS5tYXAoKSk7CisKKyAgICAgICAgLy8gSWYgbWFwIGhhcyBtYW55IGNhbmRp
ZGF0ZXMsIHRoZW4gcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBsb3cgc2luY2UgaXQgd2lsbCBt
YXRjaCB0b28gbWFueSB0aGluZ3MuCisgICAgICAgIC8vIEFuZCBpZiB0aGUgc2VxdWVuY2UgaXMg
bG9uZ2VyLCB0aGVuIHRoZSBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGhpZ2hlciBzaW5jZSBp
dCBjYW4gc2tpcCBtYW55IGNoYXJhY3RlcnMuCisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
d2UgYXJlIGhhbmRsaW5nIGFsbCBjaGFyYWN0ZXJzIGVxdWFsbHkuIEJ1dCB3ZSBzaG91bGQgaGF2
ZSB3ZWlnaHQgcGVyIGNoYXJhY3RlciBzaW5jZSBlLmcuICdlJyBzaG91bGQgYXBwZWFyIG1vcmUg
ZnJlcXVlbnRseSB0aGFuICdcdicuCisgICAgICAgIGludCBmcmVxdWVuY3kgPSBtYXAuY291bnQo
KTsKKyAgICAgICAgaW50IG1hdGNoaW5nUHJvYmFiaWxpdHkgPSBCTUJpdG1hcDo6bWFwU2l6ZSAt
IGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4IC0gYmVnaW4pICogbWF0Y2hp
bmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAg
ICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAgICAgIGJlZ2luUmVzdWx0ID0g
YmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwgYmVnaW5SZXN1bHQsIGVuZFJl
c3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVk
Pj4gQk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdl
ciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJvZml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdp
bGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRvbyBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBs
aW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0
IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0CisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBz
dGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBlbmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9y
ZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGlu
dCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFj
dGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlk
YXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0gMikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwg
bmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAg
ICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0
UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAgICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAg
ICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9p
bnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUg
eyBiZWdpbiwgZW5kIH07Cit9CisKK0JNQml0bWFwOjpNYXAgQk1JbmZvOjpjcmVhdGVDYW5kaWRh
dGVCaXRtYXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBCTUJp
dG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRl
eCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0u
bWFwKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAjaWYgQ1BV
KEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTU3LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRv
IHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBk
aXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAg
ICAgICBCTUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0
ZQpAQCAtMTQxMCw3ICsxNTM5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFs
bENoYXJhY3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8
PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2Uo
KSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7
CiAgICAgICAgIH0KIApAQCAtMjI1NiwxMSArMjM4NSw1NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAvLyBVcG9uIGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0
ZXJuYXRpdmVzLCBjaGVjayBpZiBpbnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAv
LyB0byBydW4gdGhlIGZpcnN0IGFsdGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1
dCBwb3NpdGlvbikuCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9B
dmFpbGFibGVJbnB1dChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkpOworICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKwogICAg
ICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVlbnRlciBhZnRlciB0aGUgY2hlY2ssIGFuZCBhc3N1
bWUgdGhlIGlucHV0IHBvc2l0aW9uIHRvIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgIC8vIHNl
dCBhcyBhcHByb3ByaWF0ZSB0byB0aGlzIGFsdGVybmF0aXZlLgogICAgICAgICAgICAgICAgIG9w
Lm1fcmVlbnRyeSA9IGxhYmVsKCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1f
Ym1JbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+
ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2Jl
Z2luSW5kZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChlbmRJbmRleCA8PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbWFwID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJp
dG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcENvdW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNo
YXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCTUJpdG1hcDo6TWFwOjpzaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMiA9IDB4ZmY7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyMiA9IG1hcC5maW5kQml0KGNoYXJhY3RlcjEgKyAx
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3Rl
cjIgIT0gQk1CaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhl
YWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4
KGNoYXJhY3RlcjIpLCAiKXJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIiki
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJ
bmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVz
dGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1
c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcENvdW50ID09IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjIpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9B
dmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gbWFr
ZVVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVjdG9yLT5maWxsKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgYml0bWFwIGxvb2th
aGVhZCBjb3VudDooIiwgbWFwQ291bnQsICIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBl
bmRJbmRleCwgIikiKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cih2ZWN0b3ItPmRhdGEoKSksIHJlZ1QxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgcmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihCTUJpdG1hcDo6
bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAs
IFRpbWVzT25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBl
bmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ibVZlY3Rvci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoKQEAgLTI3ODAsNiArMjk1
NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29wLm1f
bmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AubV9vcCA9PSBZYXJyT3BDb2Rl
OjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAgICAgICAgWWFyck9wKiBiZWdpbk9w
ID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9wLT5tX29wICE9IFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5NzIsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gpCiAgICAgICAgICAgICAg
ICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7
CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRl
cm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9k
eUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3Rp
Y2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgc3RpY2t5IHBhdHRl
cm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0byB0aGUgZW5kLgogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNrc1Rv
SnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRoaXMpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplCkBA
IC0zNjA3LDYgKzM3ODIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgaWYgKGFsdGVybmF0
aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgpKSB7CiAgICAgICAg
ICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2lu
KSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7Cisg
ICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOwogCiAgICAgICAgICAg
ICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgp
IC0gMTsKQEAgLTM2NDMsNiArMzgxOSwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgc2l6
ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXplKCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJy
T3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgbV9vcHMubGFz
dCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wcy5sYXN0KCkubV9ibUlu
Zm8gPSBudWxscHRyOworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYg
ZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICBhdXRvIGJtSW5mbyA9
IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVt
U2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChjb2xsZWN0Qk1JbmZv
KGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKKyAg
ICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFz
dE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0u
Z2V0KCk7CkBAIC0zNjY4LDYgKzM4NTMsNjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxh
c3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qk1J
bmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8pCisgICAgeworICAgICAgICAvLyBJZiB3ZSBoYXZl
IGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2UgY2FuIGNoZWNrIHRoZSA2dGgg
Y2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQsIGUsIGZ9LgorICAgICAgICAv
LyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hhcmFjdGVycy4gV2UgdXNl
IHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVuZGVkIGVhc2lseSB0byBz
dXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xhc3MsIGFuZCBpZ25v
cmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJjfGRlZikvLCB3ZSBj
YW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICAvLyBhZ2FpbnN0IHthLCBiLCBjLCBkLCBl
LCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1hdGNoLgorICAgICAg
ICAvLworICAgICAgICAvLyBUaGVuLCB0aGUgYmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUg
c2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRoZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3
aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNh
c2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywgd2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNlcXVl
bmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVyIGFnaW5zdCB7YX0uCisgICAgICAgIC8vIElmIGl0
IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBv
ZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFh
YWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16
fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBX
ZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBv
c2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIg
c2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hp
bmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFz
Rml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9v
a2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IGNvbGxlY3Qg
dGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNqdW5jdGlvbi4gV2Ugd2lsbCBleHRlbmQgaXQgdG8g
c3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLy4KKyAgICAgICAgYXV0byYgYWx0
ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsg
Y3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRB
bHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAg
ICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tj
dXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29y
IDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRl
cm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAg
c3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVh
bnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlN
YXhDb3VudCAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAo
VTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dh
dGVQYWlycykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNo
YXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBl
ciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0
ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNh
c2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNh
bGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBo
YSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibUlu
Zm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJt
LnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3Nl
LCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAgICB7
CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQgKzQxOTgsMTQgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGls
ZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNp
emU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25s
eShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRh
ZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAg
ICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShs
aW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVn
dWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihX
VEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5r
QnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1
bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29k
ZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5
MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4
ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXpl
OjpDaGFyOCkKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVf
UkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4
cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFM
SVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxh
ciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZN
b3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29k
ZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJy
MTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAg
ICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZl
ciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBGaXhlZFZl
Y3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92ZShtX2JtVmVjdG9yKSkpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFzb24pCiAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigqbV9mYWlsdXJlUmVhc29uKTsKQEAgLTQx
OTcsNiArNDQ0Myw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgLy8gVGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4KICAg
ICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1JbmZv
PiwgND4gbV9ibUluZm9zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPiwgND4g
bV9ibVZlY3RvcjsKIAogICAgIC8vIFRoaXMgcmVjb3JkcyB0aGUgY3VycmVudCBpbnB1dCBvZmZz
ZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhlIGN1cnJlbnQKICAgICAvLyBzZXQgb2YgYWx0ZXJu
YXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGluLiBFLmcuIHdoZW4gbWF0Y2hpbmcgdGhlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggZWYzOWM4YjQwNDUyZmQ4NWFhYmUzZTA3
Mjk2NWMwZGYzZGJiMDlmNS4uYTJjOGQzYTM0OTFkODk3OWM5YWJlYWE2ZDY5NjYxNTQ2NTE5ZTcz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtMzIsNiArMzIsOCBAQAog
I2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJu
LmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01Niw2ICs1OCwxMCBAQCBlbnVtIGNsYXNz
IEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2Nh
dGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBCTUJ5dGVWZWN0b3IgOiBwdWJsaWMgc3RkOjphcnJh
eTx1aW50OF90LCAxMjg+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CisKICNp
ZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBFbmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFy
ckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwg
aW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBjb25z
dCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAiQyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIo
dm9pZCk7CkBAIC03OCwxMyArODQsMjkgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAKICAgICBi
b29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWY4LnNpemUoKTsgfQogICAgIGJvb2wgaGFz
MTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVmKSB7IG1fcmVmOCA9
IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
MTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2ID0gcmVmOyB9CisgICAgdm9pZCBzZXQ4Qml0Q29k
ZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8
VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXA4ID0g
V1RGTW92ZShtYXApOworICAgICAgICBtX3JlZjggPSByZWY7CisgICAgfQorICAgIHZvaWQgc2V0
MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwgRml4
ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAg
bV9tYXAxNiA9IFdURk1vdmUobWFwKTsKKyAgICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICB9CiAK
ICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNp
emUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRj
aE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0
Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkg
eyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNo
T25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNo
T25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsK
KyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX21hdGNo
T25seTggPSBtYXRjaE9ubHk7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25s
eSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAg
ICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IFdURk1vdmUobWFwKTsKKyAgICAgICAgbV9tYXRjaE9u
bHkxNiA9IG1hdGNoT25seTsKKyAgICB9CiAKICAgICBib29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1
ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxF
KFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCkBAIC0xNzYsNiArMTk4LDEwIEBAIGNs
YXNzIFlhcnJDb2RlQmxvY2sgewogICAgICAgICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNo
T25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4o
KTsKKyAgICAgICAgbV9tYXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+
KCk7CisgICAgICAgIG1fbWFwMTYgPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWF0Y2hPbmx5TWFwMTYgPSBGaXhlZFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gc3Rk
OjpudWxsb3B0OwogICAgIH0KIApAQCAtMTg0LDYgKzIxMCwxMCBAQCBjbGFzcyBZYXJyQ29kZUJs
b2NrIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiBtX3JlZjE2
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbV9t
YXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQ
dHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+IG1fbWFwODsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4g
bV9tYXAxNjsKKyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXRj
aE9ubHlNYXA4OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21h
dGNoT25seU1hcDE2OwogICAgIGJvb2wgbV91c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxz
ZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29u
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9CaXRWZWN0b3IuY3BwCmluZGV4IDNjZTY4ZmMxYmQ3ZDJkMGZmMjlmYjZlY2UwMGJi
MWE1ZGZiMTM3YjcuLjM5MTYxMjExNmVmODY2Y2I1MDU0NWMzNzc0MjUyYmE4ZWU0NTA3N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQml0VmVjdG9yLmNwcApAQCAtMjYyLDEyICsyNjIsOCBAQCB1aW50cHRyX3QgQml0VmVjdG9y
OjpoYXNoU2xvd0Nhc2UoKSBjb25zdAogCiB2b2lkIEJpdFZlY3Rvcjo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKGdldChpKSkKLSAgICAgICAgICAgIG91dC5wcmludGYoIjEiKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50ZigiLSIpOwotICAgIH0KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgICAgICBvdXQucHJpbnQoZ2V0KGkp
ID8gIjEiIDogIi0iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9CaXRtYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCmluZGV4IDhmMTMy
N2E0NzQxMmZkMmFkZDRlYWY1OWIxZjVhZWUzNmRmZjFhODYuLmM1MDExMGI1ZGVhMTNjZTRiYTVi
YWRhM2U0OWViNzFmNWMxZDI3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHR5cGVfdHJhaXRzPgpAQCAtMTMwLDYgKzEzMSw4IEBAIGNsYXNzIEJpdG1hcCBmaW5hbCB7CiAK
ICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3
b3JkU2l6ZSA9IHNpemVvZihXb3JkVHlwZSkgKiA4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgd29yZHMgPSAoYml0bWFwU2l6ZSArIHdvcmRTaXplIC0gMSkgLyB3b3JkU2l6ZTsKQEAg
LTUwNyw2ICs1MTAsMTMgQEAgaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46Omhhc2goKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgICAgICBvdXQucHJpbnQo
Z2V0KGkpID8gIjEiIDogIi0iKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdU
Rjo6Qml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCBjNGVlM2RjMTI4NzRmMTk4ZTFiZjQ1M2YyMzdh
OTljZjQ3Njc2ZGU0Li45MzVkMDZjNjY5ZGQ0Y2VlODE3ZTBlMzljMmM2OWQ5YzM0ZGVhM2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VbmlxdWVSZWYuaApAQCAtNDYsOSArNDYsOSBAQCBVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJl
ZihBcmdzJiYuLi4gYXJncykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVVuaXF1ZVJlZjxU
PiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+IHB0
cikKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1
bmlxdWVfcHRyPFQ+JiYgcHRyKQogewotICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKnB0ci5yZWxl
YXNlKCkpOworICAgIHJldHVybiBVbmlxdWVSZWY8VD4oV1RGTW92ZShwdHIpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KQEAgLTY3LDYgKzY3LDkgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAg
ICAgICAgQVNTRVJUKG1fcmVmKTsKICAgICB9CiAKKyAgICBUKiBwdHIoKSBSRVRVUk5TX05PTk5V
TEwgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKyAgICBUKiBwdHIoKSBj
b25zdCBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7
IH0KKwogICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogICAg
IGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQog
CkBAIC04Myw5ICs4NiwxNSBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiBwcml2YXRlOgogICAgIHRl
bXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVu
aXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1
ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4pOworICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBV
bmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVl
X3B0cjxVPiYmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVm
OwogCisgICAgZXhwbGljaXQgVW5pcXVlUmVmKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKKyAg
ICAgICAgOiBtX3JlZihXVEZNb3ZlKHB0cikpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZWYp
OworICAgIH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtX3JlZjsKIH07CiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGFhY2Y5N2Y5
NThjODVkYzlmNTJkNGMyZTJlMjhlMzI3Yjg4ODFlZC4uYjNkZDQ0NmJhM2UyNTBiOWQxYTI0ODkx
OWVhNjk3YmE0ODMwOTZkMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZv
cm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanM6CisKIDIwMjEt
MDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAg
IFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIsYXJndW1lbnRzfSBy
ZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9q
cXVlcnktdG9kb212Yy1yZWdleHAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnkt
dG9kb212Yy1yZWdleHAuanMKaW5kZXggYWYzYTQyNDU5N2UxNzM5ZDJjZGEzZDAzM2NkMjU5NGRk
MjQ3OGU2MS4uNGYzMGFlZTg4NzM1NWEzN2YyMWU4NjVlNmYxNDc3ZDE4MmI1NzFmYSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcwpAQCAt
ODQyMDksNyArODQyMDksOCBAQCBmdW5jdGlvbiB0ZXN0KHJlZ0V4cHMsIHN0cmluZ3MpIHsKICAg
ICByZWdFeHAkMTYubGFzdEluZGV4ID0gMDsKICAgICByZXN1bHRzID0gcmVnRXhwJDE2LmV4ZWMo
c3RyaW5nJDIxNSk7CiB9Ci1ub0lubGluZSh0ZXN0KTsKK2lmICh0eXBlb2Ygbm9JbmxpbmUgIT09
ICJ1bmRlZmluZWQiKQorICAgIG5vSW5saW5lKHRlc3QpOwogcmVnRXhwcy5wdXNoKC9hdm9pZCBj
b25zdGFudCBmb2xkaW5nL2dpKTsKIHN0cmluZ3MucHVzaCgvYXZvaWQgY29uc3RhbnQgZm9sZGlu
Zy9naSk7CiBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434399</attachid>
            <date>2021-07-27 21:03:41 -0700</date>
            <delta_ts>2021-07-27 23:01:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727210341.patch</filename>
            <type>text/plain</type>
            <size>29723</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTdmNTgxYmVlMTEyNmQ3MTJlZWZhYjhjZTBjNjA2M2Q0ZjI5ZTVkLi42ZTFhODYyY2ZjZDVlMDM3
MWZlYzExYWQ2YjMyODQ3NjM5Njg4ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCTUJpdG1hcDo6Y291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUJpdG1hcDo6
bWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1CaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZv
OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OnNldCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1J
bmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAg
Y29uc3QpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2Rl
QmxvY2s6OnNldDE2Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6
OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9j
azo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVC
bG9jazo6Y2xlYXIpOgorCiAyMDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIFRlbXBvcmFsIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDU0
YTNmMGViYTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4uNjljOTY1MzRmZGUzNDhmYTQ0
NjJlNDA1NmFjMTk0ZTNmNTViZWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0yNyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIg
c2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGOjpCaXRW
ZWN0b3I6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdU
Rjo6V29yZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6Cisg
ICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cik6CisgICAgICAg
IChXVEY6OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZl
IHJldmVydCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEyMjRlMTg5YWNkZTkxZTc4Li4x
YjljMTAxODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBib29s
IGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoVW5zaWduZWQsIHByb3RvdHlw
ZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJOdW1iZXIgb2YgcHJvdG90eXBl
IHByb3BlcnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5cGUgaW4gdGhlIExMSW50LiBB
IGNvdW50IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1
bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9y
bWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4
IDhiNTAxZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLmM1Mjc0MDg3OTMzOGFj
NTBiODU0ZjhmMDhlMWM5NWYxNzhhYTllNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTQzIEBACiAjaW5jbHVkZSAiWWFy
ckRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgeworbmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7
CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQogCiAjaWYgQ1BVKEFS
TTY0RSkKIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfdm1FbnRyeVRvWWFy
ckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpOwogI2VuZGlmCiAKK2NsYXNzIEJNQml0
bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUJpdG1hcCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBTaXplID0gMTI4OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWFwTWFzayA9IDEyOCAtIDE7CisgICAgdXNpbmcgTWFwID0gQml0
bWFwPG1hcFNpemU+OworCisgICAgQk1CaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25l
ZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBNYXAmIG1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisKKyAgICB2b2lkIGFkZChVQ2hhcjMyIGNoYXJhY3Rl
cikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gY2hhcmFjdGVyICYgbWFwTWFz
azsKKyAgICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21h
cC5zZXQocG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAg
fQorCitwcml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIEJNSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQk1J
bmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUluZm8pOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMzI7CisKKyAgICBleHBsaWNp
dCBCTUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhsZW5ndGgp
CisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMu
c2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIpOwor
ICAgIH0KKworICAgIHN0YXRpYyBVbmlxdWVSZWY8Qk1JbmZvPiBjcmVhdGUodW5zaWduZWQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Qk1JbmZvPihsZW5ndGgp
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWdu
ZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3Q7
CisgICAgQk1CaXRtYXA6Ok1hcCBjcmVhdGVDYW5kaWRhdGVCaXRtYXAodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp0dXBsZTxpbnQsIHVu
c2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1i
ZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0b3I8Qk1CaXRtYXA+IG1fY2hh
cmFjdGVyczsKK307CisKK3N0ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IEJNSW5m
bzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNM
aW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25lZCBi
ZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hpbGUgKGlu
ZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVtYmVyT2ZD
YW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAoaW5kZXgg
PT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgYmVnaW4g
PSBpbmRleDsKKyAgICAgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9OworICAgICAgICBmb3IgKDsg
aW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPD0gbnVtYmVy
T2ZDYW5kaWRhdGVzTGltaXQ7ICsraW5kZXgpCisgICAgICAgICAgICBtYXAubWVyZ2UobV9jaGFy
YWN0ZXJzW2luZGV4XS5tYXAoKSk7CisKKyAgICAgICAgLy8gSWYgbWFwIGhhcyBtYW55IGNhbmRp
ZGF0ZXMsIHRoZW4gcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBsb3cgc2luY2UgaXQgd2lsbCBt
YXRjaCB0b28gbWFueSB0aGluZ3MuCisgICAgICAgIC8vIEFuZCBpZiB0aGUgc2VxdWVuY2UgaXMg
bG9uZ2VyLCB0aGVuIHRoZSBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGhpZ2hlciBzaW5jZSBp
dCBjYW4gc2tpcCBtYW55IGNoYXJhY3RlcnMuCisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
d2UgYXJlIGhhbmRsaW5nIGFsbCBjaGFyYWN0ZXJzIGVxdWFsbHkuIEJ1dCB3ZSBzaG91bGQgaGF2
ZSB3ZWlnaHQgcGVyIGNoYXJhY3RlciBzaW5jZSBlLmcuICdlJyBzaG91bGQgYXBwZWFyIG1vcmUg
ZnJlcXVlbnRseSB0aGFuICdcdicuCisgICAgICAgIGludCBmcmVxdWVuY3kgPSBtYXAuY291bnQo
KTsKKyAgICAgICAgaW50IG1hdGNoaW5nUHJvYmFiaWxpdHkgPSBCTUJpdG1hcDo6bWFwU2l6ZSAt
IGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4IC0gYmVnaW4pICogbWF0Y2hp
bmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAg
ICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAgICAgIGJlZ2luUmVzdWx0ID0g
YmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwgYmVnaW5SZXN1bHQsIGVuZFJl
c3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVk
Pj4gQk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdl
ciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJvZml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdp
bGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRvbyBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBs
aW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0
IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0CisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBz
dGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBlbmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9y
ZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGlu
dCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFj
dGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlk
YXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0gMikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwg
bmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAg
ICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0
UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAgICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAg
ICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9p
bnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUg
eyBiZWdpbiwgZW5kIH07Cit9CisKK0JNQml0bWFwOjpNYXAgQk1JbmZvOjpjcmVhdGVDYW5kaWRh
dGVCaXRtYXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBCTUJp
dG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRl
eCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFjdGVyc1tpbmRleF0u
bWFwKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAjaWYgQ1BV
KEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTU3LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRv
IHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBk
aXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAg
ICAgICBCTUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAvLyBCYWNrdHJhY2tpbmdTdGF0
ZQpAQCAtMTQxMCw3ICsxNTM5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIGFs
bENoYXJhY3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjdXJyZW50Q2hhcmFjdGVyKSA8
PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9wYXR0ZXJuLmlnbm9yZUNhc2Uo
KSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkpCisgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJVTEwgPDwgc2hpZnRBbW91bnQ7
CiAgICAgICAgIH0KIApAQCAtMjI1NiwxMSArMjM4NSw1OSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAvLyBVcG9uIGVudHJ5IGF0IHRoZSBoZWFkIG9mIHRoZSBzZXQgb2YgYWx0
ZXJuYXRpdmVzLCBjaGVjayBpZiBpbnB1dCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAv
LyB0byBydW4gdGhlIGZpcnN0IGFsdGVybmF0aXZlLiAoVGhpcyBwcm9ncmVzc2VzIHRoZSBpbnB1
dCBwb3NpdGlvbikuCiAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9B
dmFpbGFibGVJbnB1dChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkpOworICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKwogICAg
ICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVlbnRlciBhZnRlciB0aGUgY2hlY2ssIGFuZCBhc3N1
bWUgdGhlIGlucHV0IHBvc2l0aW9uIHRvIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgIC8vIHNl
dCBhcyBhcHByb3ByaWF0ZSB0byB0aGlzIGFsdGVybmF0aXZlLgogICAgICAgICAgICAgICAgIG9w
Lm1fcmVlbnRyeSA9IGxhYmVsKCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1f
Ym1JbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+
ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2Jl
Z2luSW5kZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChlbmRJbmRleCA8PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbWFwID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJp
dG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcENvdW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNo
YXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCTUJpdG1hcDo6TWFwOjpzaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMiA9IDB4ZmY7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyMiA9IG1hcC5maW5kQml0KGNoYXJhY3RlcjEgKyAx
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3Rl
cjIgIT0gQk1CaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVy
Ym9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhl
YWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4
KGNoYXJhY3RlcjIpLCAiKXJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIiki
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJ
bmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVz
dGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1
c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcENvdW50ID09IDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjIpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9B
dmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gbWFr
ZVVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVjdG9yLT5maWxsKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZWN0b3IuZ2V0KClbaW5kZXhdID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGJpdG1hcCBsb29rYWhlYWQgY291bnQ6
KCIsIG1hcENvdW50LCAiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIp
Iik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodmVj
dG9yLT5kYXRhKCkpLCByZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBs
b29wSGVhZCA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJh
Y3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCBy
ZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9
IGJyYW5jaFRlc3QzMihOb25aZXJvLCBCYXNlSW5kZXgocmVnVDEsIHJlZ1QwLCBUaW1lc09uZSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5v
QXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fYm1WZWN0b3IuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlh
cnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQ6CkBAIC0yNzgwLDYgKzI5NTcsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBtX29wc1tvcC5tX25leHRPcF07Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVy
bmF0aXZlRW5kKTsKIAogICAgICAgICAgICAgICAgIFlhcnJPcCogYmVnaW5PcCA9ICZvcDsKICAg
ICAgICAgICAgICAgICB3aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBZYXJyT3BDb2RlOjpCb2R5QWx0
ZXJuYXRpdmVCZWdpbikgewpAQCAtMjc5Nyw3ICsyOTc1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgaWYgKG9uY2VUaHJvdWdoKQogICAgICAgICAgICAgICAgICAgICBtX2Jh
Y2t0cmFja2luZ1N0YXRlLmxpbmtUbyhlbmRPcC5tX3JlZW50cnksIHRoaXMpOwogICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgp
ICYmIG1fb3BzW29wLm1fbmV4dE9wXS5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2
ZUVuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIHN0aWNreSBwYXR0ZXJuIGFuZCB0aGUg
bGFzdCBhbHRlcm5hdGl2ZSBmYWlsZWQsIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUudGFrZUJhY2t0cmFja3NUb0p1bXBMaXN0KGxh
c3RTdGlja3lBbHRlcm5hdGl2ZUZhaWx1cmVzLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZQpAQCAtMzYwNyw2ICsz
Nzg1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGlmIChhbHRlcm5hdGl2ZXMuc2l6ZSgp
ICYmIGFsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSkgewogICAgICAgICAgICAgbV9vcHMu
YXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAg
ICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICAgICAg
bV9vcHMubGFzdCgpLm1fYm1JbmZvID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CkBAIC0z
NjQzLDYgKzM4MjIsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHNpemVfdCByZXBlYXRM
b29wID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZp
b3VzT3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplICYmIGRpc2p1bmN0aW9u
LT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgYXV0byBibUluZm8gPSBCTUluZm86OmNy
ZWF0ZShzdGQ6Om1pbjx1bnNpZ25lZD4oZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUsIEJNSW5m
bzo6bWF4TGVuZ3RoKSk7CisgICAgICAgICAgICBpZiAoY29sbGVjdEJNSW5mbyhkaXNqdW5jdGlv
biwgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKKyAgICAgICAgICAg
ICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CisgICAgICAgICAgICAg
ICAgbV9ibUluZm9zLmFwcGVuZChXVEZNb3ZlKGJtSW5mbykpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKICAgICAgICAgZG8gewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0g
bV9vcHMuc2l6ZSgpIC0gMTsKICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJu
YXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwpAQCAt
MzY2OCw2ICszODU2LDY3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBsYXN0T3AubV9uZXh0
T3AgPSByZXBlYXRMb29wOwogICAgIH0KIAorICAgIGJvb2wgY29sbGVjdEJNSW5mbyhQYXR0ZXJu
RGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBzaXplX3QgY3VycmVudEFsdGVybmF0aXZlSW5kZXgs
IEJNSW5mbyYgYm1JbmZvKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHNlYXJjaGlu
ZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBjaGVjayB0aGUgNnRoIGNoYXJhY3RlciBh
Z2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBmfS4KKyAgICAgICAgLy8gSWYgaXQgZG9l
cyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJhY3RlcnMuIFdlIHVzZSB0aGlzIHN0cmF0
ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRlZCBlYXNpbHkgdG8gc3VwcG9ydAorICAg
ICAgICAvLyBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNsYXNzLCBhbmQgaWdub3JlLWNhc2VzLiBG
b3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFiY3xkZWYpLywgd2UgY2FuIGNoZWNrIDNy
ZCBjaGFyYWN0ZXIKKyAgICAgICAgLy8gYWdhaW5zdCB7YSwgYiwgYywgZCwgZSwgZn0gYW5kIHNo
aWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBtYXRjaC4KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gVGhlbiwgdGhlIGJlc3Qgd2F5IHRvIHBlcmZvcm0gdGhlIGFib3ZlIHNoaWZ0aW5nIGlz
IHRoYXQgZmluZGluZyB0aGUgbG9uZ2VzdCBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9lcyBu
b3QgaGF2ZQorICAgICAgICAvLyBtYW55IGNhbmRpZGF0ZXMuIEluIHRoZSBjYXNlIG9mIC9bYS16
XWFhYWFhYWFbYS16XS8sIHdlIGNhbiBleHRyYWN0ICJhYWFhYWFhIiBzZXF1ZW5jZSBhbmQgY2hl
Y2sgOHRoIGNoYXJhY3RlciBhZ2luc3Qge2F9LgorICAgICAgICAvLyBJZiBpdCBkb2VzIG5vdCBt
YXRjaCwgdGhlbiB3ZSBjYW4gc2hpZnQgNyBjaGFyYWN0ZXJzIChsZW5ndGggb2YgImFhYWFhYWEi
KS4gVGhpcyBzaGlmdGluZyBpcyBiZXR0ZXIgdGhhbiB1c2luZyAiW2Etel1hYWFhYWFhW2Etel0i
CisgICAgICAgIC8vIHNlcXVlbmNlIGFuZCB7YS16fSBzZXQgc2luY2Uge2Eten0gc2V0IHdpbGwg
YWxtb3N0IGFsd2F5cyBtYXRjaC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2UgZmlyc3QgY29s
bGVjdCBwb3NzaWJsZSBjaGFyYWN0ZXJzIGZvciBlYWNoIGNoYXJhY3RlciBwb3NpdGlvbi4gVGhl
biwgYXBwbHkgaGV1cmlzdGljcyB0byBleHRyYWN0IGdvb2QgY2hhcmFjdGVyIHNlcXVlbmNlIGZy
b20KKyAgICAgICAgLy8gdGhhdCBhbmQgY29uc3RydWN0IGZhc3Qgc2VhcmNoaW5nIHdpdGggbG9u
ZyBzdHJpZGUuCisKKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSk7
IC8vIEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3Ig
Qk0gc2VhcmNoLgorICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpOwor
CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBjb2xsZWN0IHRoZSBzaGFsbG93
IDEtZGVwdGggb2YgZGlzanVuY3Rpb24uIFdlIHdpbGwgZXh0ZW5kIGl0IHRvIHN1cHBvcnQgbGlr
ZSAvKD86YWJjfGRlZnxnKD86aGl8amspKS8uCisgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9
IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRBbHRl
cm5hdGl2ZUluZGV4IDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytjdXJyZW50QWx0ZXJuYXRpdmVJ
bmRleCkgeworICAgICAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICAgICAgICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVy
bmF0aXZlSW5kZXhdLmdldCgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpICYmIGN1cnNvciA8IGJtSW5mby5s
ZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0g
YWx0ZXJuYXRpdmUtPm1fdGVybXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVy
bS50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0
aW9uQk9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlv
bkVPTDoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25X
b3JkQm91bmRhcnk6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hh
cmFjdGVyQ2xhc3M6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFj
a1JlZmVyZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3
YXJkUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJu
Q2hhcmFjdGVyOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAh
PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQgIT0g
MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFUxNl9MRU5HVEgo
dGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRo
YXQgaGF2ZSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBj
YXNlIHJlcHJlc2VudGF0aW9ucyBhcmUgY29udmVydGVkIHRvIGEgY2hhcmFjdGVyIGNsYXNzLgor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkgfHwgaXNB
U0NJSUFscGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgfHwgaXNDYW5vbmljYWxseVVuaXF1ZSh0
ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIG1fY2Fub25pY2FsTW9kZSkpOworICAgICAgICAgICAgICAg
ICAgICBpZiAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEodGVybS5wYXR0
ZXJuQ2hhcmFjdGVyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJz
b3IsIHRvQVNDSUlVcHBlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0b0FTQ0lJTG93ZXIodGVybS5wYXR0ZXJuQ2hh
cmFjdGVyKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRlcm0ucGF0dGVybkNoYXJhY3Rlcik7CisgICAgICAg
ICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRlcm5hbDo6dmVyYm9zZSwgIkNoYXJhY3Rl
cnMgY29sbGVjdGVkIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHZvaWQg
Z2VuZXJhdGVUcnlSZWFkVW5pY29kZUNoYXJhY3RlckhlbHBlcigpCiAgICAgewogI2lmZGVmIEpJ
VF9VTklDT0RFX0VYUFJFU1NJT05TCkBAIC0zOTUyLDE0ICs0MjAxLDE0IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogCiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpNYXRj
aE9ubHkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkK
LSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVf
UkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seThCaXRQdHJUYWcsICJNYXRjaC1v
bmx5IDgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0OEJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwg
WWFyck1hdGNoT25seThCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDgtYml0IHJlZ3VsYXIgZXhwcmVz
c2lvbiIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92ZShtX2Jt
VmVjdG9yKSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5z
ZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFy
ck1hdGNoT25seTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNz
aW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGVNYXRjaE9ubHko
RklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFn
LCAiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9yPFVu
aXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCi0g
ICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RF
KGxpbmtCdWZmZXIsIFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikp
OworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lv
biIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oV1RGTW92ZShtX2JtVmVj
dG9yKSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQx
NkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFn
LCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnIxNkJp
dFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVl
UmVmPEJNQnl0ZVZlY3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobV9mYWlsdXJlUmVhc29uKQogICAgICAgICAgICAgY29kZUJsb2NrLnNldEZhbGxC
YWNrV2l0aEZhaWx1cmVSZWFzb24oKm1fZmFpbHVyZVJlYXNvbik7CkBAIC00MTk3LDYgKzQ0NDYs
OCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZXhw
cmVzc2VkIGFzIGEgbGluZWFyIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuCiAgICAgVmVjdG9yPFlh
cnJPcCwgMTI4PiBtX29wczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEJNSW5mbz4sIDQ+IG1fYm1J
bmZvczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4sIDQ+IG1fYm1WZWN0b3I7
CiAKICAgICAvLyBUaGlzIHJlY29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFw
cGxpZWQgZHVlIHRvIHRoZSBjdXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBh
cmUgbmVzdGVkIHdpdGhpbi4gRS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5oCmluZGV4IGVmMzljOGI0MDQ1MmZkODVhYWJlM2UwNzI5NjVjMGRmM2Ri
YjA5ZjUuLmEyYzhkM2EzNDkxZDg5NzljOWFiZWFhNmQ2OTY2MTU0NjUxOWU3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgorI2luY2x1
ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2Rl
ZmluZSBZQVJSX0NBTEwKIApAQCAtNTYsNiArNTgsMTAgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJl
UmVhc29uIDogdWludDhfdCB7CiAgICAgRXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25GYWlsdXJl
LAogfTsKIAorY2xhc3MgQk1CeXRlVmVjdG9yIDogcHVibGljIHN0ZDo6YXJyYXk8dWludDhfdCwg
MTI4PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cit9OworCiAjaWYgQ1BVKEFSTTY0
RSkKIGV4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qg
dm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0
LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29k
ZVB0cik7CiBleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwpAQCAt
NzgsMTMgKzg0LDI5IEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogCiAgICAgYm9vbCBoYXM4Qml0
Q29kZSgpIHsgcmV0dXJuIG1fcmVmOC5zaXplKCk7IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgp
IHsgcmV0dXJuIG1fcmVmMTYuc2l6ZSgpOyB9Ci0gICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjggPSByZWY7IH0KLSAg
ICB2b2lkIHNldDE2Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFn
PiByZWYpIHsgbV9yZWYxNiA9IHJlZjsgfQorICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiByZWYsIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxC
TUJ5dGVWZWN0b3I+PiYmIG1hcCkKKyAgICB7CisgICAgICAgIG1fbWFwOCA9IFdURk1vdmUobWFw
KTsKKyAgICAgICAgbV9yZWY4ID0gcmVmOworICAgIH0KKyAgICB2b2lkIHNldDE2Qml0Q29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiByZWYsIEZpeGVkVmVjdG9yPFVu
aXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiYmIG1hcCkKKyAgICB7CisgICAgICAgIG1fbWFwMTYgPSBX
VEZNb3ZlKG1hcCk7CisgICAgICAgIG1fcmVmMTYgPSByZWY7CisgICAgfQogCiAgICAgYm9vbCBo
YXM4Qml0Q29kZU1hdGNoT25seSgpIHsgcmV0dXJuIG1fbWF0Y2hPbmx5OC5zaXplKCk7IH0KICAg
ICBib29sIGhhczE2Qml0Q29kZU1hdGNoT25seSgpIHsgcmV0dXJuIG1fbWF0Y2hPbmx5MTYuc2l6
ZSgpOyB9Ci0gICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTggPSBt
YXRjaE9ubHk7IH0KLSAgICB2b2lkIHNldDE2Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9u
bHkxNiA9IG1hdGNoT25seTsgfQorICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBtYXRjaE9ubHksIEZpeGVk
VmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiYmIG1hcCkKKyAgICB7CisgICAgICAgIG1f
bWF0Y2hPbmx5TWFwOCA9IFdURk1vdmUobWFwKTsKKyAgICAgICAgbV9tYXRjaE9ubHk4ID0gbWF0
Y2hPbmx5OworICAgIH0KKyAgICB2b2lkIHNldDE2Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtYXRjaE9ubHksIEZpeGVkVmVj
dG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiYmIG1hcCkKKyAgICB7CisgICAgICAgIG1fbWF0
Y2hPbmx5TWFwMTYgPSBXVEZNb3ZlKG1hcCk7CisgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBtYXRj
aE9ubHk7CisgICAgfQogCiAgICAgYm9vbCB1c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSB7IHJl
dHVybiBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcjsgfQogI2lmIEVOQUJMRShZQVJSX0pJVF9B
TExfUEFSRU5TX0VYUFJFU1NJT05TKQpAQCAtMTc2LDYgKzE5OCwxMCBAQCBjbGFzcyBZYXJyQ29k
ZUJsb2NrIHsKICAgICAgICAgbV9yZWYxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZC
aXRQdHJUYWc+KCk7CiAgICAgICAgIG1fbWF0Y2hPbmx5OCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KCk7CisgICAgICAg
IG1fbWFwOCA9IEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PigpOworICAgICAg
ICBtX21hcDE2ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAg
ICAgIG1fbWF0Y2hPbmx5TWFwOCA9IEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+
PigpOworICAgICAgICBtX21hdGNoT25seU1hcDE2ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+KCk7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKQEAgLTE4NCw2ICsyMTAsMTAgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gbV9yZWYxNjsKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21h
dGNoT25seTE2OworICAgIEZpeGVkVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21h
cDg7CisgICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1fbWFwMTY7Cisg
ICAgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1fbWF0Y2hPbmx5TWFwODsK
KyAgICBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXRjaE9ubHlNYXAx
NjsKICAgICBib29sIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyIHsgZmFsc2UgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwIGIvU291cmNlL1dURi93dGYvQml0
VmVjdG9yLmNwcAppbmRleCAzY2U2OGZjMWJkN2QyZDBmZjI5ZmI2ZWNlMDBiYjFhNWRmYjEzN2I3
Li4zOTE2MTIxMTZlZjg2NmNiNTA1NDVjMzc3NDI1MmJhOGVlNDUwNzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rv
ci5jcHAKQEAgLTI2MiwxMiArMjYyLDggQEAgdWludHB0cl90IEJpdFZlY3Rvcjo6aGFzaFNsb3dD
YXNlKCkgY29uc3QKIAogdm9pZCBCaXRWZWN0b3I6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChnZXQoaSkpCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIxIik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG91dC5wcmludGYoIi0iKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50KGdldChpKSA/ICIxIiA6ICIt
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Qml0bWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAppbmRleCA4ZjEzMjdhNDc0MTJmZDJh
ZGQ0ZWFmNTliMWY1YWVlMzZkZmYxYTg2Li5jNTAxMTBiNWRlYTEzY2U0YmE1YmFkYTNlNDllYjcx
ZjVjMWQyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9CaXRtYXAuaApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHd0Zi9BdG9t
aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KQEAgLTEzMCw2ICsxMzEsOCBAQCBjbGFzcyBCaXRtYXAgZmluYWwgewogCiAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OwogCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd29yZFNpemUgPSBz
aXplb2YoV29yZFR5cGUpICogODsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRz
ID0gKGJpdG1hcFNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29yZFNpemU7CkBAIC01MDcsNiArNTEw
LDEzIEBAIGlubGluZSB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNo
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwg
V29yZFR5cGU+OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50KGdldChpKSA/ICIx
IiA6ICItIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkJpdG1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYv
VW5pcXVlUmVmLmgKaW5kZXggYzRlZTNkYzEyODc0ZjE5OGUxYmY0NTNmMjM3YTk5Y2Y0NzY3NmRl
NC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2UwZTM5YzJjNjlkOWMzNGRlYTNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVm
LmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1VbmlxdWVSZWY8VD4gbWFrZVVuaXF1
ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiBwdHIpCitVbmlxdWVS
ZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxU
PiYmIHB0cikKIHsKLSAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KCpwdHIucmVsZWFzZSgpKTsKKyAg
ICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdURk1vdmUocHRyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgICAgIEFTU0VS
VChtX3JlZik7CiAgICAgfQogCisgICAgVCogcHRyKCkgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJU
KG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisgICAgVCogcHRyKCkgY29uc3QgUkVUVVJO
U19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKICAgICBU
JiBnZXQoKSB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9yZWY7IH0KICAgICBjb25zdCBUJiBn
ZXQoKSBjb25zdCB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9yZWY7IH0KIApAQCAtODMsOSAr
ODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJp
ZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1
bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+
IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4mJik7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAorICAgIGV4
cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCisgICAgICAgIDogbV9y
ZWYoV1RGTW92ZShwdHIpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVmKTsKKyAgICB9CisK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbV9yZWY7CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRhYWNmOTdmOTU4Yzg1ZGM5ZjUy
ZDRjMmUyZTI4ZTMyN2I4ODgxZWQuLmIzZGQ0NDZiYTNlMjUwYjlkMWEyNDg5MTllYTY5N2JhNDgz
MDk2ZDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDctMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIHNob3VsZCBwZXJmb3JtIEJNIHNlYXJj
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzOgorCiAyMDIxLTA3LTI1ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBQYXJ0bHkgaW1w
bGVtZW50IEZ1bmN0aW9uLnByb3RvdHlwZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVjdGlvbiBw
cm9wb3NhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9t
dmMtcmVnZXhwLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVn
ZXhwLmpzCmluZGV4IGFmM2E0MjQ1OTdlMTczOWQyY2RhM2QwMzNjZDI1OTRkZDI0NzhlNjEuLjRm
MzBhZWU4ODczNTVhMzdmMjFlODY1ZTZmMTQ3N2QxODJiNTcxZmEgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcworKysgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKQEAgLTg0MjA5LDcgKzg0
MjA5LDggQEAgZnVuY3Rpb24gdGVzdChyZWdFeHBzLCBzdHJpbmdzKSB7CiAgICAgcmVnRXhwJDE2
Lmxhc3RJbmRleCA9IDA7CiAgICAgcmVzdWx0cyA9IHJlZ0V4cCQxNi5leGVjKHN0cmluZyQyMTUp
OwogfQotbm9JbmxpbmUodGVzdCk7CitpZiAodHlwZW9mIG5vSW5saW5lICE9PSAidW5kZWZpbmVk
IikKKyAgICBub0lubGluZSh0ZXN0KTsKIHJlZ0V4cHMucHVzaCgvYXZvaWQgY29uc3RhbnQgZm9s
ZGluZy9naSk7CiBzdHJpbmdzLnB1c2goL2F2b2lkIGNvbnN0YW50IGZvbGRpbmcvZ2kpOwogZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434403</attachid>
            <date>2021-07-27 23:01:13 -0700</date>
            <delta_ts>2021-07-28 16:42:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210727230112.patch</filename>
            <type>text/plain</type>
            <size>29821</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZGQ5ZDNmNTYxNTQ1ZjhjNWU4NzdjMjQwYjQ4NGFjNzAzYWIyZjlkLi4wN2Q1YzQ2NjcwZDk5NTA0
ZjZkMGNmZmEyZWI3NTk5ZDQ4YzM1ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCTUJpdG1hcDo6Y291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUJpdG1hcDo6
bWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1CaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZv
OjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OnNldCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1J
bmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAg
Y29uc3QpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZ
YXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2Rl
QmxvY2s6OnNldDE2Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6
OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9j
azo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVC
bG9jazo6Y2xlYXIpOgorCiAyMDIxLTA3LTI3ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ29jb2FdICJSZW1vdGVJbnNwZWN0b3Ig
WFBDIGNvbm5lY3Rpb24gdG8gcmVsYXkgZmFpbGVkLiIgbWVzc2FnZXMgYXJlIGNvbmZ1c2luZyBp
biBTdGRFcnIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggZDU0YTNmMGViYTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4u
NjljOTY1MzRmZGUzNDhmYTQ0NjJlNDA1NmFjMTk0ZTNmNTViZWIzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgor
ICAgICAgICAoV1RGOjpCaXRWZWN0b3I6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRt
YXAuaDoKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3
dGYvVW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVu
aXF1ZVB0cik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0w
Ny0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHNwZWN1bGF0aXZlIHJldmVydCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEy
MjRlMTg5YWNkZTkxZTc4Li4xYjljMTAxODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1
Miw2ICs0NTIsNyBAQCBib29sIGNhblVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYo
VW5zaWduZWQsIHByb3RvdHlwZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJO
dW1iZXIgb2YgcHJvdG90eXBlIHByb3BlcnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5
cGUgaW4gdGhlIExMSW50LiBBIGNvdW50IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAg
IFwKICAgICB2KEJvb2wsIGR1bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCisgICAgdihCb29sLCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3Jk
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGlu
Z1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCmluZGV4IDhiNTAxZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjVi
OWIuLmFhNTEyNDFlYWRlY2MyNzcwZGQ0NGExZDcxNWYxMThiNGQzYmVmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTQz
IEBACiAjaW5jbHVkZSAiWWFyckRpc2Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGlu
Z0NvbnRleHRIb2xkZXIuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUg
PHd0Zi9CaXRtYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogCiAjaWYgRU5BQkxF
KFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgeworbmFtZXNwYWNl
IFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworfQogCiAjaWYgQ1BVKEFSTTY0RSkKIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRU
YXJnZXRfdm1FbnRyeVRvWWFyckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpOwogI2Vu
ZGlmCiAKK2NsYXNzIEJNQml0bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUJp
dG1hcCk7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBTaXplID0g
MTI4OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFwTWFzayA9IDEyOCAtIDE7Cisg
ICAgdXNpbmcgTWFwID0gQml0bWFwPG1hcFNpemU+OworCisgICAgQk1CaXRtYXAoKSA9IGRlZmF1
bHQ7CisKKyAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAg
ICBjb25zdCBNYXAmIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisKKyAgICB2b2lkIGFk
ZChVQ2hhcjMyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0g
Y2hhcmFjdGVyICYgbWFwTWFzazsKKyAgICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7
CisgICAgICAgICAgICBtX21hcC5zZXQocG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50
OworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAg
dW5zaWduZWQgbV9jb3VudCB7IDAgfTsKK307CisKK2NsYXNzIEJNSW5mbyB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQk1JbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUlu
Zm8pOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0g
MzI7CisKKyAgICBleHBsaWNpdCBCTUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1f
Y2hhcmFjdGVycyhsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkg
PD0gbWF4TGVuZ3RoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2NoYXJhY3RlcnMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRl
eCwgVUNoYXIzMiBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhd
LmFkZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHN0YXRpYyBVbmlxdWVSZWY8Qk1JbmZvPiBj
cmVhdGUodW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVS
ZWY8Qk1JbmZvPihsZW5ndGgpOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBs
ZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9y
TG9va2FoZWFkKCkgY29uc3Q7CisgICAgQk1CaXRtYXA6Ok1hcCBjcmVhdGVDYW5kaWRhdGVCaXRt
YXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RkOjp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1
ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0
b3I8Qk1CaXRtYXA+IG1fY2hhcmFjdGVyczsKK307CisKK3N0ZDo6dHVwbGU8aW50LCB1bnNpZ25l
ZCwgdW5zaWduZWQ+IEJNSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBu
dW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0g
MDsKKyAgICB1bnNpZ25lZCBiZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0
ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsK
KyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5j
b3VudCgpID4gbnVtYmVyT2ZDYW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4Owor
ICAgICAgICBpZiAoaW5kZXggPT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgdW5zaWduZWQgYmVnaW4gPSBpbmRleDsKKyAgICAgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9
OworICAgICAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhd
LmNvdW50KCkgPD0gbnVtYmVyT2ZDYW5kaWRhdGVzTGltaXQ7ICsraW5kZXgpCisgICAgICAgICAg
ICBtYXAubWVyZ2UobV9jaGFyYWN0ZXJzW2luZGV4XS5tYXAoKSk7CisKKyAgICAgICAgLy8gSWYg
bWFwIGhhcyBtYW55IGNhbmRpZGF0ZXMsIHRoZW4gcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBs
b3cgc2luY2UgaXQgd2lsbCBtYXRjaCB0b28gbWFueSB0aGluZ3MuCisgICAgICAgIC8vIEFuZCBp
ZiB0aGUgc2VxdWVuY2UgaXMgbG9uZ2VyLCB0aGVuIHRoZSBwb2ludCBvZiB0aGlzIHNlcXVlbmNl
IGlzIGhpZ2hlciBzaW5jZSBpdCBjYW4gc2tpcCBtYW55IGNoYXJhY3RlcnMuCisgICAgICAgIC8v
IEZJWE1FOiBDdXJyZW50bHkgd2UgYXJlIGhhbmRsaW5nIGFsbCBjaGFyYWN0ZXJzIGVxdWFsbHku
IEJ1dCB3ZSBzaG91bGQgaGF2ZSB3ZWlnaHQgcGVyIGNoYXJhY3RlciBzaW5jZSBlLmcuICdlJyBz
aG91bGQgYXBwZWFyIG1vcmUgZnJlcXVlbnRseSB0aGFuICdcdicuCisgICAgICAgIGludCBmcmVx
dWVuY3kgPSBtYXAuY291bnQoKTsKKyAgICAgICAgaW50IG1hdGNoaW5nUHJvYmFiaWxpdHkgPSBC
TUJpdG1hcDo6bWFwU2l6ZSAtIGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4
IC0gYmVnaW4pICogbWF0Y2hpbmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmln
Z2VzdFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAg
ICAgIGJlZ2luUmVzdWx0ID0gYmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwg
YmVnaW5SZXN1bHQsIGVuZFJlc3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
dW5zaWduZWQsIHVuc2lnbmVkPj4gQk1JbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVl
bmNlRm9yTG9va2FoZWFkKCkgY29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0ZXMtcGVyLWNoYXJh
Y3RlciBiZWNvbWVzIGxhcmdlciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJvZml0YWJsZSBzaW5j
ZSB0aGlzIHNlcXVlbmNlIHdpbGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRvbyBtYW55IGNoYXJh
Y3RlcnMuIEJ1dCBpZiB3ZSBsaW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBzbWFsbGVyLCBp
dCBpcyBwb3NzaWJsZSB0aGF0IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0CisgICAgLy8gY2hhcmFj
dGVyIHNlcXVlbmNlLiBXZSBzdGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBlbmxhcmdpbmcgdGhl
IGxpbWl0IHRvIGZpbmQgbW9yZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAgLy8gY2hhcmFjdGVy
IHNlcXVlbmNlLgorICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2lu
ID0gMDsKKyAgICB1bnNpZ25lZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhD
YW5kaWRhdGVzUGVyQ2hhcmFjdGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IDQ7
IGxpbWl0IDwgbWF4Q2FuZGlkYXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0gMikgeworICAgICAg
ICBhdXRvIFtuZXdQb2ludCwgbmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVzdENoYXJhY3RlclNl
cXVlbmNlKGxpbWl0KTsKKyAgICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2VzdFBvaW50KSB7Cisg
ICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAgICAgIGJlZ2luID0g
bmV3QmVnaW47CisgICAgICAgICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFiaWdnZXN0UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6dHVwbGUgeyBiZWdpbiwgZW5kIH07Cit9CisKK0JNQml0bWFwOjpNYXAgQk1J
bmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkg
Y29uc3QKK3sKKyAgICBCTUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IGJlZ2luOyBpbmRleCA8IGVuZDsgKytpbmRleCkKKyAgICAgICAgbWFwLm1lcmdlKG1f
Y2hhcmFjdGVyc1tpbmRleF0ubWFwKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTU3LDggQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgIC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUg
cGF0dGVybidzIGZyYW1lIHRvIHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tp
bmcgYmFjayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0
dXJuQWRkcmVzczsKKworICAgICAgICBCTUluZm8qIG1fYm1JbmZvOwogICAgIH07CiAKICAgICAv
LyBCYWNrdHJhY2tpbmdTdGF0ZQpAQCAtMTQxMCw3ICsxNTM5LDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAKICAgICAgICAgICAgIGFsbENoYXJhY3RlcnMgfD0gKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihj
dXJyZW50Q2hhcmFjdGVyKSA8PCBzaGlmdEFtb3VudCk7CiAKLSAgICAgICAgICAgIGlmICgobV9w
YXR0ZXJuLmlnbm9yZUNhc2UoKSkgJiYgKGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkp
CisgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEo
Y3VycmVudENoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzJV
TEwgPDwgc2hpZnRBbW91bnQ7CiAgICAgICAgIH0KIApAQCAtMjI1NiwxMSArMjM4NSw1OSBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBVcG9uIGVudHJ5IGF0IHRoZSBoZWFk
IG9mIHRoZSBzZXQgb2YgYWx0ZXJuYXRpdmVzLCBjaGVjayBpZiBpbnB1dCBpcyBhdmFpbGFibGUK
ICAgICAgICAgICAgICAgICAvLyB0byBydW4gdGhlIGZpcnN0IGFsdGVybmF0aXZlLiAoVGhpcyBw
cm9ncmVzc2VzIHRoZSBpbnB1dCBwb3NpdGlvbikuCiAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSkpOworICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZTsKKwogICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVlbnRlciBhZnRlciB0
aGUgY2hlY2ssIGFuZCBhc3N1bWUgdGhlIGlucHV0IHBvc2l0aW9uIHRvIGhhdmUgYmVlbgogICAg
ICAgICAgICAgICAgIC8vIHNldCBhcyBhcHByb3ByaWF0ZSB0byB0aGlzIGFsdGVybmF0aXZlLgog
ICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7Ci0KLSAgICAgICAgICAgICAg
ICBtX2NoZWNrZWRPZmZzZXQgKz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAg
ICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFu
Z2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2th
aGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVt
U2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWFwID0gb3AubV9ibUluZm8t
PmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCTUJpdG1hcDo6TWFw
OjpzaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVy
MiA9IDB4ZmY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyMiA9IG1hcC5maW5k
Qml0KGNoYXJhY3RlcjEgKyAxLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGNoYXJhY3RlcjIgIT0gQk1CaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIg
Y2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiks
Y2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAiKXJhbmdlOlsiLCBiZWdpbkluZGV4LCAi
LCAiLCBlbmRJbmRleCwgIikiKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBM
aXN0IG1hdGNoZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9
IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2No
ZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1CaXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVn
VDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKGNoYXJhY3RlcjIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gdmVjdG9yID0gbWFrZVVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVjdG9yLT5maWxsKDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaW5kZXhdID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGJpdG1h
cCBsb29rYWhlYWQgY291bnQ6KCIsIG1hcENvdW50LCAiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwg
IiwgIiwgZW5kSW5kZXgsICIpIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIodmVjdG9yLT5kYXRhKCkpLCByZWdUMSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJl
Z1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQk1C
aXRtYXA6Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5jaFRlc3QzMihOb25aZXJvLCBCYXNlSW5kZXgocmVnVDEs
IHJlZ1QwLCBUaW1lc09uZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVt
cHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhp
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm1WZWN0b3IuYXBwZW5kKFdURk1vdmUodmVjdG9y
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQ6CkBAIC0yNzgw
LDYgKzI5NTcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBtX29w
c1tvcC5tX25leHRPcF07CisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLm1fb3AgPT0gWWFy
ck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKTsKIAogICAgICAgICAgICAgICAgIFlhcnJPcCog
YmVnaW5PcCA9ICZvcDsKICAgICAgICAgICAgICAgICB3aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikgewpAQCAtMjc5Nyw3ICsyOTc1LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKG9uY2VUaHJvdWdoKQogICAgICAg
ICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtUbyhlbmRPcC5tX3JlZW50cnks
IHRoaXMpOwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLnN0aWNreSgpICYmIG1fb3BzW29wLm1fbmV4dE9wXS5tX29wID09IFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0
ZXJuLnN0aWNreSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIHN0aWNr
eSBwYXR0ZXJuIGFuZCB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBmYWlsZWQsIGp1bXAgdG8gdGhlIGVu
ZC4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUudGFrZUJhY2t0
cmFja3NUb0p1bXBMaXN0KGxhc3RTdGlja3lBbHRlcm5hdGl2ZUZhaWx1cmVzLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVk
U2l6ZQpAQCAtMzYwNyw2ICszNzg1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGlmIChh
bHRlcm5hdGl2ZXMuc2l6ZSgpICYmIGFsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSkgewog
ICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRp
dmVCZWdpbikpOwogICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZv
dW5kOworICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gbnVsbHB0cjsKIAogICAg
ICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3Bz
LnNpemUoKSAtIDE7CkBAIC0zNjQzLDYgKzM4MjIsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgIHNpemVfdCByZXBlYXRMb29wID0gbV9vcHMuc2l6ZSgpOwogICAgICAgICBtX29wcy5hcHBl
bmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgIG1f
b3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKKyAgICAgICAgbV9vcHMubGFzdCgp
Lm1fYm1JbmZvID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1T
aXplICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgp
KSB7CisgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVu
c2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5ndGgpKTsK
KyAgICAgICAgICAgIGlmIChjb2xsZWN0Qk1JbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgeworICAgICAgICAgICAgICAgIG1fb3BzLmxhc3Qo
KS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKKyAgICAgICAgICAgICAgICBtX2JtSW5mb3MuYXBw
ZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAg
ICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAx
OwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0
aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CkBAIC0zNjY4LDYgKzM4NTYsNjcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7
CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qk1JbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlz
anVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQk1JbmZvJiBibUluZm8p
CisgICAgeworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2Rl
Zi8sIHRoZW4gd2UgY2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yg
e2EsIGIsIGMsIGQsIGUsIGZ9LgorICAgICAgICAvLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2Ug
Y2FuIHNoaWZ0IDYgY2hhcmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3
YXkgY2FuIGJlIGV4dGVuZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIC8vIGRpc2p1bmN0
aW9uLCBjaGFyYWN0ZXItY2xhc3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0
aGUgY2FzZSBvZiAvKD86YWJjfGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAg
ICAgICAvLyBhZ2FpbnN0IHthLCBiLCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJz
IGlmIGl0IGRvZXMgbm90IG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBUaGVuLCB0aGUg
YmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMgdGhhdCBmaW5kaW5nIHRo
ZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5vdCBoYXZlCisgICAgICAg
IC8vIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFhYWFhYVthLXpdLywg
d2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4dGggY2hhcmFjdGVy
IGFnaW5zdCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNh
biBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5n
IGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2Vx
dWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1h
dGNoLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNo
YXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0
aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0
aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAg
ICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gQ3VycmVudGx5LCB3
ZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCTSBzZWFyY2guCisgICAg
ICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBvbmx5IGNvbGxlY3QgdGhlIHNoYWxsb3cgMS1kZXB0aCBvZiBkaXNq
dW5jdGlvbi4gV2Ugd2lsbCBleHRlbmQgaXQgdG8gc3VwcG9ydCBsaWtlIC8oPzphYmN8ZGVmfGco
PzpoaXxqaykpLy4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVudEFsdGVybmF0aXZlSW5kZXggPCBh
bHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4KSB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0
KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBhbHRlcm5h
dGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxlbmd0aCgpOyArK2luZGV4
KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBhbHRlcm5hdGl2ZS0+bV90
ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgorICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0
ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGlj
YWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90
U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBl
OjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5p
bnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFy
YWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5z
ZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVu
dAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRp
b25zIGFyZSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5w
YXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJh
Y3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRl
cm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVy
KHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZv
LnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0
KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytj
dXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxv
Z0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRV
bmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVT
U0lPTlMKQEAgLTM5NTIsMTQgKzQyMDEsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAg
aWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAg
ICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAg
IGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5r
QnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxh
ciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1h
dGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJp
dFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVj
dG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNo
T25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQ
dHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAg
ICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2
LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+KFdURk1vdmUobV9ibVZlY3RvcikpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBj
b2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFy
cjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIs
IFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIEZpeGVkVmVjdG9y
PFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PihXVEZNb3ZlKG1fYm1WZWN0b3IpKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxh
ciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUo
RklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9y
Pj4oV1RGTW92ZShtX2JtVmVjdG9yKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1
cmVSZWFzb24pCiAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJl
YXNvbigqbV9mYWlsdXJlUmVhc29uKTsKQEAgLTQxOTcsNiArNDQ0Niw4IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogCiAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5l
YXIgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3Bz
OworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qk1JbmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3Rv
cjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPiwgND4gbV9ibVZlY3RvcjsKIAogICAgIC8vIFRoaXMg
cmVjb3JkcyB0aGUgY3VycmVudCBpbnB1dCBvZmZzZXQgYmVpbmcgYXBwbGllZCBkdWUgdG8gdGhl
IGN1cnJlbnQKICAgICAvLyBzZXQgb2YgYWx0ZXJuYXRpdmVzIHdlIGFyZSBuZXN0ZWQgd2l0aGlu
LiBFLmcuIHdoZW4gbWF0Y2hpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgK
aW5kZXggZWYzOWM4YjQwNDUyZmQ4NWFhYmUzZTA3Mjk2NWMwZGYzZGJiMDlmNS4uYTJjOGQzYTM0
OTFkODk3OWM5YWJlYWE2ZDY5NjYxNTQ2NTE5ZTczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuaApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
WWFyci5oIgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAog
CkBAIC01Niw2ICs1OCwxMCBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90
IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBC
TUJ5dGVWZWN0b3IgOiBwdWJsaWMgc3RkOjphcnJheTx1aW50OF90LCAxMjg+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBF
bmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4
dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAi
QyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArODQsMjkgQEAg
Y2xhc3MgWWFyckNvZGVCbG9jayB7CiAKICAgICBib29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4g
bV9yZWY4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYx
Ni5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZ
YXJyOEJpdFB0clRhZz4gcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2
ID0gcmVmOyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFy
cjhCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYg
bWFwKQorICAgIHsKKyAgICAgICAgbV9tYXA4ID0gV1RGTW92ZShtYXApOworICAgICAgICBtX3Jl
ZjggPSByZWY7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZl
Y3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXAxNiA9IFdURk1vdmUobWFwKTsKKyAg
ICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hP
bmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRD
b2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lk
IHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAg
IHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0
Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5
OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVm
PEJNQnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXA4ID0g
V1RGTW92ZShtYXApOworICAgICAgICBtX21hdGNoT25seTggPSBtYXRjaE9ubHk7CisgICAgfQor
ICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJN
Qnl0ZVZlY3Rvcj4+JiYgbWFwKQorICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHlNYXAxNiA9IFdU
Rk1vdmUobWFwKTsKKyAgICAgICAgbV9tYXRjaE9ubHkxNiA9IG1hdGNoT25seTsKKyAgICB9CiAK
ICAgICBib29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRl
cm5Db250ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCkBAIC0xNzYsNiArMTk4LDEwIEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgICAg
ICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAg
ICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4
Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKKyAgICAgICAgbV9tYXA4ID0gRml4ZWRW
ZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1fbWFwMTYgPSBGaXhl
ZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsKKyAgICAgICAgbV9tYXRjaE9ubHlN
YXA4ID0gRml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+KCk7CisgICAgICAgIG1f
bWF0Y2hPbmx5TWFwMTYgPSBGaXhlZFZlY3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4oKTsK
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtMTg0
LDYgKzIxMCwxMCBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8WWFycjE2Qml0UHRyVGFnPiBtX3JlZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAg
Rml4ZWRWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+IG1fbWFwODsKKyAgICBGaXhlZFZl
Y3RvcjxVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXAxNjsKKyAgICBGaXhlZFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXRjaE9ubHlNYXA4OworICAgIEZpeGVkVmVjdG9y
PFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX21hdGNoT25seU1hcDE2OwogICAgIGJvb2wgbV91
c2VzUGF0dGVybkNvbnRleHRCdWZmZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklU
RmFpbHVyZVJlYXNvbj4gbV9mYWlsdXJlUmVhc29uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0JpdFZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCmluZGV4
IDNjZTY4ZmMxYmQ3ZDJkMGZmMjlmYjZlY2UwMGJiMWE1ZGZiMTM3YjcuLjM5MTYxMjExNmVmODY2
Y2I1MDU0NWMzNzc0MjUyYmE4ZWU0NTA3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Jp
dFZlY3Rvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcApAQCAtMjYyLDEy
ICsyNjIsOCBAQCB1aW50cHRyX3QgQml0VmVjdG9yOjpoYXNoU2xvd0Nhc2UoKSBjb25zdAogCiB2
b2lkIEJpdFZlY3Rvcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGdldChpKSkKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIjEiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0
LnByaW50ZigiLSIpOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsg
KytpKQorICAgICAgICBvdXQucHJpbnQoZ2V0KGkpID8gIjEiIDogIi0iKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaCBiL1NvdXJj
ZS9XVEYvd3RmL0JpdG1hcC5oCmluZGV4IDhmMTMyN2E0NzQxMmZkMmFkZDRlYWY1OWIxZjVhZWUz
NmRmZjFhODYuLmM1MDExMGI1ZGVhMTNjZTRiYTViYWRhM2U0OWViNzFmNWMxZDI3YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpAQCAtMTMwLDYgKzEz
MSw4IEBAIGNsYXNzIEJpdG1hcCBmaW5hbCB7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7
CiAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZihXb3JkVHlwZSkg
KiA4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd29yZHMgPSAoYml0bWFwU2l6ZSAr
IHdvcmRTaXplIC0gMSkgLyB3b3JkU2l6ZTsKQEAgLTUwNyw2ICs1MTAsMTMgQEAgaW5saW5lIHVu
c2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emUoKTsgKytpKQorICAgICAgICBvdXQucHJpbnQoZ2V0KGkpID8gIjEiIDogIi0iKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Qml0bWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRl
eCBjNGVlM2RjMTI4NzRmMTk4ZTFiZjQ1M2YyMzdhOTljZjQ3Njc2ZGU0Li45MzVkMDZjNjY5ZGQ0
Y2VlODE3ZTBlMzljMmM2OWQ5YzM0ZGVhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtNDYsOSArNDYs
OSBAQCBVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxV
bmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+IHB0cikKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQogewotICAg
IHJldHVybiBVbmlxdWVSZWY8VD4oKnB0ci5yZWxlYXNlKCkpOworICAgIHJldHVybiBVbmlxdWVS
ZWY8VD4oV1RGTW92ZShwdHIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTY3LDYg
KzY3LDkgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsKICAgICB9
CiAKKyAgICBUKiBwdHIoKSBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKyAgICBUKiBwdHIoKSBjb25zdCBSRVRVUk5TX05PTk5VTEwgeyBBU1NF
UlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKwogICAgIFQmIGdldCgpIHsgQVNTRVJU
KG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNT
RVJUKG1fcmVmKTsgcmV0dXJuICptX3JlZjsgfQogCkBAIC04Myw5ICs4NiwxNSBAQCBjbGFzcyBV
bmlxdWVSZWYgewogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFy
Z3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2soQXJncyYmLi4uKTsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+
IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4pOwor
ICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZy
b21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPiYmKTsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCisgICAgZXhwbGljaXQgVW5pcXVlUmVm
KHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKHB0cikp
CisgICAgeworICAgICAgICBBU1NFUlQobV9yZWYpOworICAgIH0KKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUPiBtX3JlZjsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGFhY2Y5N2Y5NThjODVkYzlmNTJkNGMyZTJlMjhlMzI3Yjg4
ODFlZC4uYjNkZDQ0NmJhM2UyNTBiOWQxYTI0ODkxOWVhNjk3YmE0ODMwOTZkMiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAyMS0wNy0yNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9qcXVl
cnktdG9kb212Yy1yZWdleHAuanM6CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24u
cHJvdG90eXBlLntjYWxsZXIsYXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKaW5kZXggYWYz
YTQyNDU5N2UxNzM5ZDJjZGEzZDAzM2NkMjU5NGRkMjQ3OGU2MS4uNGYzMGFlZTg4NzM1NWEzN2Yy
MWU4NjVlNmYxNDc3ZDE4MmI1NzFmYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcwpAQCAtODQyMDksNyArODQyMDksOCBAQCBmdW5jdGlv
biB0ZXN0KHJlZ0V4cHMsIHN0cmluZ3MpIHsKICAgICByZWdFeHAkMTYubGFzdEluZGV4ID0gMDsK
ICAgICByZXN1bHRzID0gcmVnRXhwJDE2LmV4ZWMoc3RyaW5nJDIxNSk7CiB9Ci1ub0lubGluZSh0
ZXN0KTsKK2lmICh0eXBlb2Ygbm9JbmxpbmUgIT09ICJ1bmRlZmluZWQiKQorICAgIG5vSW5saW5l
KHRlc3QpOwogcmVnRXhwcy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIHN0cmlu
Z3MucHVzaCgvYXZvaWQgY29uc3RhbnQgZm9sZGluZy9naSk7CiBmb3IgKGxldCBpID0gMDsgaSA8
IDIwOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434474</attachid>
            <date>2021-07-28 16:42:14 -0700</date>
            <delta_ts>2021-07-28 17:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728164213.patch</filename>
            <type>text/plain</type>
            <size>47551</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi5kZmI4ZjMxYTM0MjRhZGU5
ZWQ2ZjJhMjc3YjNjMGViYzVkNWI4YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVtaXRz
IHNraXBwaW5nIGZhc3QtcGF0aCBhdCB0aGUgYmVnaW5uaW5nIG9mIGJvZHkgYWx0ZXJuYXRpdmVz
IHdpdGggYSBsYXJnZSBzdHJpZGUuIFNvIHdlIGNhbiBxdWlja2x5IGRpc2NhcmQgdW5yZWxhdGVk
IGNoYXJhY3RlcnMKKyAgICAgICAgYW5kIGF0dGVtcHQgdG8gZmluZCBwb3NzaWJseSByZWxhdGVk
IHNlcXVlbmNlIGluIHRoZSBsb25nIHNlcXVlbmNlLgorCisgICAgICAgIElmIHdlIGhhdmUgYSBz
ZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0aCBjaGFy
YWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAgIElmIGl0
IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBz
dHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQK
KyAgICAgICAgZGlzanVuY3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGlnbm9yZS1jYXNlcy4g
Rm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVjayAz
cmQgY2hhcmFjdGVyCisgICAgICAgIGFnYWluc3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFuZCBzaGlm
dCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisKKyAgICAgICAgVGhlbiwgdGhl
IGJlc3Qgd2F5IHRvIHBlcmZvcm0gdGhlIGFib3ZlIHNoaWZ0aW5nIGlzIHRoYXQgZmluZGluZyB0
aGUgbG9uZ2VzdCBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAg
ICBtYW55IGNhbmRpZGF0ZXMuIEluIHRoZSBjYXNlIG9mIC9bYS16XWFhYWFhYWFbYS16XS8sIHdl
IGNhbiBleHRyYWN0ICJhYWFhYWFhIiBzZXF1ZW5jZSBhbmQgY2hlY2sgOHRoIGNoYXJhY3RlciBh
Z2FpbnN0IHthfS4KKyAgICAgICAgSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNo
aWZ0IDcgY2hhcmFjdGVycyAobGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMg
YmV0dGVyIHRoYW4gdXNpbmcgIlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICBzZXF1ZW5jZSBh
bmQge2Eten0gc2V0IHNpbmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisK
KyAgICAgICAgV2UgZmlyc3QgY29sbGVjdCBwb3NzaWJsZSBjaGFyYWN0ZXJzIGZvciBlYWNoIGNo
YXJhY3RlciBwb3NpdGlvbi4gVGhlbiwgYXBwbHkgaGV1cmlzdGljcyB0byBleHRyYWN0IGdvb2Qg
Y2hhcmFjdGVyIHNlcXVlbmNlIGZyb20KKyAgICAgICAgdGhhdCBhbmQgY29uc3RydWN0IGZhc3Qg
c2VhcmNoaW5nIHdpdGggbG9uZyBzdHJpZGUuCisKKyAgICAgICAgTWljcm9iZW5jaG1hcmsgd2hp
Y2ggcGVyZm9ybXMgUmVnRXhwIG9wcyBpbiBTcGVlZG9tZXRlcjIvalF1ZXJ5LVRvZG9NVkMgc2hv
d3MgMjUlIGltcHJvdmVtZW50LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAorCisgICAgICAgICAg
ICBqcXVlcnktdG9kb212Yy1yZWdleHAgICAgICA3MjMuOTczOSstMS4zOTk3ICAgICBeICAgIDU3
OS4xNjk4Ky0xLjI1MDUgICAgICAgIF4gZGVmaW5pdGVseSAxLjI1MDB4IGZhc3RlcgorCisgICAg
ICAgIFRoaXMgaW1wcm92ZXMgU3BlZWRvbWV0ZXIyL2pRdWVyeS1Ub2RvTVZDIGJ5IDMlLgorCisg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
c3VidGVzdCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAgIHwgICAgIG1zICAgICAgfCAgYiAv
IGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8
CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICB8IEVsbS1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgICAgICB8MTIzLjM2NTYyNSAgIHwxMjMuNDU2MjUwICAgfDEu
MDAwNzM1ICB8IDAuODA0MDc3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IFZ1ZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8
MjYuOTEyNTAwICAgIHwyNi45MjUwMDAgICAgfDEuMDAwNDY0ICB8IDAuOTY5NjAzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEVtYmVySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI3LjU0MDYyNSAgIHwxMjcuNTYyNTAwICAg
fDEuMDAwMTcyICB8IDAuOTYwNDc0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICB8IEJhY2tib25lSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICB8NTAuNjA2MjUwICAgIHw1MC41MTg3NTAgICAgfDAuOTk4MjcxICB8IDAuNjcwMzEzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFByZWFj
dC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjEuMDE4NzUwICAgIHwyMC44NTAwMDAg
ICAgfDAuOTkxOTcxICB8IDAuNTYzODE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICB8MTM2Ljk0Mzc1MCAgIHwxMzcuMjcxODc1ICAgfDEuMDAyMzk2ICB8IDAuNTMxNTEzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZh
bmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8NjguNTIxODc1ICAgIHw2OC41OTM3
NTAgICAgfDEuMDAxMDQ5ICB8IDAuNzAxMzc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8IEluZmVybm8tVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgICB8NjUuNTU5Mzc1ICAgIHw2NS44MDMxMjUgICAgfDEuMDAzNzE4ICB8IDAuNDE0NDE4
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8NzcuMjg0Mzc1ICAgIHw3Ni43
MTU2MjUgICAgfDAuOTkyNjQxICB8IDAuMjE5ODcwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01W
QyAgICAgICAgICB8NDAuNzI1MDAwICAgIHw0MC4zMTg3NTAgICAgfDAuOTkwMDI1ICB8IDAuMjgx
MjEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICB8NTUuMjA5Mzc1ICAgIHw1
NC43MTU2MjUgICAgfDAuOTkxMDU3ICB8IDAuMDU2OTIxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgICAgICB8MjY2LjM5Njg3NSAgIHwyNTguNDcxODc1ICAgfDAuOTcwMjUxICB8IDAu
MDAwMDAwIChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
ICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAgICAgICAgICB8MzQxLjU1MDAwMCAg
IHwzNDEuODU2MjUwICAgfDEuMDAwODk3ICB8IDAuNjE4MTQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFJlYWN0LVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgICAgICB8ODguNzMxMjUwICAgIHw4OC44NzE4NzUgICAgfDEuMDAxNTg1ICB8
IDAuNTEyNDA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8MTUwLjM0MDYy
NSAgIHwxNTAuMDY1NjI1ICAgfDAuOTk4MTcxICB8IDAuNDEyOTQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LUJh
YmVsLVdlYnBhY2stVG9kb01WQyB8NjUuMzkwNjI1ICAgIHw2NS4zNjI1MDAgICAgfDAuOTk5NTcw
ICB8IDAuODM0NzYwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICBhIG1lYW4gPSAyNDUuOTY5
OTcKKyAgICAgICAgICAgIGIgbWVhbiA9IDI0Ni44NjM2NgorICAgICAgICAgICAgcFZhbHVlID0g
MC4wMDYxNDQ4NDAyCisgICAgICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAg
ICAgICAgICAgMS4wMDQgdGltZXMgYmV0dGVyCisgICAgICAgICAgICBSZXN1bHRzIEFSRSBzaWdu
aWZpY2FudAorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJNSW5mbzo6Qk1JbmZvKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6Qk1JbmZvOjpsZW5ndGggY29uc3QpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCTUluZm86OnNldCk6CisgICAgICAgIChKU0M6OllhcnI6OkJNSW5mbzo6aW5kZXggY29u
c3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OnNldEluZGV4KToKKyAgICAgICAgKEpT
Qzo6WWFycjo6Qk1JbmZvOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmZp
bmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCTUlu
Zm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29rYWhlYWQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCTUluZm86OmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCBjb25zdCk6
CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFw
Ojpjb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJNQml0bWFwOjptYXAgY29uc3Qp
OgorICAgICAgICAoSlNDOjpZYXJyOjpCTUJpdG1hcDo6aXNNYXNrRWZmZWN0aXZlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6WWFycjo6Qk1CaXRtYXA6OmFkZCk6CisgICAgICAgIChKU0M6OllhcnI6
OkJNQnl0ZVZlY3Rvcjo6Qk1CeXRlVmVjdG9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNv
ZGVCbG9jazo6c2V0OEJpdENvZGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2Nr
OjpzZXQxNkJpdENvZGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4
Qml0Q29kZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNl
dDE2Qml0Q29kZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZmluZFNhbWVWZWN0
b3IgY29uc3QpOgorCiAyMDIxLTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gbG9hZC9zdG9yZSB3aXRoIEJhc2VJbmRleCBpcyBpbmVmZmlj
aWVudCBpbiBBUk02NApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBkNTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0
ZTgyLi4xOWEyZGI4OGI3MTdmMjk0NjIzOGRkZDYzZDhiMzlhYjNmZDRiOGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDIxLTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBzZWFyY2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0JpdFZlY3Rvci5j
cHA6CisgICAgICAgIChXVEY6OkJpdFZlY3Rvcjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogd3Rm
L0JpdG1hcC5oOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmR1bXAgY29uc3QpOgorICAgICAg
ICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZkZyb21Ob25O
dWxsVW5pcXVlUHRyKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpVbmlxdWVSZWYpOgorCiAy
MDIxLTA3LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgcmV2ZXJ0IG9mIHIyODAxOTMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDNkZmNjOTEyMDlkNDU4OTlkZmUz
OTdjMTIyNGUxODlhY2RlOTFlNzguLjFiOWMxMDE4NzYwMWIzN2QxYmYxMTYyMzAxOWRmYTY3ODMx
MjEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApA
QCAtNDUyLDYgKzQ1Miw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAg
ICAgdihVbnNpZ25lZCwgcHJvdG90eXBlSGl0Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1h
bCwgIk51bWJlciBvZiBwcm90b3R5cGUgcHJvcGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHBy
b3RvdHlwZSBpbiB0aGUgTExJbnQuIEEgY291bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBc
CiAgICAgXAogICAgIHYoQm9vbCwgZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHZlcmJvc2VSZWdFeHBDb21waWxhdGlvbiwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1bXBNb2R1bGVS
ZWNvcmQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGR1bXBNb2R1bGVM
b2FkaW5nU3RhdGUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKaW5kZXggOGI1MDFlZTM0MDc1NDhlNGE0ZTFhMGQ3MDU4OTg0ZDhk
MmY2NWI5Yi4uYWM2NGE5ODlhZTJjZTk2MTRkYjczYmVkODAyNDliZmJmOGI1NjY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDE3ICsz
NSwxMjYgQEAKICNpbmNsdWRlICJZYXJyRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiWWFyck1h
dGNoaW5nQ29udGV4dEhvbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogCiAj
aWYgRU5BQkxFKFlBUlJfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewor
bmFtZXNwYWNlIFlhcnJKSVRJbnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOworfQogCiAjaWYgQ1BVKEFSTTY0RSkKIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFU
SU9OKF9KSVRUYXJnZXRfdm1FbnRyeVRvWWFyckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0
ZXIpOwogI2VuZGlmCiAKK2NsYXNzIEJNSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Qk1JbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCTUluZm8pOworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4TGVuZ3RoID0gMzI7CisKKyAgICBleHBs
aWNpdCBCTUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhsZW5n
dGgpCisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3RoKTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFy
YWN0ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIp
OworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsg
fQorICAgIHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBtX2lu
ZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgc3RhdGljIFVuaXF1ZVJlZjxCTUluZm8+IGNyZWF0
ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxC
TUluZm8+KGxlbmd0aCk7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPHVu
c2lnbmVkLCB1bnNpZ25lZD4+IGZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29r
YWhlYWQoKSBjb25zdDsKKyAgICBzdGQ6OnR1cGxlPEJNQml0bWFwOjpNYXAsIGJvb2w+IGNyZWF0
ZUNhbmRpZGF0ZUJpdG1hcCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25z
dDsKKworICAgIFZlY3RvcjxCTUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1f
aW5kZXggeyAwIH07Cit9OworCitzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBC
TUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UodW5zaWduZWQgbnVtYmVyT2ZDYW5kaWRh
dGVzTGltaXQpIGNvbnN0Cit7CisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7CisgICAgdW5zaWdu
ZWQgYmVnaW5SZXN1bHQgPSAwOworICAgIHVuc2lnbmVkIGVuZFJlc3VsdCA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoKCk7KSB7CisgICAgICAgIHdoaWxl
IChpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hhcmFjdGVyc1tpbmRleF0uY291bnQoKSA+IG51bWJl
ck9mQ2FuZGlkYXRlc0xpbWl0KQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgaWYgKGlu
ZGV4ID09IGxlbmd0aCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHVuc2lnbmVkIGJl
Z2luID0gaW5kZXg7CisgICAgICAgIEJNQml0bWFwOjpNYXAgbWFwIHsgfTsKKyAgICAgICAgZm9y
ICg7IGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpIDw9IG51
bWJlck9mQ2FuZGlkYXRlc0xpbWl0OyArK2luZGV4KQorICAgICAgICAgICAgbWFwLm1lcmdlKG1f
Y2hhcmFjdGVyc1tpbmRleF0ubWFwKCkpOworCisgICAgICAgIC8vIElmIG1hcCBoYXMgbWFueSBj
YW5kaWRhdGVzLCB0aGVuIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgbG93IHNpbmNlIGl0IHdp
bGwgbWF0Y2ggdG9vIG1hbnkgdGhpbmdzLgorICAgICAgICAvLyBBbmQgaWYgdGhlIHNlcXVlbmNl
IGlzIGxvbmdlciwgdGhlbiB0aGUgcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBoaWdoZXIgc2lu
Y2UgaXQgY2FuIHNraXAgbWFueSBjaGFyYWN0ZXJzLgorICAgICAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHdlIGFyZSBoYW5kbGluZyBhbGwgY2hhcmFjdGVycyBlcXVhbGx5LiBCdXQgd2Ugc2hvdWxk
IGhhdmUgd2VpZ2h0IHBlciBjaGFyYWN0ZXIgc2luY2UgZS5nLiAnZScgc2hvdWxkIGFwcGVhciBt
b3JlIGZyZXF1ZW50bHkgdGhhbiAnXHYnLgorICAgICAgICBpbnQgZnJlcXVlbmN5ID0gbWFwLmNv
dW50KCk7CisgICAgICAgIGludCBtYXRjaGluZ1Byb2JhYmlsaXR5ID0gQk1CaXRtYXA6Om1hcFNp
emUgLSBmcmVxdWVuY3k7CisgICAgICAgIGludCBwb2ludCA9IChpbmRleCAtIGJlZ2luKSAqIG1h
dGNoaW5nUHJvYmFiaWxpdHk7CisgICAgICAgIGlmIChwb2ludCA+IGJpZ2dlc3RQb2ludCkgewor
ICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gcG9pbnQ7CisgICAgICAgICAgICBiZWdpblJlc3Vs
dCA9IGJlZ2luOworICAgICAgICAgICAgZW5kUmVzdWx0ID0gaW5kZXg7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0UG9pbnQsIGJlZ2luUmVzdWx0LCBl
bmRSZXN1bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNp
Z25lZD4+IEJNSW5mbzo6ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVh
ZCgpIGNvbnN0Cit7CisgICAgLy8gSWYgY2FuZGlhdGVzLXBlci1jaGFyYWN0ZXIgYmVjb21lcyBs
YXJnZXIsIHRoZW4gc2VxdWVuY2UgaXMgbm90IHByb2ZpdGFibGUgc2luY2UgdGhpcyBzZXF1ZW5j
ZSB3aWxsIG1hdGNoIGFnYWluc3QKKyAgICAvLyB0b28gbWFueSBjaGFyYWN0ZXJzLiBCdXQgaWYg
d2UgbGltaXQgY2FuZGlhdGVzLXBlci1jaGFyYWN0ZXIgc21hbGxlciwgaXQgaXMgcG9zc2libGUg
dGhhdCB3ZSBvbmx5IGZpbmQgdmVyeSBzaG9ydAorICAgIC8vIGNoYXJhY3RlciBzZXF1ZW5jZS4g
V2Ugc3RhcnQgd2l0aCBsb3cgbGltaXQsIHRoZW4gZW5sYXJnaW5nIHRoZSBsaW1pdCB0byBmaW5k
IG1vcmUgYW5kIG1vcmUgcHJvZml0YWJsZQorICAgIC8vIGNoYXJhY3RlciBzZXF1ZW5jZS4KKyAg
ICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25lZCBiZWdpbiA9IDA7CisgICAgdW5z
aWduZWQgZW5kID0gMDsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgbWF4Q2FuZGlkYXRlc1BlckNo
YXJhY3RlciA9IDMyOworICAgIGZvciAodW5zaWduZWQgbGltaXQgPSA0OyBsaW1pdCA8IG1heENh
bmRpZGF0ZXNQZXJDaGFyYWN0ZXI7IGxpbWl0ICo9IDIpIHsKKyAgICAgICAgYXV0byBbbmV3UG9p
bnQsIG5ld0JlZ2luLCBuZXdFbmRdID0gZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZShsaW1pdCk7
CisgICAgICAgIGlmIChuZXdQb2ludCA+IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAgYmln
Z2VzdFBvaW50ID0gbmV3UG9pbnQ7CisgICAgICAgICAgICBiZWdpbiA9IG5ld0JlZ2luOworICAg
ICAgICAgICAgZW5kID0gbmV3RW5kOworICAgICAgICB9CisgICAgfQorICAgIGlmICghYmlnZ2Vz
dFBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6OnR1
cGxlIHsgYmVnaW4sIGVuZCB9OworfQorCitzdGQ6OnR1cGxlPEJNQml0bWFwOjpNYXAsIGJvb2w+
IEJNSW5mbzo6Y3JlYXRlQ2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBl
bmQpIGNvbnN0Cit7CisgICAgQk1CaXRtYXA6Ok1hcCBtYXAgeyB9OworICAgIGJvb2wgaXNNYXNr
RWZmZWN0aXZlID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IGJlZ2luOyBpbmRl
eCA8IGVuZDsgKytpbmRleCkgeworICAgICAgICBhdXRvJiBibUJpdG1hcCA9IG1fY2hhcmFjdGVy
c1tpbmRleF07CisgICAgICAgIG1hcC5tZXJnZShibUJpdG1hcC5tYXAoKSk7CisgICAgICAgIGlz
TWFza0VmZmVjdGl2ZSB8PSBibUJpdG1hcC5pc01hc2tFZmZlY3RpdmUoKTsKKyAgICB9CisgICAg
cmV0dXJuIHN0ZDo6dHVwbGUgeyBtYXAsIGlzTWFza0VmZmVjdGl2ZSB9OworfQorCiBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKIAogI2lmIENQVShBUk1fVEhVTUIyKQpAQCAtODMwLDYgKzk0MCw4IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICAvLyB2YWx1ZSB0aGF0IHdpbGwgYmUgcHVzaGVkIGludG8gdGhl
IHBhdHRlcm4ncyBmcmFtZSB0byByZXR1cm4gdG8sCiAgICAgICAgIC8vIHVwb24gYmFja3RyYWNr
aW5nIGJhY2sgaW50byB0aGUgZGlzanVuY3Rpb24uCiAgICAgICAgIERhdGFMYWJlbFB0ciBtX3Jl
dHVybkFkZHJlc3M7CisKKyAgICAgICAgQk1JbmZvKiBtX2JtSW5mbzsKICAgICB9OwogCiAgICAg
Ly8gQmFja3RyYWNraW5nU3RhdGUKQEAgLTE0MTAsNyArMTUyMiw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgICAgICAgICBhbGxDaGFyYWN0ZXJzIHw9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
Y3VycmVudENoYXJhY3RlcikgPDwgc2hpZnRBbW91bnQpOwogCi0gICAgICAgICAgICBpZiAoKG1f
cGF0dGVybi5pZ25vcmVDYXNlKCkpICYmIChpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3Rlcikp
KQorICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhh
KGN1cnJlbnRDaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMy
VUxMIDw8IHNoaWZ0QW1vdW50OwogICAgICAgICB9CiAKQEAgLTIyNTYsMTEgKzIzNjgsNjMgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gVXBvbiBlbnRyeSBhdCB0aGUgaGVh
ZCBvZiB0aGUgc2V0IG9mIGFsdGVybmF0aXZlcywgY2hlY2sgaWYgaW5wdXQgaXMgYXZhaWxhYmxl
CiAgICAgICAgICAgICAgICAgLy8gdG8gcnVuIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4gKFRoaXMg
cHJvZ3Jlc3NlcyB0aGUgaW5wdXQgcG9zaXRpb24pLgogICAgICAgICAgICAgICAgIG9wLm1fanVt
cHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNp
emUpKTsKKyAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemU7CisKICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIHJlZW50ZXIgYWZ0ZXIg
dGhlIGNoZWNrLCBhbmQgYXNzdW1lIHRoZSBpbnB1dCBwb3NpdGlvbiB0byBoYXZlIGJlZW4KICAg
ICAgICAgICAgICAgICAvLyBzZXQgYXMgYXBwcm9wcmlhdGUgdG8gdGhpcyBhbHRlcm5hdGl2ZS4K
ICAgICAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICAg
ICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAg
ICAgICAgICAgIC8vIEVtaXQgZmFzdCBza2lwIHBhdGggd2l0aCBzdHJpZGUgaWYgd2UgaGF2ZSBC
TUluZm8uCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJT
ZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZEluZGV4XSA9ICpy
YW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8PSBhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW21h
cCwgaXNNYXNrRWZmZWN0aXZlXSA9IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRhdGVCaXRtYXAo
YmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bWFwQ291bnQgPSBtYXAuY291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNh
bmRpYXRlIGNoYXJhY3RlcnMgYXJlIDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0dGVyIHRoYW4g
dXNpbmcgdmVjdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAu
ZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyMSAhPSBCTUJpdG1hcDo6TWFwOjpzaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMiA9IDB4ZmY7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hcENvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyMiA9IG1hcC5maW5kQml0KGNoYXJhY3RlcjEgKyAxLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3RlcjIgIT0gQk1CaXRtYXA6
Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBp
bGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigw
eCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAi
KSxpc01hc2tFZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpbIiwgYmVnaW5J
bmRleCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9v
cEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0
ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEJNQml0bWFwOjptYXBNYXNrKSwgcmVnVDAs
IHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtYXBDb3VudCA9PSAyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1f
anVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwg
dGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIHZlY3RvciA9IG1ha2VVbmlxdWVSZWY8Qk1CeXRlVmVjdG9yPihtYXApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VSZWdF
eHBDb21waWxhdGlvbigpLCAiRm91bmQgYml0bWFwIGxvb2thaGVhZCBjb3VudDooIiwgbWFwQ291
bnQsICIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIikiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gdmVjdG9yLT5k
YXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGV4aXN0
aW5nUG9pbnRlciA9IG1fY29kZUJsb2NrLmZpbmRTYW1lVmVjdG9yKG9wLm1fYm1JbmZvLT5pbmRl
eCgpLCB2ZWN0b3IuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyID0gZXhpc3RpbmdQb2ludGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ibVZlY3Rvci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihwb2ludGVyKSwgcmVnVDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8g
bG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFy
YWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEJNQml0bWFwOjptYXBNYXNrKSwg
cmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQg
PSBicmFuY2hUZXN0MzIoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZO
b0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoKQEAgLTI3ODAsNiArMjk0NCw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoZW5kT3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVF
bmQpOwogCiAgICAgICAgICAgICAgICAgWWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAg
ICAgICAgIHdoaWxlIChiZWdpbk9wLT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2
ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5NjIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICBpZiAob25jZVRocm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNr
aW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9v
cHNbb3AubV9uZXh0T3BdLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFs
dGVybmF0aXZlIGZhaWxlZCwganVtcCB0byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNr
eUFsdGVybmF0aXZlRmFpbHVyZXMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplCkBAIC0yODEzLDQxICsyOTc4LDQx
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJvdW5kIHRv
IHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3Ry
YWNraW5nU3RhdGUubGluayh0aGlzKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8g
bmVlZCB0byBhZHZhbmNlIGFuZCByZXRyeSBmb3IgYSBzdGlja3kgcGF0dGVybi4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLnN0aWNreSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4g
c3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNo
U3RhcnQoaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8g
bmVlZCB0byBhZHZhbmNlIGFuZCByZXRyeSBmb3IgYSBzdGlja3kgcGF0dGVybi4gQW5kIGl0IGlz
IGFscmVhZHkgaGFuZGxlZCBiZWZvcmUgdGhpcyBicmFuY2guCisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1fcGF0dGVybi5zdGlja3koKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBz
dGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA9PSAxKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW92ZShpbmRleCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENo
ZWNrIHdoZXRoZXIgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8p
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVt
U2l6ZSA+IGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50
IGlucHV0IHBvc2l0aW9uLiBJZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1v
cmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1lbnQgYXMgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbHRhID0gYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgLSBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGVsdGEpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YjMyKEltbTMyKGRlbHRhIC0gMSksIGluZGV4KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLT5tX3JlZW50cnkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZSBoYXMgbWluaW11bSBzaXplIDB4RkZGRkZGRkZ1
LCB0aGVuIHRoZXJlIGNhbm5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBi
ZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZhbGwg
dGhyb3VnaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEg
PSBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAh
PSAweEZGRkZGRkZGdSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBjaGVjayBpbnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlu
cHV0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVs
dGEgKyAxKSwgaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJbnB1dCgpLmxpbmtUbyhiZWdpbk9wLT5tX3JlZW50cnksIHRoaXMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0
ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdoZXRoZXIgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgaXMgbG9u
Z2VyIHRoYW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCAoZS5nLiAvYXx4
eS8gb3IgL2F8eHl6LykuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUt
Pm1fbWluaW11bVNpemUgPiBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5j
cmVtZW50IGlucHV0IHBvc2l0aW9uLiBJZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGNvcnJlY3RseSBpbmNyZW1lbnRlZCwgaWYg
bW9yZSB0aGFuIG9uZSB0aGVuIGRlY3JlbWVudCBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplIC0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoZGVsdGEpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChkZWx0YSAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIz
MihJbW0zMihkZWx0YSAtIDEpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
anVtcChiZWdpbk9wLT5tX3JlZW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRp
dmUgaGFzIG1pbmltdW0gc2l6ZSAweEZGRkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxhYmxlIHRv
IGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZhbGwgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgLSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGVsdGEgIT0gMHhGRkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpbnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNy
ZW1lbnRpbmcgdGhlIGlucHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQz
MihJbW0zMihkZWx0YSArIDEpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoZWNrSW5wdXQoKS5saW5rVG8oYmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTM2MDcsNiArMzc3Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VU
aHJvdWdoKCkpIHsKICAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6
Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZp
b3VzT3AgPSBub3RGb3VuZDsKKyAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51
bGxwdHI7CiAKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9w
SW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwpAQCAtMzY0Myw2ICszODA5LDIxIEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICBzaXplX3QgcmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAg
ICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikp
OwogICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAg
IG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CisgICAgICAgIC8vIENvbGxlY3QgQk1J
bmZvIGlmIGl0IGlzIHBvc3NpYmxlIGFuZCBwcm9maXRhYmxlLiBCTUluZm8gd2lsbCBiZSB1c2Vk
IHRvIGVtaXQgZmFzdCBza2lwIHBhdGggd2l0aCBsYXJnZSBzdHJpZGUKKyAgICAgICAgLy8gYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgYm9keSBhbHRlcm5hdGl2ZXMuCisgICAgICAgIC8vIFdlIGRv
IG5vdCBlbWl0IHRoZXNlIGZhc3QgcGF0aCB3aGVuIFJlZ0V4cCBoYXMgc3RpY2t5IG9yIHVuaWNv
ZGUgZmxhZy4gU3RpY2t5IGNhc2UgZG9lcyBub3QgbmVlZCB0aGlzIHNpbmNlCisgICAgICAgIC8v
IGl0IGZhaWxzIHdoZW4gdGhlIGJvZHkgYWx0ZXJuYXRpdmVzIGZhaWwgdG8gbWF0Y2ggd2l0aCB0
aGUgY3VycmVudCBvZmZzZXQuCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHVuaWNvZGUgZmxh
Zy4KKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplICYmIGRpc2p1bmN0aW9u
LT5tX2hhc0ZpeGVkU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYmICFtX3BhdHRlcm4udW5p
Y29kZSgpKSB7CisgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJNSW5mbzo6Y3JlYXRlKHN0ZDo6
bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQk1JbmZvOjptYXhMZW5n
dGgpKTsKKyAgICAgICAgICAgIGlmIChjb2xsZWN0Qk1JbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50
QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgeworICAgICAgICAgICAgICAgIG1fb3Bz
Lmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKKyAgICAgICAgICAgICAgICBibUluZm8t
PnNldEluZGV4KG1fYm1JbmZvcy5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fYm1JbmZvcy5h
cHBlbmQoV1RGTW92ZShibUluZm8pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAt
IDE7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJu
YXRpdmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKQEAgLTM2NjgsNiArMzg0OSw2
OSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gcmVwZWF0TG9v
cDsKICAgICB9CiAKKyAgICBib29sIGNvbGxlY3RCTUluZm8oUGF0dGVybkRpc2p1bmN0aW9uKiBk
aXNqdW5jdGlvbiwgc2l6ZV90IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBCTUluZm8mIGJtSW5m
bykKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBzZWFyY2hpbmcgcGF0dGVybiAvYWJj
ZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0aCBjaGFyYWN0ZXIgYWdhaW5zdCBhIHNldCBv
ZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB3
ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBzdHJhdGVneSBzaW5jZSB0aGlz
IHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQKKyAgICAgICAgLy8gZGlzanVu
Y3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGlnbm9yZS1jYXNlcy4gRm9yIGV4YW1wbGUsIGlu
IHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVjayAzcmQgY2hhcmFjdGVyCisg
ICAgICAgIC8vIGFnYWluc3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFuZCBzaGlmdCAzIGNoYXJhY3Rl
cnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZW4sIHRo
ZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlmdGluZyBpcyB0aGF0IGZpbmRpbmcg
dGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAgICAg
ICAgLy8gbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAvW2Etel1hYWFhYWFhW2Etel0v
LCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5kIGNoZWNrIDh0aCBjaGFyYWN0
ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdl
IGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0
aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8g
c2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlz
IG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxl
IGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVy
aXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAv
LyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKwor
ICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBz
dXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQk0gc2VhcmNoLgorICAgICAgICBBU1NF
UlQoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpOworCisgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG5lc3RlZCBkaXNqdW5jdGlvbnMgKGUuZy4gLyg/OmFiY3xkZWZ8Zyg/OmhpfGprKSkvKS4K
KyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2hhcmFjdGVyLWNsYXNzIChlLmcuIC9bXGRddGVz
dC8pLgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tZml4ZWQtc2l6ZWQgbG9va2FoZWFk
IChlLmcuIC8uKmFiYy8gYW5kIGV4dHJhY3QgImFiYyIgc2VxdWVuY2UpLgorICAgICAgICBhdXRv
JiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIGZv
ciAoOyBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA8IGFsdGVybmF0aXZlcy5zaXplKCk7ICsrY3Vy
cmVudEFsdGVybmF0aXZlSW5kZXgpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGN1cnNvciA9IDA7
CisgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0ZXJuYXRp
dmVzW2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGFsdGVybmF0aXZlLT5tX3Rlcm1zLnNpemUoKSAmJiBj
dXJzb3IgPCBibUluZm8ubGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBQYXR0
ZXJuVGVybSYgdGVybSA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zW2luZGV4XTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHRlcm0udHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkFzc2VydGlvbkJPTDoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpBc3NlcnRpb25FT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAgICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjogeworICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFu
dGl0eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IGlmIChVMTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1
cnJvZ2F0ZVBhaXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAvLyBGb3IgY2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNj
aWkgY2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgIC8v
IHVwcGVyICYgbG93ZXIgY2FzZSByZXByZXNlbnRhdGlvbnMgYXJlIGFscmVhZHkgY29udmVydGVk
IHRvIGEgY2hhcmFjdGVyIGNsYXNzLgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0
dGVybi5pZ25vcmVDYXNlKCkgfHwgaXNBU0NJSUFscGhhKHRlcm0ucGF0dGVybkNoYXJhY3Rlcikg
fHwgaXNDYW5vbmljYWxseVVuaXF1ZSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIG1fY2Fub25pY2Fs
TW9kZSkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAm
JiBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVNDSUlVcHBlcih0ZXJtLnBhdHRlcm5DaGFy
YWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0b0FT
Q0lJTG93ZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRlcm0ucGF0
dGVybkNoYXJhY3Rlcik7CisgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRl
cm5hbDo6dmVyYm9zZSwgIkNoYXJhY3RlcnMgY29sbGVjdGVkIik7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIHZvaWQgZ2VuZXJhdGVUcnlSZWFkVW5pY29kZUNoYXJhY3Rlckhl
bHBlcigpCiAgICAgewogI2lmZGVmIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TCkBAIC0zOTUyLDE0
ICs0MTk2LDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2Rl
ID09IEpJVENvbXBpbGVNb2RlOjpNYXRjaE9ubHkpIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJT
aXplID09IENoYXJTaXplOjpDaGFyOCkKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJp
dENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNo
T25seThCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsK
KyAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVf
UkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seThCaXRQdHJUYWcsICJNYXRjaC1v
bmx5IDgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3ZlKG1fYm1WZWN0b3IpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlTWF0
Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHkxNkJp
dFB0clRhZywgIk1hdGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAg
ICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VY
UF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgIk1hdGNoLW9ubHkg
MTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3ZlKG1fYm1WZWN0b3IpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFy
OCkKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQ
X0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Np
b24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JF
R0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIiksIFdURk1vdmUobV9ibVZlY3RvcikpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlu
a0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsK
KyAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9D
T0RFKGxpbmtCdWZmZXIsIFlhcnIxNkJpdFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Np
b24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZmFp
bHVyZVJlYXNvbikKICAgICAgICAgICAgIGNvZGVCbG9jay5zZXRGYWxsQmFja1dpdGhGYWlsdXJl
UmVhc29uKCptX2ZhaWx1cmVSZWFzb24pOwpAQCAtNDE5Nyw2ICs0NDQxLDggQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAKICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGV4cHJlc3NlZCBhcyBhIGxp
bmVhciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zLgogICAgIFZlY3RvcjxZYXJyT3AsIDEyOD4gbV9v
cHM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxCTUluZm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVj
dG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiBtX2JtVmVjdG9yOwogCiAgICAgLy8gVGhpcyBy
ZWNvcmRzIHRoZSBjdXJyZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUg
Y3VycmVudAogICAgIC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4u
IEUuZy4gd2hlbiBtYXRjaGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApp
bmRleCBlZjM5YzhiNDA0NTJmZDg1YWFiZTNlMDcyOTY1YzBkZjNkYmIwOWY1Li5lYmY0ZGE4ZWNm
MmU2ZTZhZTI0ZjFmNmY4NzAwYjA1MDcxZWY5Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5oCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJZ
YXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+
CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01Niw2ICs1OSw0OCBAQCBlbnVtIGNsYXNzIEpJ
VEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlv
bkZhaWx1cmUsCiB9OwogCitjbGFzcyBCTUJpdG1hcCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoQk1CaXRtYXApOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWFwU2l6ZSA9IDEyODsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1hcE1hc2sgPSAx
MjggLSAxOworICAgIHVzaW5nIE1hcCA9IEJpdG1hcDxtYXBTaXplPjsKKworICAgIEJNQml0bWFw
KCkgPSBkZWZhdWx0OworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50OyB9CisgICAgY29uc3QgTWFwJiBtYXAoKSBjb25zdCB7IHJldHVybiBtX21hcDsgfQorICAg
IGJvb2wgaXNNYXNrRWZmZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tFZmZlY3RpdmU7
IH0KKworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAocG9zaXRp
b24gIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCisgICAgICAgICAgICBtX2lz
TWFza0VmZmVjdGl2ZSA9IHRydWU7CisgICAgICAgIGlmICghbV9tYXAuZ2V0KHBvc2l0aW9uKSkg
eworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAgICAgICsrbV9jb3Vu
dDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9tYXAgeyB9OworICAg
IHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzTWFza0VmZmVjdGl2ZSB7IGZh
bHNlIH07Cit9OworCitjbGFzcyBCTUJ5dGVWZWN0b3IgOiBwdWJsaWMgc3RkOjphcnJheTx1aW50
OF90LCBCTUJpdG1hcDo6bWFwU2l6ZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIEJNQnl0ZVZlY3Rvcihjb25zdCBCTUJpdG1hcDo6TWFwJiBtYXApCisgICAg
eworICAgICAgICBmaWxsKDApOworICAgICAgICBtYXAuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgaW5kZXgpIHsKKyAgICAgICAgICAgICgqdGhpcylbaW5kZXhdID0gMTsKKyAgICAgICAgfSk7
CisgICAgfQorfTsKKwogI2lmIENQVShBUk02NEUpCiBleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJl
c3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRj
aGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOwogZXh0ZXJuICJDIiB2b2lkIHZtRW50
cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKQEAgLTc4LDEzICsxMjMsMzcgQEAgY2xhc3MgWWFyckNv
ZGVCbG9jayB7CiAKICAgICBib29sIGhhczhCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWY4LnNpemUo
KTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlKCkgeyByZXR1cm4gbV9yZWYxNi5zaXplKCk7IH0K
LSAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRh
Zz4gcmVmKSB7IG1fcmVmOCA9IHJlZjsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjE2ID0gcmVmOyB9Cisg
ICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+
IHJlZiwgVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5dGVWZWN0b3I+PiYmIG1hcHMpCisgICAgeworICAg
ICAgICBtX3JlZjggPSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBz
LnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CisgICAgdm9pZCBzZXQxNkJp
dENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmLCBWZWN0b3I8
VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fcmVmMTYg
PSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1h
cHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFw
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hP
bmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRD
b2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lk
IHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAg
IHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0
Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5
OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxCTUJ5
dGVWZWN0b3I+PiYmIG1hcHMpCisgICAgeworICAgICAgICBtX21hdGNoT25seTggPSBtYXRjaE9u
bHk7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1hcHMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcy5z
aXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUobWFwc1tpbmRleF0pKTsKKyAgICB9CisgICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHko
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5
LCBWZWN0b3I8VW5pcXVlUmVmPEJNQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAg
IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNp
dHkobV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21h
cHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBi
b29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250
ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMp
CkBAIC0xNzAsMjAgKzIzOSwzMiBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICAgICAgcmV0
dXJuIG1fcmVmOC5zaXplKCkgKyBtX3JlZjE2LnNpemUoKSArIG1fbWF0Y2hPbmx5OC5zaXplKCkg
KyBtX21hdGNoT25seTE2LnNpemUoKTsKICAgICB9CiAKKyAgICAvLyBDb21waWxlIGFuZCBDbGVh
ciBhcmUgZ3VhcmRlZCBieSBSZWdFeHAncyBjZWxsLWxvY2suIFNvIHRoZXNlIG9wZXJhdGlvbnMg
d29yayBhdG9taWNhbGx5LgogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgbV9yZWY4
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPigpOwogICAgICAgICBtX3Jl
ZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAg
bV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRy
VGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKKyAgICAgICAgbV9tYXBzLmNsZWFyKCk7CiAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKKyAgICBjb25zdCB1
aW50OF90KiBmaW5kU2FtZVZlY3Rvcih1bnNpZ25lZCBpbmRleCwgQk1CeXRlVmVjdG9yJiB2ZWN0
b3IpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaW5kZXggPCBtX21hcHMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAobV9tYXBzW2luZGV4XS5nZXQoKSA9PSB2ZWN0b3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fbWFwc1tpbmRleF0tPmRhdGEoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFlhcnI4Qml0UHRyVGFnPiBtX3JlZjg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnIxNkJpdFB0clRhZz4gbV9yZWYxNjsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1h
dGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21hdGNoT25seTE2OworICAgIFZlY3RvcjxV
bmlxdWVSZWY8Qk1CeXRlVmVjdG9yPj4gbV9tYXBzOwogICAgIGJvb2wgbV91c2VzUGF0dGVybkNv
bnRleHRCdWZmZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SklURmFpbHVyZVJlYXNv
bj4gbV9mYWlsdXJlUmVhc29uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdFZl
Y3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCmluZGV4IDNjZTY4ZmMxYmQ3
ZDJkMGZmMjlmYjZlY2UwMGJiMWE1ZGZiMTM3YjcuLjM5MTYxMjExNmVmODY2Y2I1MDU0NWMzNzc0
MjUyYmE4ZWU0NTA3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcApAQCAtMjYyLDEyICsyNjIsOCBAQCB1
aW50cHRyX3QgQml0VmVjdG9yOjpoYXNoU2xvd0Nhc2UoKSBjb25zdAogCiB2b2lkIEJpdFZlY3Rv
cjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGdldChpKSkKLSAgICAgICAgICAgIG91
dC5wcmludGYoIjEiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0LnByaW50ZigiLSIp
OwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgICAg
ICBvdXQucHJpbnQoZ2V0KGkpID8gIjEiIDogIi0iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0Jp
dG1hcC5oCmluZGV4IDhmMTMyN2E0NzQxMmZkMmFkZDRlYWY1OWIxZjVhZWUzNmRmZjFhODYuLmM1
MDExMGI1ZGVhMTNjZTRiYTViYWRhM2U0OWViNzFmNWMxZDI3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0JpdG1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1By
aW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgpAQCAtMTMwLDYgKzEzMSw4IEBAIGNsYXNz
IEJpdG1hcCBmaW5hbCB7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCB3b3JkU2l6ZSA9IHNpemVvZihXb3JkVHlwZSkgKiA4OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd29yZHMgPSAoYml0bWFwU2l6ZSArIHdvcmRTaXplIC0g
MSkgLyB3b3JkU2l6ZTsKQEAgLTUwNyw2ICs1MTAsMTMgQEAgaW5saW5lIHVuc2lnbmVkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQor
ICAgICAgICBvdXQucHJpbnQoZ2V0KGkpID8gIjEiIDogIi0iKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6Qml0bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCBjNGVlM2RjMTI4
NzRmMTk4ZTFiZjQ1M2YyMzdhOTljZjQ3Njc2ZGU0Li45MzVkMDZjNjY5ZGQ0Y2VlODE3ZTBlMzlj
MmM2OWQ5YzM0ZGVhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtNDYsOSArNDYsOSBAQCBVbmlxdWVS
ZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3Rk
Ojp1bmlxdWVfcHRyPFQ+IHB0cikKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51
bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQogewotICAgIHJldHVybiBVbmlx
dWVSZWY8VD4oKnB0ci5yZWxlYXNlKCkpOworICAgIHJldHVybiBVbmlxdWVSZWY8VD4oV1RGTW92
ZShwdHIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTY3LDYgKzY3LDkgQEAgY2xh
c3MgVW5pcXVlUmVmIHsKICAgICAgICAgQVNTRVJUKG1fcmVmKTsKICAgICB9CiAKKyAgICBUKiBw
dHIoKSBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7
IH0KKyAgICBUKiBwdHIoKSBjb25zdCBSRVRVUk5TX05PTk5VTEwgeyBBU1NFUlQobV9yZWYpOyBy
ZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKwogICAgIFQmIGdldCgpIHsgQVNTRVJUKG1fcmVmKTsgcmV0
dXJuICptX3JlZjsgfQogICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsg
cmV0dXJuICptX3JlZjsgfQogCkBAIC04Myw5ICs4NiwxNSBAQCBjbGFzcyBVbmlxdWVSZWYgewog
CiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBV
bmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4u
KTsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVS
ZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4pOworICAgIHRlbXBsYXRl
PGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5p
cXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPiYmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmll
bmQgY2xhc3MgVW5pcXVlUmVmOwogCisgICAgZXhwbGljaXQgVW5pcXVlUmVmKHN0ZDo6dW5pcXVl
X3B0cjxUPiYmIHB0cikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKHB0cikpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9yZWYpOworICAgIH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtX3Jl
ZjsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZGFhY2Y5N2Y5NThjODVkYzlmNTJkNGMyZTJlMjhlMzI3Yjg4ODFlZC4uZjczZDg0
MDE4NDcxM2NkYjg1MTYxZGRlMTczMjE5OTA3MTdkODU1MyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0w
Ny0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1y
ZWdleHAuanM6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctY2hhcmFj
dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvcmVn
ZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAqIHN0cmVzcy9yZWdleHAtYml0dmVjdG9yLXJldXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFy
Y2gtY2hhcmFjdGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBz
dHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKwogMjAyMS0wNy0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CiAKICAgICAgICAgUGFydGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90b3R5cGUu
e2NhbGxlcixhcmd1bWVudHN9IHJlZmxlY3Rpb24gcHJvcG9zYWwKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcwppbmRleCBhZjNhNDI0NTk3ZTE3
MzlkMmNkYTNkMDMzY2QyNTk0ZGQyNDc4ZTYxLi40ZjMwYWVlODg3MzU1YTM3ZjIxZTg2NWU2ZjE0
NzdkMTgyYjU3MWZhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnkt
dG9kb212Yy1yZWdleHAuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRv
ZG9tdmMtcmVnZXhwLmpzCkBAIC04NDIwOSw3ICs4NDIwOSw4IEBAIGZ1bmN0aW9uIHRlc3QocmVn
RXhwcywgc3RyaW5ncykgewogICAgIHJlZ0V4cCQxNi5sYXN0SW5kZXggPSAwOwogICAgIHJlc3Vs
dHMgPSByZWdFeHAkMTYuZXhlYyhzdHJpbmckMjE1KTsKIH0KLW5vSW5saW5lKHRlc3QpOworaWYg
KHR5cGVvZiBub0lubGluZSAhPT0gInVuZGVmaW5lZCIpCisgICAgbm9JbmxpbmUodGVzdCk7CiBy
ZWdFeHBzLnB1c2goL2F2b2lkIGNvbnN0YW50IGZvbGRpbmcvZ2kpOwogc3RyaW5ncy5wdXNoKC9h
dm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7ICsraSkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctY2hhcmFj
dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1jaGFyYWN0ZXIu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODMzZTBkNjgwZDZhMWU3MTQwMTVjNWEwNWYyNGZiNjc5MjFjNThlMgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmct
Y2hhcmFjdGVyLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL2Fh
YWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFh
YWJiYmIvaTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIHNob3VsZEJl
KHJlZ2V4cC50ZXN0KCJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRk
YWFhYWJiYmJjY2NjZGRkYWFhYWJiYmJjY2NjZGRkZGZmZmZmIiksIGZhbHNlKTsKKyAgICBzaG91
bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFh
YmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYmJh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJj
Y2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmFhYWFiYmJiYWFh
YWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiZmZmZmYiKSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAiYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJi
YWFhYWJiYmJhYWFhYmJiYmFhYmJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2Rk
ZGQiKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAiZmZmZmYiKTsKKyAgICBz
aG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJj
Y2NjZGRkZGFhYWFiYmJiY2NjY2RkZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKSwgZmFsc2UpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAu
anMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLW1hcC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNWNmYWY2ZjJhZDVjMmVmNmY0OWM5YjdkN2JiYmUyMzY0MDY3MDJhCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanMKQEAg
LTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAvYWFhYWJiYmJjY2NjZGRkZGFh
YWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGQvaTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTI7ICsraSkgeworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRkYWFhYWJiYmJjY2NjZGRkZGZm
ZmZmIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgImFiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWJjZGVmZyIpOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENvbnRleHQs
ICJmZmZmZiIpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRmZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZiIpLCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYml0
dmVjdG9yLXJldXNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZTMxZWYyZmE1OGM3OGY0MGUyNjExMzBiYjM1YWQ1NDYxYTE4ZjNkCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5q
cwpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciByZWdleHAgPSAvc2NyaXB0LzsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZSgvc2NyaXB0Ly50ZXN0KCJ0
ZXN0dGVzdHNjcmlwdCIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQs
ICJ0ZXN0dGVzdCIpOworICAgIHNob3VsZEJlKC9zY3JpcHQvLnRlc3QoJHZtLm1ha2UxNkJpdFN0
cmluZ0lmUG9zc2libGUoInRlc3R0ZXN0c2NyaXB0IikpLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWdFeHAubGVmdENvbnRleHQsICJ0ZXN0dGVzdCIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZiYTY3NGY5MjM3YTBhNDI5M2Q3MWUwZGRmMmM5OWFiNWY5YTY4YjAKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1jaGFyYWN0ZXIu
anMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAv5LuK5pelL2k7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVz
dCgi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44Gn5LuK5pel44Gv44G+44Gg55yg44GE44CCIiks
IHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgIuaYqOaXpemBheOBj+OB
q+WvneOBn+OBruOBpyIpOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENvbnRleHQsICLjga/j
gb7jgaDnnKDjgYTjgIIiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiQmVjYXVzZSBJIHdl
bnQgdG8gYmVkIGxhdGUgbGFzdCBuaWdodCwgSSdtIHN0aWxsIHNsZWVweSIpLCBmYWxzZSk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1t
YXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1tYXAuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzIyYThlZWUxMWEzZTM5MTBjMTZjM2IxMDA1OTBlOTNlMzE2MWQ1NAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNo
LW1hcC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC/ku4rml6V8
5piO5pelL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRC
ZShyZWdleHAudGVzdCgi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44Gn5LuK5pel44Gv44G+44Gg
55yg44GE44CCIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgIuaY
qOaXpemBheOBj+OBq+WvneOBn+OBruOBpyIpOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENv
bnRleHQsICLjga/jgb7jgaDnnKDjgYTjgIIiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgi
QmVjYXVzZSBJIHdlbnQgdG8gYmVkIGxhdGUgbGFzdCBuaWdodCwgSSdtIHN0aWxsIHNsZWVweSIp
LCBmYWxzZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434480</attachid>
            <date>2021-07-28 17:55:13 -0700</date>
            <delta_ts>2021-07-28 17:57:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728175512.patch</filename>
            <type>text/plain</type>
            <size>48039</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi4yOTJkNWQ4YmQxNzRmYjMx
NzA4ZWY5ODhhYWE1MTliZTQ1MWUyMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVtaXRz
IHNraXBwaW5nIGZhc3QtcGF0aCBhdCB0aGUgYmVnaW5uaW5nIG9mIGJvZHkgYWx0ZXJuYXRpdmVz
IHdpdGggYSBsYXJnZSBzdHJpZGUuIFNvIHdlIGNhbiBxdWlja2x5IGRpc2NhcmQgdW5yZWxhdGVk
IGNoYXJhY3RlcnMKKyAgICAgICAgYW5kIGF0dGVtcHQgdG8gZmluZCBwb3NzaWJseSByZWxhdGVk
IHNlcXVlbmNlIGluIHRoZSBsb25nIHNlcXVlbmNlLgorCisgICAgICAgIElmIHdlIGhhdmUgYSBz
ZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0aCBjaGFy
YWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAgIElmIGl0
IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBz
dHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQK
KyAgICAgICAgZGlzanVuY3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGlnbm9yZS1jYXNlcy4g
Rm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVjayAz
cmQgY2hhcmFjdGVyCisgICAgICAgIGFnYWluc3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFuZCBzaGlm
dCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisKKyAgICAgICAgVGhlbiwgdGhl
IGJlc3Qgd2F5IHRvIHBlcmZvcm0gdGhlIGFib3ZlIHNoaWZ0aW5nIGlzIHRoYXQgZmluZGluZyB0
aGUgbG9uZ2VzdCBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAg
ICBtYW55IGNhbmRpZGF0ZXMuIEluIHRoZSBjYXNlIG9mIC9bYS16XWFhYWFhYWFbYS16XS8sIHdl
IGNhbiBleHRyYWN0ICJhYWFhYWFhIiBzZXF1ZW5jZSBhbmQgY2hlY2sgOHRoIGNoYXJhY3RlciBh
Z2FpbnN0IHthfS4KKyAgICAgICAgSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNo
aWZ0IDcgY2hhcmFjdGVycyAobGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMg
YmV0dGVyIHRoYW4gdXNpbmcgIlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICBzZXF1ZW5jZSBh
bmQge2Eten0gc2V0IHNpbmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisK
KyAgICAgICAgV2UgZmlyc3QgY29sbGVjdCBwb3NzaWJsZSBjaGFyYWN0ZXJzIGZvciBlYWNoIGNo
YXJhY3RlciBwb3NpdGlvbi4gVGhlbiwgYXBwbHkgaGV1cmlzdGljcyB0byBleHRyYWN0IGdvb2Qg
Y2hhcmFjdGVyIHNlcXVlbmNlIGZyb20KKyAgICAgICAgdGhhdCBhbmQgY29uc3RydWN0IGZhc3Qg
c2VhcmNoaW5nIHdpdGggbG9uZyBzdHJpZGUuCisKKyAgICAgICAgTWljcm9iZW5jaG1hcmsgd2hp
Y2ggcGVyZm9ybXMgUmVnRXhwIG9wcyBpbiBTcGVlZG9tZXRlcjIvalF1ZXJ5LVRvZG9NVkMgc2hv
d3MgMjUlIGltcHJvdmVtZW50LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlZAorCisgICAgICAgICAg
ICBqcXVlcnktdG9kb212Yy1yZWdleHAgICAgICA3MjMuOTczOSstMS4zOTk3ICAgICBeICAgIDU3
OS4xNjk4Ky0xLjI1MDUgICAgICAgIF4gZGVmaW5pdGVseSAxLjI1MDB4IGZhc3RlcgorCisgICAg
ICAgIFRoaXMgaW1wcm92ZXMgU3BlZWRvbWV0ZXIyL2pRdWVyeS1Ub2RvTVZDIGJ5IDMlLgorCisg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
c3VidGVzdCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAgIHwgICAgIG1zICAgICAgfCAgYiAv
IGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8
CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICB8IEVsbS1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgICAgICB8MTIzLjM2NTYyNSAgIHwxMjMuNDU2MjUwICAgfDEu
MDAwNzM1ICB8IDAuODA0MDc3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IFZ1ZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8
MjYuOTEyNTAwICAgIHwyNi45MjUwMDAgICAgfDEuMDAwNDY0ICB8IDAuOTY5NjAzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEVtYmVySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI3LjU0MDYyNSAgIHwxMjcuNTYyNTAwICAg
fDEuMDAwMTcyICB8IDAuOTYwNDc0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICB8IEJhY2tib25lSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICB8NTAuNjA2MjUwICAgIHw1MC41MTg3NTAgICAgfDAuOTk4MjcxICB8IDAuNjcwMzEzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFByZWFj
dC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjEuMDE4NzUwICAgIHwyMC44NTAwMDAg
ICAgfDAuOTkxOTcxICB8IDAuNTYzODE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICB8MTM2Ljk0Mzc1MCAgIHwxMzcuMjcxODc1ICAgfDEuMDAyMzk2ICB8IDAuNTMxNTEzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZh
bmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8NjguNTIxODc1ICAgIHw2OC41OTM3
NTAgICAgfDEuMDAxMDQ5ICB8IDAuNzAxMzc2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8IEluZmVybm8tVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgICB8NjUuNTU5Mzc1ICAgIHw2NS44MDMxMjUgICAgfDEuMDAzNzE4ICB8IDAuNDE0NDE4
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8NzcuMjg0Mzc1ICAgIHw3Ni43
MTU2MjUgICAgfDAuOTkyNjQxICB8IDAuMjE5ODcwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01W
QyAgICAgICAgICB8NDAuNzI1MDAwICAgIHw0MC4zMTg3NTAgICAgfDAuOTkwMDI1ICB8IDAuMjgx
MjEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICB8NTUuMjA5Mzc1ICAgIHw1
NC43MTU2MjUgICAgfDAuOTkxMDU3ICB8IDAuMDU2OTIxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgICAgICB8MjY2LjM5Njg3NSAgIHwyNTguNDcxODc1ICAgfDAuOTcwMjUxICB8IDAu
MDAwMDAwIChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
ICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAgICAgICAgICB8MzQxLjU1MDAwMCAg
IHwzNDEuODU2MjUwICAgfDEuMDAwODk3ICB8IDAuNjE4MTQwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFJlYWN0LVRvZG9NVkMgICAgICAg
ICAgICAgICAgICAgICAgICB8ODguNzMxMjUwICAgIHw4OC44NzE4NzUgICAgfDEuMDAxNTg1ICB8
IDAuNTEyNDA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAgICAgICAgICAgICB8MTUwLjM0MDYy
NSAgIHwxNTAuMDY1NjI1ICAgfDAuOTk4MTcxICB8IDAuNDEyOTQwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LUJh
YmVsLVdlYnBhY2stVG9kb01WQyB8NjUuMzkwNjI1ICAgIHw2NS4zNjI1MDAgICAgfDAuOTk5NTcw
ICB8IDAuODM0NzYwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICBhIG1lYW4gPSAyNDUuOTY5
OTcKKyAgICAgICAgICAgIGIgbWVhbiA9IDI0Ni44NjM2NgorICAgICAgICAgICAgcFZhbHVlID0g
MC4wMDYxNDQ4NDAyCisgICAgICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAg
ICAgICAgICAgMS4wMDQgdGltZXMgYmV0dGVyCisgICAgICAgICAgICBSZXN1bHRzIEFSRSBzaWdu
aWZpY2FudAorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpCb3ll
ck1vb3JlSW5mbyk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpsZW5ndGgg
Y29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2V0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmluZGV4IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6WWFycjo6Qm95ZXJNb29yZUluZm86OnNldEluZGV4KToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qm95ZXJNb29yZUluZm86OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJ
bmZvOjpmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qm95ZXJNb29yZUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VGb3JMb29r
YWhlYWQgY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6Y3JlYXRl
Q2FuZGlkYXRlQml0bWFwIGNvbnN0KToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6Y291bnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjptYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCb3llck1vb3JlQml0bWFwOjppc01hc2tFZmZlY3RpdmUgY29uc3QpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGQpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlQnl0ZVZlY3Rvcjo6Qm95ZXJNb29yZUJ5dGVWZWN0b3IpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJDb2RlQmxvY2s6OnNldDE2Qml0Q29kZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJD
b2RlQmxvY2s6OnNldDhCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
ckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KToKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckNvZGVCbG9jazo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2Nr
OjpmaW5kU2FtZVZlY3RvciBjb25zdCk6CisKIDIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBsb2FkL3N0b3JlIHdpdGggQmFzZUlu
ZGV4IGlzIGluZWZmaWNpZW50IGluIEFSTTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NGEzZjBlYmEwYjlhOWFkNmMxYjIx
YTlmYTUzYzAwMDJmZTRlODIuLjE5YTJkYjg4YjcxN2YyOTQ2MjM4ZGRkNjNkOGIzOWFiM2ZkNGI4
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIHNob3VsZCBwZXJmb3JtIEJNIHNl
YXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKiB3dGYvQml0bWFwLmg6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZHVtcCBj
b25zdCk6CisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgorICAgICAgICAoV1RGOjptYWtlVW5p
cXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIpOgorICAgICAgICAoV1RGOjpVbmlxdWVSZWY6OlVu
aXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5Mwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggM2RmY2M5
MTIwOWQ0NTg5OWRmZTM5N2MxMjI0ZTE4OWFjZGU5MWU3OC4uMWI5YzEwMTg3NjAxYjM3ZDFiZjEx
NjIzMDE5ZGZhNjc4MzEyMTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCkBAIC00NTIsNiArNDUyLDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZh
c3RNZW1vcnkoKTsKICAgICB2KFVuc2lnbmVkLCBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2Fj
aGluZywgMiwgTm9ybWFsLCAiTnVtYmVyIG9mIHByb3RvdHlwZSBwcm9wZXJ0eSBoaXRzIGJlZm9y
ZSBjYWNoaW5nIGEgcHJvdG90eXBlIGluIHRoZSBMTEludC4gQSBjb3VudCBvZiAwIG1lYW5zIG5l
dmVyIGNhY2hlLiIpIFwKICAgICBcCiAgICAgdihCb29sLCBkdW1wQ29tcGlsZWRSZWdFeHBQYXR0
ZXJucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdmVyYm9zZVJlZ0V4
cENvbXBpbGF0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9v
bCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9v
bCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA4YjUwMWVlMzQwNzU0OGU0YTRl
MWEwZDcwNTg5ODRkOGQyZjY1YjliLi41MjY1N2U5ZWM1NjFlYWFkMzMwMzhkMzYzNTBjOWU2ZThl
ZDI4ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgdGhlIFY4IHByb2plY3QgYXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzQsMTcgKzM1LDEyNiBAQAogI2luY2x1ZGUgIllhcnJEaXNhc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgWWFyciB7CituYW1lc3BhY2UgWWFyckpJVEludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4
cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9U
QVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50
cnlUb1lhcnJKSVRBZnRlcik7CiAjZW5kaWYKIAorY2xhc3MgQm95ZXJNb29yZUluZm8geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVyTW9vcmVJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRChCb3llck1vb3JlSW5mbyk7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhMZW5ndGggPSAzMjsKKworICAgIGV4cGxpY2l0IEJveWVyTW9vcmVJbmZv
KHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHRoaXMtPmxlbmd0aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsg
fQorCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAg
IHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lk
IHNldEluZGV4KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGluZGV4
OworICAgIH0KKworICAgIHN0YXRpYyBVbmlxdWVSZWY8Qm95ZXJNb29yZUluZm8+IGNyZWF0ZSh1
bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCb3ll
ck1vb3JlSW5mbz4obGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZv
ckxvb2thaGVhZCgpIGNvbnN0OworICAgIHN0ZDo6dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFw
LCBib29sPiBjcmVhdGVDYW5kaWRhdGVCaXRtYXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVu
ZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RkOjp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNp
Z25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0
ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0b3I8Qm95ZXJNb29yZUJpdG1hcD4gbV9jaGFyYWN0
ZXJzOworICAgIHVuc2lnbmVkIG1faW5kZXggeyAwIH07Cit9OworCitzdGQ6OnR1cGxlPGludCwg
dW5zaWduZWQsIHVuc2lnbmVkPiBCb3llck1vb3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1
ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3QKK3sKKyAgICBpbnQg
YmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNpZ25lZCBiZWdpblJlc3VsdCA9IDA7CisgICAgdW5z
aWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFy
YWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVtYmVyT2ZDYW5kaWRhdGVzTGltaXQpCisgICAgICAg
ICAgICArK2luZGV4OworICAgICAgICBpZiAoaW5kZXggPT0gbGVuZ3RoKCkpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgYmVnaW4gPSBpbmRleDsKKyAgICAgICAgQm95ZXJN
b29yZUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgp
ICYmIG1fY2hhcmFjdGVyc1tpbmRleF0uY291bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1p
dDsgKytpbmRleCkKKyAgICAgICAgICAgIG1hcC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1h
cCgpKTsKKworICAgICAgICAvLyBJZiBtYXAgaGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2lu
dCBvZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBzaW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRo
aW5ncy4KKyAgICAgICAgLy8gQW5kIGlmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhl
IHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgaGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkg
Y2hhcmFjdGVycy4KKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcg
YWxsIGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hh
cmFjdGVyIHNpbmNlIGUuZy4gJ2UnIHNob3VsZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4g
J1x2Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5jeSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQg
bWF0Y2hpbmdQcm9iYWJpbGl0eSA9IEJveWVyTW9vcmVCaXRtYXA6Om1hcFNpemUgLSBmcmVxdWVu
Y3k7CisgICAgICAgIGludCBwb2ludCA9IChpbmRleCAtIGJlZ2luKSAqIG1hdGNoaW5nUHJvYmFi
aWxpdHk7CisgICAgICAgIGlmIChwb2ludCA+IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAg
YmlnZ2VzdFBvaW50ID0gcG9pbnQ7CisgICAgICAgICAgICBiZWdpblJlc3VsdCA9IGJlZ2luOwor
ICAgICAgICAgICAgZW5kUmVzdWx0ID0gaW5kZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0UG9pbnQsIGJlZ2luUmVzdWx0LCBlbmRSZXN1bHQgfTsK
K30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD4+IEJveWVy
TW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdl
ciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJvZml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdp
bGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRvbyBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBs
aW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3RlciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0
IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0CisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBz
dGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBlbmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9y
ZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGlu
dCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFj
dGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25lZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlk
YXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0gMikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwg
bmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAg
ICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2VzdFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0
UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAgICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAg
ICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9p
bnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUg
eyBiZWdpbiwgZW5kIH07Cit9CisKK3N0ZDo6dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBi
b29sPiBCb3llck1vb3JlSW5mbzo6Y3JlYXRlQ2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2lu
LCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7CisgICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7
IH07CisgICAgYm9vbCBpc01hc2tFZmZlY3RpdmUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gYmVnaW47IGluZGV4IDwgZW5kOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIGJt
Qml0bWFwID0gbV9jaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgbWFwLm1lcmdlKGJtQml0bWFw
Lm1hcCgpKTsKKyAgICAgICAgaXNNYXNrRWZmZWN0aXZlIHw9IGJtQml0bWFwLmlzTWFza0VmZmVj
dGl2ZSgpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IG1hcCwgaXNNYXNrRWZmZWN0
aXZlIH07Cit9CisKIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCkBAIC04
MzAsNiArOTQwLDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIHZhbHVlIHRoYXQgd2ls
bCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVybidzIGZyYW1lIHRvIHJldHVybiB0bywKICAgICAg
ICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFjayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4KICAgICAg
ICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRkcmVzczsKKworICAgICAgICBCb3llck1vb3JlSW5m
byogbV9ibUluZm87CiAgICAgfTsKIAogICAgIC8vIEJhY2t0cmFja2luZ1N0YXRlCkBAIC0xNDEw
LDcgKzE1MjIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICAgICAgYWxsQ2hhcmFjdGVy
cyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGN1cnJlbnRDaGFyYWN0ZXIpIDw8IHNoaWZ0QW1v
dW50KTsKIAotICAgICAgICAgICAgaWYgKChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpKSAmJiAoaXNB
U0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgIGlmIChtX3BhdHRlcm4u
aWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYShjdXJyZW50Q2hhcmFjdGVyKSkKICAgICAgICAg
ICAgICAgICBpZ25vcmVDYXNlTWFzayB8PSAzMlVMTCA8PCBzaGlmdEFtb3VudDsKICAgICAgICAg
fQogCkBAIC0yMjU2LDExICsyMzY4LDYzIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMs
IGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgIC8vIHRvIHJ1biB0
aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlzIHByb2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0aW9u
KS4KICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlu
cHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSk7CisgICAgICAgICAgICAgICAgbV9jaGVj
a2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworCiAgICAgICAgICAgICAg
ICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVyIHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5w
dXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAgICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJv
cHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5
ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAvLyBFbWl0IGZhc3Qgc2tpcCBw
YXRoIHdpdGggc3RyaWRlIGlmIHdlIGhhdmUgQm95ZXJNb29yZUluZm8uCisgICAgICAgICAgICAg
ICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBv
cC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgp
OworICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZEluZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW21hcCwgaXNNYXNrRWZmZWN0aXZlXSA9
IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRhdGVCaXRtYXAoYmVnaW5JbmRleCwgZW5kSW5kZXgp
OworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWFwQ291bnQgPSBtYXAuY291bnQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNhbmRpYXRlIGNoYXJhY3RlcnMgYXJl
IDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0dGVyIHRoYW4gdXNpbmcgdmVjdG9yLgorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3Jl
Qml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIz
MiBjaGFyYWN0ZXIyID0gMHhmZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFw
Q291bnQgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIy
ID0gbWFwLmZpbmRCaXQoY2hhcmFjdGVyMSArIDEsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMiAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6
OnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlv
bigpLCAiRm91bmQgMS1vci0yIGNoYXJhY3RlcnMgbG9va2FoZWFkIGNoYXJhY3RlcjooMHgiLCBo
ZXgoY2hhcmFjdGVyMSksICIpLGNoYXJhY3RlcjI6KCIsIGhleChjaGFyYWN0ZXIyKSwgIiksaXNN
YXNrRWZmZWN0aXZlOigiLCBpc01hc2tFZmZlY3RpdmUsIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgs
ICIsICIsIGVuZEluZGV4LCAiKSIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVt
cExpc3QgbWF0Y2hlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFk
ID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1f
Y2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgcmVnVDApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc01hc2tFZmZlY3RpdmUpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihCb3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVn
VDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChi
cmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBDb3VudCA9PSAyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRy
dXN0ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Lm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbklu
ZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVh
ZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHZlY3RvciA9IG1ha2VVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+
KG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50
OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAi
KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBvaW50ZXIg
PSB2ZWN0b3ItPmRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3Qg
YXV0byogZXhpc3RpbmdQb2ludGVyID0gbV9jb2RlQmxvY2suZmluZFNhbWVWZWN0b3Iob3AubV9i
bUluZm8tPmluZGV4KCksIHZlY3Rvci5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvaW50ZXIgPSBleGlzdGluZ1BvaW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFw
cGVuZChXVEZNb3ZlKHZlY3RvcikpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCByZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQm95ZXJNb29y
ZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdU
MSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9q
dW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQ6CkBAIC0yNzgwLDYgKzI5
NDQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBtX29wc1tvcC5t
X25leHRPcF07CisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLm1fb3AgPT0gWWFyck9wQ29k
ZTo6Qm9keUFsdGVybmF0aXZlRW5kKTsKIAogICAgICAgICAgICAgICAgIFlhcnJPcCogYmVnaW5P
cCA9ICZvcDsKICAgICAgICAgICAgICAgICB3aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBZYXJyT3BD
b2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikgewpAQCAtMjc5Nyw3ICsyOTYyLDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKG9uY2VUaHJvdWdoKQogICAgICAgICAgICAg
ICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtUbyhlbmRPcC5tX3JlZW50cnksIHRoaXMp
OwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0
ZXJuLnN0aWNreSgpICYmIG1fb3BzW29wLm1fbmV4dE9wXS5tX29wID09IFlhcnJPcENvZGU6OkJv
ZHlBbHRlcm5hdGl2ZUVuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0
aWNreSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIHN0aWNreSBwYXR0
ZXJuIGFuZCB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBmYWlsZWQsIGp1bXAgdG8gdGhlIGVuZC4KICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUudGFrZUJhY2t0cmFja3NU
b0p1bXBMaXN0KGxhc3RTdGlja3lBbHRlcm5hdGl2ZUZhaWx1cmVzLCB0aGlzKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZQpA
QCAtMjgxMyw0MSArMjk3OCw0MSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFyb3VuZCB0byB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gYWR2YW5jZSBhbmQgcmV0cnkgZm9yIGEgc3RpY2t5
IHBhdHRlcm4uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5zdGlja3ko
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUg
aXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1h
dGNoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+
bV9oYXNGaXhlZFNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
KGluZGV4LCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwg
cmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwg
cmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFy
dChyZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gYWR2YW5jZSBhbmQgcmV0cnkgZm9yIGEgc3RpY2t5
IHBhdHRlcm4uIEFuZCBpdCBpcyBhbHJlYWR5IGhhbmRsZWQgYmVmb3JlIHRoaXMgYnJhbmNoLgor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uc3RpY2t5KCkpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhl
ZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFy
dChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemUgLSAxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0
Y2hTdGFydChyZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJh
dGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0aGVyIHRoZSBsYXN0IGFsdGVybmF0aXZlIGlzIGxv
bmdlciB0aGFuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IChlLmcu
IC9hfHh5LyBvciAvYXx4eXovKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8g
bG9vcCwgYW5kIGluY3JlbWVudCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlzIDEsIGl0
IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgY29ycmVjdGx5
IGluY3JlbWVudGVkLCBpZiBtb3JlIHRoYW4gb25lIHRoZW4gZGVjcmVtZW50IGFzIGFwcHJvcHJp
YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IGFs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRhKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDEpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAtIDEpLCBpbmRl
eCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVu
dHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmlt
dW0gc2l6ZSAweEZGRkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYmUgc3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUg
dGhpcywgc28ganVzdCBmYWxsIHRocm91Z2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGRlbHRhID0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSAtIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGVsdGEgIT0gMHhGRkZGRkZGRnUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQgYmVjYXVzZSB3ZSBhcmUg
aW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZDMyKEltbTMyKGRlbHRhICsgMSksIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQoKS5saW5rVG8oYmVnaW5PcC0+bV9yZWVudHJ5LCB0
aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0aGVyIHRoZSBsYXN0
IGFsdGVybmF0aXZlIGlzIGxvbmdlciB0aGFuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8pLgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID4gYmVnaW5PcC0+bV9hbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdh
bnQgdG8gbG9vcCwgYW5kIGluY3JlbWVudCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlz
IDEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBjb3JyZWN0
bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1lbnQgYXMgYXBwcm9w
cmlhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoZGVsdGEgLSAxKSwgaW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVudHJ5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIGZpcnN0IGFsdGVybmF0aXZlIGhhcyBtaW5pbXVtIHNpemUgMHhGRkZGRkZGRnUsIHRoZW4g
dGhlcmUgY2Fubm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc3VmZmljZW50
IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxsIHRocm91Z2guCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2Fs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDB4RkZGRkZGRkZ1KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQg
YmVjYXVzZSB3ZSBhcmUgaW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lucHV0KCkubGlua1RvKGJlZ2luT3AtPm1fcmVl
bnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNjA3LDYgKzM3NzIsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgJiYgYWx0
ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgpKSB7CiAgICAgICAgICAgICBtX29wcy5hcHBlbmQo
WWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgICAgICBt
X29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgICAgICBtX29wcy5s
YXN0KCkubV9ibUluZm8gPSBudWxscHRyOwogCiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKQEAgLTM2NDMsNiAr
MzgwOSwyMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgc2l6ZV90IHJlcGVhdExvb3AgPSBt
X29wcy5zaXplKCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9k
eUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9
IG5vdEZvdW5kOworICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOworICAg
ICAgICAvLyBDb2xsZWN0IEJveWVyTW9vcmVJbmZvIGlmIGl0IGlzIHBvc3NpYmxlIGFuZCBwcm9m
aXRhYmxlLiBCb3llck1vb3JlSW5mbyB3aWxsIGJlIHVzZWQgdG8gZW1pdCBmYXN0IHNraXAgcGF0
aCB3aXRoIGxhcmdlIHN0cmlkZQorICAgICAgICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBi
b2R5IGFsdGVybmF0aXZlcy4KKyAgICAgICAgLy8gV2UgZG8gbm90IGVtaXQgdGhlc2UgZmFzdCBw
YXRoIHdoZW4gUmVnRXhwIGhhcyBzdGlja3kgb3IgdW5pY29kZSBmbGFnLiBTdGlja3kgY2FzZSBk
b2VzIG5vdCBuZWVkIHRoaXMgc2luY2UKKyAgICAgICAgLy8gaXQgZmFpbHMgd2hlbiB0aGUgYm9k
eSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IG9mZnNldC4KKyAg
ICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5pY29kZSBmbGFnLgorICAgICAgICBpZiAoZGlzanVu
Y3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplICYmICFt
X3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0dGVybi51bmljb2RlKCkpIHsKKyAgICAgICAgICAg
IGF1dG8gYm1JbmZvID0gQm95ZXJNb29yZUluZm86OmNyZWF0ZShzdGQ6Om1pbjx1bnNpZ25lZD4o
ZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUsIEJveWVyTW9vcmVJbmZvOjptYXhMZW5ndGgpKTsK
KyAgICAgICAgICAgIGlmIChjb2xsZWN0Qm95ZXJNb29yZUluZm8oZGlzanVuY3Rpb24sIGN1cnJl
bnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8uZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgbV9v
cHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZvLnB0cigpOworICAgICAgICAgICAgICAgIGJtSW5m
by0+c2V0SW5kZXgobV9ibUluZm9zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9ibUluZm9z
LmFwcGVuZChXVEZNb3ZlKGJtSW5mbykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgp
IC0gMTsKICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRl
cm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwpAQCAtMzY2OCw2ICszODQ5
LDY5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRM
b29wOwogICAgIH0KIAorICAgIGJvb2wgY29sbGVjdEJveWVyTW9vcmVJbmZvKFBhdHRlcm5EaXNq
dW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQm95
ZXJNb29yZUluZm8mIGJtSW5mbykKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBzZWFy
Y2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0aCBjaGFyYWN0
ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAgIC8vIElmIGl0
IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBz
dHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQK
KyAgICAgICAgLy8gZGlzanVuY3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGlnbm9yZS1jYXNl
cy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVj
ayAzcmQgY2hhcmFjdGVyCisgICAgICAgIC8vIGFnYWluc3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFu
ZCBzaGlmdCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisgICAgICAgIC8vCisg
ICAgICAgIC8vIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlmdGlu
ZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRv
ZXMgbm90IGhhdmUKKyAgICAgICAgLy8gbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAv
W2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5k
IGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMg
bm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFh
YWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFb
YS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQg
d2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJz
dCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9u
LiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVu
Y2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0
aCBsb25nIHN0cmlkZS4KKworICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRT
aXplKTsgLy8gV2Ugb25seSBzdXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQm95ZXJN
b29yZSBzZWFyY2guCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7
CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbmVzdGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAv
KD86YWJjfGRlZnxnKD86aGl8amspKS8pLgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjaGFy
YWN0ZXItY2xhc3MgKGUuZy4gL1tcZF10ZXN0LykuCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0
IG5vbi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUuZy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJj
IiBzZXF1ZW5jZSkuCisgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5t
X2FsdGVybmF0aXZlczsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4IDwg
YWx0ZXJuYXRpdmVzLnNpemUoKTsgKytjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCkgeworICAgICAg
ICAgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2
ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdl
dCgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJu
YXRpdmUtPm1fdGVybXMuc2l6ZSgpICYmIGN1cnNvciA8IGJtSW5mby5sZW5ndGgoKTsgKytpbmRl
eCkgeworICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1f
dGVybXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgorICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKKyAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgor
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0
dGVybjoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRv
dFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlw
ZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQgIT0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
aW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hh
cmFjdGVyKSAhPSAxICYmIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBjYXNlLWlu
c2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJl
bnQKKyAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0
aW9ucyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxw
aGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0
dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFy
YWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9B
U0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBi
bUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xs
ZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0
ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNP
REVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQgKzQxOTYsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAK
ICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkg
ewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1i
aXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4
Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0
Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiks
IFdURk1vdmUobV9ibVZlY3RvcikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNvZGVCbG9jay5zZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlu
a0J1ZmZlciwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAxNi1iaXQgcmVn
dWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENv
ZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25s
eTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdU
Rk1vdmUobV9ibVZlY3RvcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1f
Y2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5z
ZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyOEJpdFB0clRh
ZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQ
dHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29k
ZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1i
aXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQx
NkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFn
LCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3ZlKG1fYm1WZWN0b3IpKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobV9mYWlsdXJlUmVhc29uKQogICAgICAgICAgICAgY29kZUJs
b2NrLnNldEZhbGxCYWNrV2l0aEZhaWx1cmVSZWFzb24oKm1fZmFpbHVyZVJlYXNvbik7CkBAIC00
MTk3LDYgKzQ0NDEsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIC8vIFRoZSByZWd1bGFyIGV4
cHJlc3Npb24gZXhwcmVzc2VkIGFzIGEgbGluZWFyIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuCiAg
ICAgVmVjdG9yPFlhcnJPcCwgMTI4PiBtX29wczsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEJveWVy
TW9vcmVJbmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29y
ZUJ5dGVWZWN0b3I+PiBtX2JtVmVjdG9yOwogCiAgICAgLy8gVGhpcyByZWNvcmRzIHRoZSBjdXJy
ZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUgY3VycmVudAogICAgIC8v
IHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBtYXRj
aGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCBlZjM5YzhiNDA0
NTJmZDg1YWFiZTNlMDcyOTY1YzBkZjNkYmIwOWY1Li4wOWFhYzI4NjFjMjliYzQ3YTE0ZDBhNjcy
OWM0YzgyMGRiMDI3N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0z
Miw2ICszMiw5IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVk
ZSAiWWFyclBhdHRlcm4uaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjZGVmaW5lIFlB
UlJfQ0FMTAogCkBAIC01Niw2ICs1OSw0OCBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24g
OiB1aW50OF90IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsCiB9Owog
CitjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChC
b3llck1vb3JlQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNrID0g
MTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCb3llck1v
b3JlQml0bWFwKCkgPSBkZWZhdWx0OworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvdW50OyB9CisgICAgY29uc3QgTWFwJiBtYXAoKSBjb25zdCB7IHJldHVybiBtX21h
cDsgfQorICAgIGJvb2wgaXNNYXNrRWZmZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tF
ZmZlY3RpdmU7IH0KKworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBp
ZiAocG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCisgICAgICAg
ICAgICBtX2lzTWFza0VmZmVjdGl2ZSA9IHRydWU7CisgICAgICAgIGlmICghbV9tYXAuZ2V0KHBv
c2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAgICAg
ICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9tYXAg
eyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzTWFza0VmZmVj
dGl2ZSB7IGZhbHNlIH07Cit9OworCitjbGFzcyBCb3llck1vb3JlQnl0ZVZlY3RvciA6IHB1Ymxp
YyBzdGQ6OmFycmF5PHVpbnQ4X3QsIEJveWVyTW9vcmVCaXRtYXA6Om1hcFNpemU+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBCb3llck1vb3JlQnl0ZVZlY3Rv
cihjb25zdCBCb3llck1vb3JlQml0bWFwOjpNYXAmIG1hcCkKKyAgICB7CisgICAgICAgIGZpbGwo
MCk7CisgICAgICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAg
ICAgICAgICAgKCp0aGlzKVtpbmRleF0gPSAxOworICAgICAgICB9KTsKKyAgICB9Cit9OworCiAj
aWYgQ1BVKEFSTTY0RSkKIGV4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lh
cnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29u
c3Qgdm9pZCogY29kZVB0cik7CiBleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVy
KHZvaWQpOwpAQCAtNzgsMTMgKzEyMywzNyBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKIAogICAg
IGJvb2wgaGFzOEJpdENvZGUoKSB7IHJldHVybiBtX3JlZjguc2l6ZSgpOyB9CiAgICAgYm9vbCBo
YXMxNkJpdENvZGUoKSB7IHJldHVybiBtX3JlZjE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJp
dENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiByZWYpIHsgbV9yZWY4
ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnIxNkJpdFB0clRhZz4gcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0KKyAgICB2b2lkIHNldDhCaXRD
b2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVmLCBWZWN0b3I8VW5p
cXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQorICAgIHsKKyAgICAgICAgbV9y
ZWY4ID0gcmVmOworICAgICAgICBtX21hcHMucmVzZXJ2ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkg
KyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwgVmVjdG9yPFVuaXF1ZVJl
ZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fcmVmMTYg
PSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1h
cHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFw
cy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hP
bmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRD
b2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lk
IHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAg
IHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0
Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5
OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxCb3ll
ck1vb3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fbWF0Y2hPbmx5OCA9
IG1hdGNoT25seTsKKyAgICAgICAgbV9tYXBzLnJlc2VydmVDYXBhY2l0eShtX21hcHMuc2l6ZSgp
ICsgbWFwcy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBtYXBzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG1fbWFwcy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShtYXBzW2luZGV4XSkpOworICAgIH0KKyAgICB2b2lkIHNldDE2Qml0Q29kZU1h
dGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBt
YXRjaE9ubHksIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiYmIG1hcHMp
CisgICAgeworICAgICAgICBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OworICAgICAgICBtX21h
cHMucmVzZXJ2ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQor
ICAgICAgICAgICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7
CisgICAgfQogCiAgICAgYm9vbCB1c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSB7IHJldHVybiBt
X3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcjsgfQogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TKQpAQCAtMTcwLDIwICsyMzksMzIgQEAgY2xhc3MgWWFyckNvZGVCbG9j
ayB7CiAgICAgICAgIHJldHVybiBtX3JlZjguc2l6ZSgpICsgbV9yZWYxNi5zaXplKCkgKyBtX21h
dGNoT25seTguc2l6ZSgpICsgbV9tYXRjaE9ubHkxNi5zaXplKCk7CiAgICAgfQogCisgICAgLy8g
Q29tcGlsZSBhbmQgQ2xlYXIgYXJlIGd1YXJkZWQgYnkgUmVnRXhwJ3MgY2VsbC1sb2NrLiBTbyB0
aGVzZSBvcGVyYXRpb25zIHdvcmsgYXRvbWljYWxseS4KICAgICB2b2lkIGNsZWFyKCkKICAgICB7
CiAgICAgICAgIG1fcmVmOCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4o
KTsKICAgICAgICAgbV9yZWYxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJU
YWc+KCk7CiAgICAgICAgIG1fbWF0Y2hPbmx5OCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5OEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KCk7CisgICAgICAgIG1fbWFw
cy5jbGVhcigpOwogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCisgICAgY29uc3QgdWludDhfdCogZmluZFNhbWVWZWN0b3IodW5zaWduZWQgaW5kZXgsIEJv
eWVyTW9vcmVCeXRlVmVjdG9yJiB2ZWN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaW5k
ZXggPCBtX21hcHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAobV9tYXBzW2luZGV4XS5nZXQo
KSA9PSB2ZWN0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWFwc1tpbmRleF0tPmRhdGEo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiBtX3JlZjg7CiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gbV9yZWYxNjsKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21h
dGNoT25seTE2OworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiBt
X21hcHM7CiAgICAgYm9vbCBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlciB7IGZhbHNlIH07CiAg
ICAgc3RkOjpvcHRpb25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0JpdFZlY3Rvci5jcHAKaW5kZXggM2NlNjhmYzFiZDdkMmQwZmYyOWZiNmVjZTAwYmIxYTVkZmIx
MzdiNy4uMzkxNjEyMTE2ZWY4NjZjYjUwNTQ1YzM3NzQyNTJiYThlZTQ1MDc3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRW
ZWN0b3IuY3BwCkBAIC0yNjIsMTIgKzI2Miw4IEBAIHVpbnRwdHJfdCBCaXRWZWN0b3I6Omhhc2hT
bG93Q2FzZSgpIGNvbnN0CiAKIHZvaWQgQml0VmVjdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoZ2V0KGkpKQotICAgICAgICAgICAgb3V0LnByaW50ZigiMSIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCItIik7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChnZXQoaSkgPyAiMSIg
OiAiLSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0JpdG1hcC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggOGYxMzI3YTQ3NDEy
ZmQyYWRkNGVhZjU5YjFmNWFlZTM2ZGZmMWE4Ni4uYzUwMTEwYjVkZWExM2NlNGJhNWJhZGEzZTQ5
ZWI3MWY1YzFkMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIv
U291cmNlL1dURi93dGYvQml0bWFwLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3
dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dHlwZV90
cmFpdHM+CkBAIC0xMzAsNiArMTMxLDggQEAgY2xhc3MgQml0bWFwIGZpbmFsIHsKIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRTaXpl
ID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3
b3JkcyA9IChiaXRtYXBTaXplICsgd29yZFNpemUgLSAxKSAvIHdvcmRTaXplOwpAQCAtNTA3LDYg
KzUxMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChnZXQoaSkg
PyAiMSIgOiAiLSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpCaXRt
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYv
d3RmL1VuaXF1ZVJlZi5oCmluZGV4IGM0ZWUzZGMxMjg3NGYxOThlMWJmNDUzZjIzN2E5OWNmNDc2
NzZkZTQuLjkzNWQwNmM2NjlkZDRjZWU4MTdlMGUzOWMyYzY5ZDljMzRkZWEzZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1
ZVJlZi5oCkBAIC00Niw5ICs0Niw5IEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3Mm
Ji4uLiBhcmdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVW5pcXVlUmVmPFQ+IG1ha2VV
bmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4gcHRyKQorVW5p
cXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9w
dHI8VD4mJiBwdHIpCiB7Ci0gICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqcHRyLnJlbGVhc2UoKSk7
CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPihXVEZNb3ZlKHB0cikpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgpAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgICAgICBB
U1NFUlQobV9yZWYpOwogICAgIH0KIAorICAgIFQqIHB0cigpIFJFVFVSTlNfTk9OTlVMTCB7IEFT
U0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIFQqIHB0cigpIGNvbnN0IFJF
VFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorCiAg
ICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAgICAgY29uc3Qg
VCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAKQEAgLTgz
LDkgKzg2LDE1IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8
Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4pOwotICAgIHRlbXBsYXRlPGNsYXNzIFU+
IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0
ZDo6dW5pcXVlX3B0cjxVPik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJl
ZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+
JiYpOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBVbmlxdWVSZWY7CiAKKyAg
ICBleHBsaWNpdCBVbmlxdWVSZWYoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQorICAgICAgICA6
IG1fcmVmKFdURk1vdmUocHRyKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAg
fQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOwogfTsKIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkYWFjZjk3Zjk1OGM4NWRj
OWY1MmQ0YzJlMmUyOGUzMjdiODg4MWVkLi5mNzNkODQwMTg0NzEzY2RiODUxNjFkZGUxNzMyMTk5
MDcxN2Q4NTUzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCTSBz
ZWFyY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
ODMwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qczoKKyAgICAgICAgKiBzdHJl
c3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1jaGFyYWN0ZXIuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLW1hcC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC1i
aXR2ZWN0b3ItcmV1c2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAq
IHN0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1jaGFyYWN0ZXIuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJt
LXNlYXJjaC1tYXAuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCiAyMDIxLTA3LTI1
ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBQYXJ0
bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3RvdHlwZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVj
dGlvbiBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5
LXRvZG9tdmMtcmVnZXhwLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9t
dmMtcmVnZXhwLmpzCmluZGV4IGFmM2E0MjQ1OTdlMTczOWQyY2RhM2QwMzNjZDI1OTRkZDI0Nzhl
NjEuLjRmMzBhZWU4ODczNTVhMzdmMjFlODY1ZTZmMTQ3N2QxODJiNTcxZmEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcworKysgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKQEAgLTg0MjA5
LDcgKzg0MjA5LDggQEAgZnVuY3Rpb24gdGVzdChyZWdFeHBzLCBzdHJpbmdzKSB7CiAgICAgcmVn
RXhwJDE2Lmxhc3RJbmRleCA9IDA7CiAgICAgcmVzdWx0cyA9IHJlZ0V4cCQxNi5leGVjKHN0cmlu
ZyQyMTUpOwogfQotbm9JbmxpbmUodGVzdCk7CitpZiAodHlwZW9mIG5vSW5saW5lICE9PSAidW5k
ZWZpbmVkIikKKyAgICBub0lubGluZSh0ZXN0KTsKIHJlZ0V4cHMucHVzaCgvYXZvaWQgY29uc3Rh
bnQgZm9sZGluZy9naSk7CiBzdHJpbmdzLnB1c2goL2F2b2lkIGNvbnN0YW50IGZvbGRpbmcvZ2kp
OwogZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgKytpKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1jaGFyYWN0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9y
ZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzNlMGQ2ODBk
NmExZTcxNDAxNWM1YTA1ZjI0ZmI2NzkyMWM1OGUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1jaGFyYWN0ZXIuanMKQEAgLTAsMCArMSwx
NCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAvYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFh
YWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYi9pOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNj
Y2NkZGRkZmZmZmYiKSwgZmFsc2UpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFi
YmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFiYmFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRkYWFh
YWJiYmJjY2NjZGRkZGFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFh
YmJiYmFhYWFiYmJiYWFhYWJiYmJmZmZmZiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAu
bGVmdENvbnRleHQsICJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJi
YWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFiYmFiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2Nk
ZGRkYWFhYWJiYmJjY2NjZGRkYWFhYWJiYmJjY2NjZGRkZCIpOworICAgIHNob3VsZEJlKFJlZ0V4
cC5yaWdodENvbnRleHQsICJmZmZmZiIpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRmZmZm
ZmZmZmZmZmZmZmZmZmZmZmZmZiIpLCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4
cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Y2ZhZjZmMmFkNWMyZWY2ZjQ5
YzliN2Q3YmJiZTIzNjQwNjcwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9y
ZWdleHAtLWJtLXNlYXJjaC1sb25nLW1hcC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
dmFyIHJlZ2V4cCA9IC9hYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRkYWFhYWJiYmJjY2Nj
ZGRkZC9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUo
cmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRh
YWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkZmZmZmYiKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVnRXhwLmxlZnRDb250ZXh0LCAiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnIik7Cisg
ICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgImZmZmZmIik7CisgICAgc2hvdWxkQmUo
cmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRh
YWFhYmJiYmNjY2NkZGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksIGZhbHNlKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9yZWdleHAtYml0dmVjdG9yLXJldXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMzFlZjJmYTU4
Yzc4ZjQwZTI2MTEzMGJiMzVhZDU0NjFhMThmM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9yZWdleHAtYml0dmVjdG9yLXJldXNlLmpzCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQordmFyIHJlZ2V4cCA9IC9zY3JpcHQvOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkg
eworICAgIHNob3VsZEJlKC9zY3JpcHQvLnRlc3QoInRlc3R0ZXN0c2NyaXB0IiksIHRydWUpOwor
ICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgInRlc3R0ZXN0Iik7CisgICAgc2hvdWxk
QmUoL3NjcmlwdC8udGVzdCgkdm0ubWFrZTE2Qml0U3RyaW5nSWZQb3NzaWJsZSgidGVzdHRlc3Rz
Y3JpcHQiKSksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgInRlc3R0
ZXN0Iik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJt
LXNlYXJjaC1jaGFyYWN0ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJt
LXNlYXJjaC1jaGFyYWN0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJhNjc0ZjkyMzdhMGE0MjkzZDcxZTBk
ZGYyYzk5YWI1ZjlhNjhiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4
cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKwordmFyIHJlZ2V4cCA9IC/ku4rml6UvaTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7
ICsraSkgeworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCLmmKjml6XpgYXjgY/jgavlr53jgZ/j
ga7jgafku4rml6Xjga/jgb7jgaDnnKDjgYTjgIIiKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVn
RXhwLmxlZnRDb250ZXh0LCAi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44GnIik7CisgICAgc2hv
dWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgIuOBr+OBvuOBoOecoOOBhOOAgiIpOworICAgIHNo
b3VsZEJlKHJlZ2V4cC50ZXN0KCJCZWNhdXNlIEkgd2VudCB0byBiZWQgbGF0ZSBsYXN0IG5pZ2h0
LCBJJ20gc3RpbGwgc2xlZXB5IiksIGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLW1hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jl
Z2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjJhOGVlZTExYTNl
MzkxMGMxNmMzYjEwMDU5MGU5M2UzMTYxZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzCkBAIC0wLDAgKzEsMTMgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCit2YXIgcmVnZXhwID0gL+S7iuaXpXzmmI7ml6UvaTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTI7ICsraSkgeworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCLmmKjml6XpgYXj
gY/jgavlr53jgZ/jga7jgafku4rml6Xjga/jgb7jgaDnnKDjgYTjgIIiKSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44Gn
Iik7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgIuOBr+OBvuOBoOecoOOBhOOA
giIpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJCZWNhdXNlIEkgd2VudCB0byBiZWQgbGF0
ZSBsYXN0IG5pZ2h0LCBJJ20gc3RpbGwgc2xlZXB5IiksIGZhbHNlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434481</attachid>
            <date>2021-07-28 17:57:39 -0700</date>
            <delta_ts>2021-07-28 18:00:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728175738.patch</filename>
            <type>text/plain</type>
            <size>48110</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi42YTk0MWZlYThhODk4YjFm
MGEzOGQ0OTgxNDhmYmRiOGM1ZjM1N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVtaXRz
IHNraXBwaW5nIGZhc3QtcGF0aCBhdCB0aGUgYmVnaW5uaW5nIG9mIGJvZHkgYWx0ZXJuYXRpdmVz
IHdpdGggYSBsYXJnZSBzdHJpZGUuIFNvIHdlIGNhbiBxdWlja2x5IGRpc2NhcmQgdW5yZWxhdGVk
IGNoYXJhY3RlcnMKKyAgICAgICAgYW5kIGF0dGVtcHQgdG8gZmluZCBwb3NzaWJseSByZWxhdGVk
IHNlcXVlbmNlIGluIHRoZSBsb25nIHNlcXVlbmNlLiBUaGUgbWV0aG9kIGlzIGRlcml2ZWQgZnJv
bSBWOCdzIGltcGxlbWVudGF0aW9uICh3aXRoIHNvbWUgZXh0ZW5zaW9ucykuCisKKyAgICAgICAg
SWYgd2UgaGF2ZSBhIHNlYXJjaGluZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBjaGVj
ayB0aGUgNnRoIGNoYXJhY3RlciBhZ2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBmfS4K
KyAgICAgICAgSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJhY3RlcnMu
IFdlIHVzZSB0aGlzIHN0cmF0ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRlZCBlYXNp
bHkgdG8gc3VwcG9ydAorICAgICAgICBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNsYXNzLCBhbmQg
aWdub3JlLWNhc2VzLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFiY3xkZWYpLywg
d2UgY2FuIGNoZWNrIDNyZCBjaGFyYWN0ZXIKKyAgICAgICAgYWdhaW5zdCB7YSwgYiwgYywgZCwg
ZSwgZn0gYW5kIHNoaWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBtYXRjaC4KKworICAg
ICAgICBUaGVuLCB0aGUgYmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMg
dGhhdCBmaW5kaW5nIHRoZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5v
dCBoYXZlCisgICAgICAgIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFh
YWFhYVthLXpdLywgd2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4
dGggY2hhcmFjdGVyIGFnYWluc3Qge2F9LgorICAgICAgICBJZiBpdCBkb2VzIG5vdCBtYXRjaCwg
dGhlbiB3ZSBjYW4gc2hpZnQgNyBjaGFyYWN0ZXJzIChsZW5ndGggb2YgImFhYWFhYWEiKS4gVGhp
cyBzaGlmdGluZyBpcyBiZXR0ZXIgdGhhbiB1c2luZyAiW2Etel1hYWFhYWFhW2Etel0iCisgICAg
ICAgIHNlcXVlbmNlIGFuZCB7YS16fSBzZXQgc2luY2Uge2Eten0gc2V0IHdpbGwgYWxtb3N0IGFs
d2F5cyBtYXRjaC4KKworICAgICAgICBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3Rl
cnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRv
IGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICB0aGF0IGFuZCBj
b25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBNaWNy
b2JlbmNobWFyayB3aGljaCBwZXJmb3JtcyBSZWdFeHAgb3BzIGluIFNwZWVkb21ldGVyMi9qUXVl
cnktVG9kb01WQyBzaG93cyAyNSUgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVk
CisKKyAgICAgICAgICAgIGpxdWVyeS10b2RvbXZjLXJlZ2V4cCAgICAgIDcyMy45NzM5Ky0xLjM5
OTcgICAgIF4gICAgNTc5LjE2OTgrLTEuMjUwNSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMjUwMHgg
ZmFzdGVyCisKKyAgICAgICAgVGhpcyBpbXByb3ZlcyBTcGVlZG9tZXRlcjIvalF1ZXJ5LVRvZG9N
VkMgYnkgMyUuCisKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAgfCAgICAg
bXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFsc2UgRGlz
Y292ZXJ5IFJhdGUpIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg
IHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMjMuMzY1NjI1ICAgfDEy
My40NTYyNTAgICB8MS4wMDA3MzUgIHwgMC44MDQwNzcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAg
ICAgICAgICAgICAgIHwyNi45MTI1MDAgICAgfDI2LjkyNTAwMCAgICB8MS4wMDA0NjQgIHwgMC45
Njk2MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgIHwgRW1iZXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHwxMjcuNTQwNjI1ICAg
fDEyNy41NjI1MDAgICB8MS4wMDAxNzIgIHwgMC45NjA0NzQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQmFja2JvbmVKUy1Ub2RvTVZDICAg
ICAgICAgICAgICAgICAgIHw1MC42MDYyNTAgICAgfDUwLjUxODc1MCAgICB8MC45OTgyNzEgIHwg
MC42NzAzMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgIHwgUHJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyMS4wMTg3NTAg
ICAgfDIwLjg1MDAwMCAgICB8MC45OTE5NzEgIHwgMC41NjM4MTggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5ndWxhckpTLVRvZG9NVkMg
ICAgICAgICAgICAgICAgICAgIHwxMzYuOTQzNzUwICAgfDEzNy4yNzE4NzUgICB8MS4wMDIzOTYg
IHwgMC41MzE1MTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2OC41MjE4
NzUgICAgfDY4LjU5Mzc1MCAgICB8MS4wMDEwNDkgIHwgMC43MDEzNzYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgIHw2NS41NTkzNzUgICAgfDY1LjgwMzEyNSAgICB8MS4wMDM3
MTggIHwgMC40MTQ0MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgICAgIHwgRmxpZ2h0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHw3Ny4y
ODQzNzUgICAgfDc2LjcxNTYyNSAgICB8MC45OTI2NDEgIHwgMC4yMTk4NzAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5ndWxhcjItVHlw
ZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHw0MC43MjUwMDAgICAgfDQwLjMxODc1MCAgICB8MC45
OTAwMjUgIHwgMC4yODEyMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHw1
NS4yMDkzNzUgICAgfDU0LjcxNTYyNSAgICB8MC45OTEwNTcgIHwgMC4wNTY5MjEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgalF1ZXJ5LVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyNjYuMzk2ODc1ICAgfDI1OC40NzE4NzUgICB8
MC45NzAyNTEgIHwgMC4wMDAwMDAgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAgICAg
IHwzNDEuNTUwMDAwICAgfDM0MS44NTYyNTAgICB8MS4wMDA4OTcgIHwgMC42MTgxNDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgUmVhY3Qt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw4OC43MzEyNTAgICAgfDg4Ljg3MTg3NSAg
ICB8MS4wMDE1ODUgIHwgMC41MTI0MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgIHwgUmVhY3QtUmVkdXgtVG9kb01WQyAgICAgICAgICAgICAg
ICAgIHwxNTAuMzQwNjI1ICAgfDE1MC4wNjU2MjUgICB8MC45OTgxNzEgIHwgMC40MTI5NDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVmFu
aWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2NS4zOTA2MjUgICAgfDY1LjM2MjUw
MCAgICB8MC45OTk1NzAgIHwgMC44MzQ3NjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIGEg
bWVhbiA9IDI0NS45Njk5NworICAgICAgICAgICAgYiBtZWFuID0gMjQ2Ljg2MzY2CisgICAgICAg
ICAgICBwVmFsdWUgPSAwLjAwNjE0NDg0MDIKKyAgICAgICAgICAgIChCaWdnZXIgbWVhbnMgYXJl
IGJldHRlci4pCisgICAgICAgICAgICAxLjAwNCB0aW1lcyBiZXR0ZXIKKyAgICAgICAgICAgIFJl
c3VsdHMgQVJFIHNpZ25pZmljYW50CisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6
CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJN
b29yZUluZm86OkJveWVyTW9vcmVJbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29y
ZUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZv
OjpzZXQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6aW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2V0SW5kZXgpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qm95ZXJNb29yZUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJT
ZXF1ZW5jZUZvckxvb2thaGVhZCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVJbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAgY29uc3QpOgorICAgICAgICAqIHlhcnIvWWFy
ckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpjb3VudCBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6Om1hcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmlzTWFza0VmZmVjdGl2ZSBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJveWVyTW9vcmVCeXRlVmVjdG9yOjpCb3llck1vb3JlQnl0ZVZlY3Rvcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJDb2RlQmxvY2s6OmZpbmRTYW1lVmVjdG9yIGNvbnN0KToKKwogMjAyMS0wNy0yOCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIGxvYWQvc3Rv
cmUgd2l0aCBCYXNlSW5kZXggaXMgaW5lZmZpY2llbnQgaW4gQVJNNjQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDU0YTNmMGVi
YTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4uMTlhMmRiODhiNzE3ZjI5NDYyMzhkZGQ2
M2Q4YjM5YWIzZmQ0YjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0yOCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxk
IHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGOjpCaXRWZWN0b3I6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29y
ZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6CisgICAgICAg
IChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cik6CisgICAgICAgIChXVEY6
OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZlIHJldmVy
dCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEyMjRlMTg5YWNkZTkxZTc4Li4xYjljMTAx
ODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBib29sIGNhblVz
ZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoVW5zaWduZWQsIHByb3RvdHlwZUhpdENv
dW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJOdW1iZXIgb2YgcHJvdG90eXBlIHByb3Bl
cnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5cGUgaW4gdGhlIExMSW50LiBBIGNvdW50
IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1bXBDb21w
aWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29s
LCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDhiNTAx
ZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLjUyNjU3ZTllYzU2MWVhYWQzMzAz
OGQzNjM1MGM5ZTZlOGVkMjg4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTI2IEBACiAjaW5jbHVkZSAiWWFyckRpc2Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIKICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKK25hbWVzcGFjZSBZYXJySklUSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogI2lmIENQVShBUk02
NEUpCiBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJK
SVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKICNlbmRpZgogCitjbGFzcyBCb3llck1v
b3JlSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQm95ZXJNb29yZUluZm8pOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJveWVyTW9vcmVJbmZvKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQg
Qm95ZXJNb29yZUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhs
ZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3Ro
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJh
Y3RlcnMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBj
aGFyYWN0ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eDsgfQorICAgIHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBt
X2luZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgc3RhdGljIFVuaXF1ZVJlZjxCb3llck1vb3Jl
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJveWVyTW9vcmVJbmZvPihsZW5ndGgpOworICAgIH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJh
Y3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3Q7CisgICAgc3RkOjp0dXBsZTxCb3llck1v
b3JlQml0bWFwOjpNYXAsIGJvb2w+IGNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwg
dW5zaWduZWQsIHVuc2lnbmVkPiBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51
bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdDsKKworICAgIFZlY3RvcjxCb3llck1vb3JlQml0
bWFwPiBtX2NoYXJhY3RlcnM7CisgICAgdW5zaWduZWQgbV9pbmRleCB7IDAgfTsKK307CisKK3N0
ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IEJveWVyTW9vcmVJbmZvOjpmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25z
dAoreworICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0
ID0gMDsKKyAgICB1bnNpZ25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5n
dGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNM
aW1pdCkKKyAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4Owor
ICAgICAgICBCb3llck1vb3JlQml0bWFwOjpNYXAgbWFwIHsgfTsKKyAgICAgICAgZm9yICg7IGlu
ZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpIDw9IG51bWJlck9m
Q2FuZGlkYXRlc0xpbWl0OyArK2luZGV4KQorICAgICAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFj
dGVyc1tpbmRleF0ubWFwKCkpOworCisgICAgICAgIC8vIElmIG1hcCBoYXMgbWFueSBjYW5kaWRh
dGVzLCB0aGVuIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgbG93IHNpbmNlIGl0IHdpbGwgbWF0
Y2ggdG9vIG1hbnkgdGhpbmdzLgorICAgICAgICAvLyBBbmQgaWYgdGhlIHNlcXVlbmNlIGlzIGxv
bmdlciwgdGhlbiB0aGUgcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBoaWdoZXIgc2luY2UgaXQg
Y2FuIHNraXAgbWFueSBjaGFyYWN0ZXJzLgorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdl
IGFyZSBoYW5kbGluZyBhbGwgY2hhcmFjdGVycyBlcXVhbGx5LiBCdXQgd2Ugc2hvdWxkIGhhdmUg
d2VpZ2h0IHBlciBjaGFyYWN0ZXIgc2luY2UgZS5nLiAnZScgc2hvdWxkIGFwcGVhciBtb3JlIGZy
ZXF1ZW50bHkgdGhhbiAnXHYnLgorICAgICAgICBpbnQgZnJlcXVlbmN5ID0gbWFwLmNvdW50KCk7
CisgICAgICAgIGludCBtYXRjaGluZ1Byb2JhYmlsaXR5ID0gQm95ZXJNb29yZUJpdG1hcDo6bWFw
U2l6ZSAtIGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4IC0gYmVnaW4pICog
bWF0Y2hpbmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmlnZ2VzdFBvaW50KSB7
CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAgICAgIGJlZ2luUmVz
dWx0ID0gYmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwgYmVnaW5SZXN1bHQs
IGVuZFJlc3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVu
c2lnbmVkPj4gQm95ZXJNb29yZUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VG
b3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElmIGNhbmRpYXRlcy1wZXItY2hhcmFjdGVy
IGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlzIG5vdCBwcm9maXRhYmxlIHNpbmNlIHRo
aXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0CisgICAgLy8gdG9vIG1hbnkgY2hhcmFjdGVy
cy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXItY2hhcmFjdGVyIHNtYWxsZXIsIGl0IGlz
IHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkgc2hvcnQKKyAgICAvLyBjaGFyYWN0ZXIg
c2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0LCB0aGVuIGVubGFyZ2luZyB0aGUgbGlt
aXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFibGUKKyAgICAvLyBjaGFyYWN0ZXIgc2Vx
dWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7CisgICAgdW5zaWduZWQgYmVnaW4gPSAw
OworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29uc3RleHByIHVuc2lnbmVkIG1heENhbmRp
ZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3IgKHVuc2lnbmVkIGxpbWl0ID0gNDsgbGlt
aXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBsaW1pdCAqPSAyKSB7CisgICAgICAgIGF1
dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9IGZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVu
Y2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAg
ICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50OworICAgICAgICAgICAgYmVnaW4gPSBuZXdC
ZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30KKworc3RkOjp0dXBsZTxCb3llck1vb3Jl
Qml0bWFwOjpNYXAsIGJvb2w+IEJveWVyTW9vcmVJbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBCb3llck1vb3JlQml0
bWFwOjpNYXAgbWFwIHsgfTsKKyAgICBib29sIGlzTWFza0VmZmVjdGl2ZSA9IGZhbHNlOworICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSBiZWdpbjsgaW5kZXggPCBlbmQ7ICsraW5kZXgpIHsKKyAg
ICAgICAgYXV0byYgYm1CaXRtYXAgPSBtX2NoYXJhY3RlcnNbaW5kZXhdOworICAgICAgICBtYXAu
bWVyZ2UoYm1CaXRtYXAubWFwKCkpOworICAgICAgICBpc01hc2tFZmZlY3RpdmUgfD0gYm1CaXRt
YXAuaXNNYXNrRWZmZWN0aXZlKCk7CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgbWFw
LCBpc01hc2tFZmZlY3RpdmUgfTsKK30KKwogY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICNpZiBDUFUoQVJN
X1RIVU1CMikKQEAgLTgzMCw2ICs5NDAsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8g
dmFsdWUgdGhhdCB3aWxsIGJlIHB1c2hlZCBpbnRvIHRoZSBwYXR0ZXJuJ3MgZnJhbWUgdG8gcmV0
dXJuIHRvLAogICAgICAgICAvLyB1cG9uIGJhY2t0cmFja2luZyBiYWNrIGludG8gdGhlIGRpc2p1
bmN0aW9uLgogICAgICAgICBEYXRhTGFiZWxQdHIgbV9yZXR1cm5BZGRyZXNzOworCisgICAgICAg
IEJveWVyTW9vcmVJbmZvKiBtX2JtSW5mbzsKICAgICB9OwogCiAgICAgLy8gQmFja3RyYWNraW5n
U3RhdGUKQEAgLTE0MTAsNyArMTUyMiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAg
ICBhbGxDaGFyYWN0ZXJzIHw9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oY3VycmVudENoYXJhY3Rl
cikgPDwgc2hpZnRBbW91bnQpOwogCi0gICAgICAgICAgICBpZiAoKG1fcGF0dGVybi5pZ25vcmVD
YXNlKCkpICYmIChpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlcikpKQorICAgICAgICAgICAg
aWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0
ZXIpKQogICAgICAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMyVUxMIDw8IHNoaWZ0QW1v
dW50OwogICAgICAgICB9CiAKQEAgLTIyNTYsMTEgKzIzNjgsNjMgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgLy8gVXBvbiBlbnRyeSBhdCB0aGUgaGVhZCBvZiB0aGUgc2V0IG9m
IGFsdGVybmF0aXZlcywgY2hlY2sgaWYgaW5wdXQgaXMgYXZhaWxhYmxlCiAgICAgICAgICAgICAg
ICAgLy8gdG8gcnVuIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4gKFRoaXMgcHJvZ3Jlc3NlcyB0aGUg
aW5wdXQgcG9zaXRpb24pLgogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJ
Zk5vQXZhaWxhYmxlSW5wdXQoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpKTsKKyAgICAgICAg
ICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisK
ICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIHJlZW50ZXIgYWZ0ZXIgdGhlIGNoZWNrLCBhbmQg
YXNzdW1lIHRoZSBpbnB1dCBwb3NpdGlvbiB0byBoYXZlIGJlZW4KICAgICAgICAgICAgICAgICAv
LyBzZXQgYXMgYXBwcm9wcmlhdGUgdG8gdGhpcyBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAgICAg
ICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zm
c2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAgICAgIC8vIEVt
aXQgZmFzdCBza2lwIHBhdGggd2l0aCBzdHJpZGUgaWYgd2UgaGF2ZSBCb3llck1vb3JlSW5mby4K
KyAgICAgICAgICAgICAgICBpZiAob3AubV9ibUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byByYW5nZSA9IG9wLm1fYm1JbmZvLT5maW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNl
Rm9yTG9va2FoZWFkKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBbYmVnaW5JbmRleCwgZW5kSW5kZXhdID0gKnJhbmdlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZEluZGV4IDw9IGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01h
c2tFZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbklu
ZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3Vu
dCA9IG1hcC5jb3VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUg
Y2hhcmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2
ZWN0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPD0gMikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMSA9IG1hcC5maW5kQml0
KDAsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIx
ICE9IEJveWVyTW9vcmVCaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjIgPSAweGZmOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXBDb3VudCA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcjIgPSBtYXAuZmluZEJpdChjaGFyYWN0ZXIxICsgMSwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIyICE9IEJveWVyTW9v
cmVCaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJl
Z0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hh
cmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJh
Y3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpb
IiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEJveWVyTW9vcmVCaXRtYXA6
Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3Rl
cjEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjIpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJ
bmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wKCku
bGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gbWFrZVVuaXF1ZVJlZjxCb3llck1v
b3JlQnl0ZVZlY3Rvcj4obWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGJpdG1hcCBs
b29rYWhlYWQgY291bnQ6KCIsIG1hcENvdW50LCAiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCogcG9pbnRlciA9IHZlY3Rvci0+ZGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvKiBleGlzdGluZ1BvaW50ZXIgPSBtX2NvZGVCbG9jay5maW5kU2Ft
ZVZlY3RvcihvcC5tX2JtSW5mby0+aW5kZXgoKSwgdmVjdG9yLmdldCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9IGV4aXN0aW5nUG9pbnRlcjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYm1WZWN0b3IuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIHJlZ1QxKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4
ICsgMSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJ
bW0zMihCb3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVybywg
QmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4
IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoKS5saW5r
VG8obG9vcEhlYWQsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
bGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoK
QEAgLTI3ODAsNiArMjk0NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRP
cCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AubV9v
cCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAgICAgICAg
WWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9wLT5t
X29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5
NjIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gp
CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1f
cmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0g
WWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlz
IGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0
byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50
YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRo
aXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1f
aGFzRml4ZWRTaXplCkBAIC0yODEzLDQxICsyOTc4LDQxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYXJvdW5kIHRvIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4K
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlzKTsK
IAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFuZCByZXRy
eSBmb3IgYSBzdGlja3kgcGF0dGVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9w
YXR0ZXJuLnN0aWNreSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
IHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZv
ciB1c2UgaWYgd2UgbWF0Y2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3Bh
dHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSAtIDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFuZCByZXRy
eSBmb3IgYSBzdGlja3kgcGF0dGVybi4gQW5kIGl0IGlzIGFscmVhZHkgaGFuZGxlZCBiZWZvcmUg
dGhpcyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5z
dGlja3koKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNp
emUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdl
IG1hdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5t
X2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdoZXRoZXIgdGhlIGxhc3QgYWx0
ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8pLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA+IGJlZ2luT3AtPm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0aW9uLiBJZiB0aGUg
ZGVsdGEgaXMgMSwgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxy
ZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1l
bnQgYXMgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGRlbHRhID0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBiZWdpbk9wLT5tX2FsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZGVsdGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEg
IT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGRl
bHRhIC0gMSksIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcChi
ZWdpbk9wLT5tX3JlZW50cnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBhbHRlcm5h
dGl2ZSBoYXMgbWluaW11bSBzaXplIDB4RkZGRkZGRkZ1LCB0aGVuIHRoZXJlIGNhbm5vdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxh
YmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZhbGwgdGhyb3VnaC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2FsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAweEZGRkZGRkZGdSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpbnB1dCBi
ZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0LgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnB1dCgpLmxpbmtUbyhiZWdpbk9w
LT5tX3JlZW50cnksIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdo
ZXRoZXIgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBmaXJzdCAoZS5nLiAvYXx4eS8gb3IgL2F8eHl6LykuCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBiZWdpbk9w
LT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0aW9uLiBJ
ZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
bHJlYWR5IGNvcnJlY3RseSBpbmNyZW1lbnRlZCwgaWYgbW9yZSB0aGFuIG9uZSB0aGVuIGRlY3Jl
bWVudCBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYmVnaW5PcC0+bV9hbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
ZGVsdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAxKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAtIDEpLCBpbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLT5tX3JlZW50cnkp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmltdW0gc2l6ZSAweEZG
RkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZh
bGwgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9
IGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMHhG
RkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBjaGVjayBpbnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0LgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihkZWx0YSArIDEpLCBpbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQoKS5saW5rVG8o
YmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2
MDcsNiArMzc3Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAoYWx0ZXJuYXRpdmVz
LnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpIHsKICAgICAgICAgICAg
IG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsK
ICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKKyAgICAg
ICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CiAKICAgICAgICAgICAgIGRv
IHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAx
OwpAQCAtMzY0Myw2ICszODA5LDIxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzaXplX3Qg
cmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5sYXN0KCku
bV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9
IG51bGxwdHI7CisgICAgICAgIC8vIENvbGxlY3QgQm95ZXJNb29yZUluZm8gaWYgaXQgaXMgcG9z
c2libGUgYW5kIHByb2ZpdGFibGUuIEJveWVyTW9vcmVJbmZvIHdpbGwgYmUgdXNlZCB0byBlbWl0
IGZhc3Qgc2tpcCBwYXRoIHdpdGggbGFyZ2Ugc3RyaWRlCisgICAgICAgIC8vIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGJvZHkgYWx0ZXJuYXRpdmVzLgorICAgICAgICAvLyBXZSBkbyBub3QgZW1p
dCB0aGVzZSBmYXN0IHBhdGggd2hlbiBSZWdFeHAgaGFzIHN0aWNreSBvciB1bmljb2RlIGZsYWcu
IFN0aWNreSBjYXNlIGRvZXMgbm90IG5lZWQgdGhpcyBzaW5jZQorICAgICAgICAvLyBpdCBmYWls
cyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRvIG1hdGNoIHdpdGggdGhlIGN1cnJl
bnQgb2Zmc2V0LgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCB1bmljb2RlIGZsYWcuCisgICAg
ICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlvbi0+bV9oYXNG
aXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkg
eworICAgICAgICAgICAgYXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6
bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86
Om1heExlbmd0aCkpOworICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNq
dW5jdGlvbiwgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CisgICAgICAg
ICAgICAgICAgYm1JbmZvLT5zZXRJbmRleChtX2JtSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXgg
PSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRl
cm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CkBA
IC0zNjY4LDYgKzM4NDksNjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RPcC5tX25l
eHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qm95ZXJNb29yZUlu
Zm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6ZV90IGN1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4LCBCb3llck1vb3JlSW5mbyYgYm1JbmZvKQorICAgIHsKKyAgICAgICAgLy8gSWYg
d2UgaGF2ZSBhIHNlYXJjaGluZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBjaGVjayB0
aGUgNnRoIGNoYXJhY3RlciBhZ2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBmfS4KKyAg
ICAgICAgLy8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJhY3RlcnMu
IFdlIHVzZSB0aGlzIHN0cmF0ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRlZCBlYXNp
bHkgdG8gc3VwcG9ydAorICAgICAgICAvLyBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNsYXNzLCBh
bmQgaWdub3JlLWNhc2VzLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFiY3xkZWYp
Lywgd2UgY2FuIGNoZWNrIDNyZCBjaGFyYWN0ZXIKKyAgICAgICAgLy8gYWdhaW5zdCB7YSwgYiwg
YywgZCwgZSwgZn0gYW5kIHNoaWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBtYXRjaC4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhlbiwgdGhlIGJlc3Qgd2F5IHRvIHBlcmZvcm0gdGhl
IGFib3ZlIHNoaWZ0aW5nIGlzIHRoYXQgZmluZGluZyB0aGUgbG9uZ2VzdCBjaGFyYWN0ZXIgc2Vx
dWVuY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAgICAvLyBtYW55IGNhbmRpZGF0ZXMuIElu
IHRoZSBjYXNlIG9mIC9bYS16XWFhYWFhYWFbYS16XS8sIHdlIGNhbiBleHRyYWN0ICJhYWFhYWFh
IiBzZXF1ZW5jZSBhbmQgY2hlY2sgOHRoIGNoYXJhY3RlciBhZ2FpbnN0IHthfS4KKyAgICAgICAg
Ly8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNoaWZ0IDcgY2hhcmFjdGVycyAo
bGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMgYmV0dGVyIHRoYW4gdXNpbmcg
IlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICAvLyBzZXF1ZW5jZSBhbmQge2Eten0gc2V0IHNp
bmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisgICAgICAgIC8vCisgICAg
ICAgIC8vIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFy
YWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNo
YXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0
IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlv
bi0+bV9oYXNGaXhlZFNpemUpOyAvLyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2Fo
ZWFkIGZvciBCb3llck1vb3JlIHNlYXJjaC4KKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5t
X21pbmltdW1TaXplKTsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQgZGlzanVu
Y3Rpb25zIChlLmcuIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLykuCisgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5nLiAvW1xkXXRlc3QvKS4KKyAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgbm9uLWZpeGVkLXNpemVkIGxvb2thaGVhZCAoZS5nLiAvLiphYmMvIGFu
ZCBleHRyYWN0ICJhYmMiIHNlcXVlbmNlKS4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0g
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVudEFsdGVy
bmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5hdGl2ZUlu
ZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxl
bmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBh
bHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJt
LnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRp
b25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9u
RU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldv
cmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFy
YWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNr
UmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndh
cmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5D
aGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9
IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAx
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xFTkdUSCh0
ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhh
dCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNh
c2UgcmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBj
bGFzcy4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgp
IHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlV
bmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKHRl
cm0ucGF0dGVybkNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5z
ZXQoY3Vyc29yLCB0b0FTQ0lJVXBwZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSUxvd2VyKHRlcm0ucGF0
dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJvc2UsICJD
aGFyYWN0ZXJzIGNvbGxlY3RlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIoKQogICAgIHsKICNp
ZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMzk1MiwxNCArNDE5NiwxNCBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9k
ZTo6TWF0Y2hPbmx5KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6
Q2hhcjgpCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJ
TkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAi
TWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtC
dWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFy
IGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9S
RUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1v
bmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJs
b2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVy
LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4
cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCi0gICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIs
IFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAg
ICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVm
ZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3Zl
KG1fYm1WZWN0b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnIxNkJp
dFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZ
YXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdURk1vdmUobV9i
bVZlY3RvcikpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFzb24pCiAgICAg
ICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigqbV9mYWlsdXJl
UmVhc29uKTsKQEAgLTQxOTcsNiArNDQ0MSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgLy8g
VGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2VxdWVuY2Ugb2Yg
b3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAgIFZlY3RvcjxV
bmlxdWVSZWY8Qm95ZXJNb29yZUluZm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVjdG9yPFVuaXF1
ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+IG1fYm1WZWN0b3I7CiAKICAgICAvLyBUaGlzIHJl
Y29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFwcGxpZWQgZHVlIHRvIHRoZSBj
dXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4g
RS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmlu
ZGV4IGVmMzljOGI0MDQ1MmZkODVhYWJlM2UwNzI5NjVjMGRmM2RiYjA5ZjUuLjA5YWFjMjg2MWMy
OWJjNDdhMTRkMGE2NzI5YzRjODIwZGIwMjc3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIllh
cnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4K
KyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzU5LDQ4IEBAIGVudW0gY2xhc3MgSklU
RmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9u
RmFpbHVyZSwKIH07CiAKK2NsYXNzIEJveWVyTW9vcmVCaXRtYXAgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRtYXApOworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEyODsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcE1hc2sgPSAxMjggLSAxOworICAgIHVzaW5nIE1hcCA9IEJpdG1hcDxtYXBTaXplPjsK
KworICAgIEJveWVyTW9vcmVCaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNpZ25lZCBjb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBNYXAmIG1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwOyB9CisgICAgYm9vbCBpc01hc2tFZmZlY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBtX2lzTWFza0VmZmVjdGl2ZTsgfQorCisgICAgdm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0
ZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGNoYXJhY3RlciAmIG1hcE1h
c2s7CisgICAgICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFj
dGVyKSkKKyAgICAgICAgICAgIG1faXNNYXNrRWZmZWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgaWYg
KCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21hcC5zZXQocG9zaXRpb24p
OworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgor
ICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKKyAgICBib29s
IG1faXNNYXNrRWZmZWN0aXZlIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIEJveWVyTW9vcmVCeXRl
VmVjdG9yIDogcHVibGljIHN0ZDo6YXJyYXk8dWludDhfdCwgQm95ZXJNb29yZUJpdG1hcDo6bWFw
U2l6ZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEJveWVy
TW9vcmVCeXRlVmVjdG9yKGNvbnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1hcCYgbWFwKQorICAgIHsK
KyAgICAgICAgZmlsbCgwKTsKKyAgICAgICAgbWFwLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVk
IGluZGV4KSB7CisgICAgICAgICAgICAoKnRoaXMpW2luZGV4XSA9IDE7CisgICAgICAgIH0pOwor
ICAgIH0KK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBFbmNvZGVkTWF0Y2hSZXN1
bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciogbWF0Y2hp
bmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAiQyIgdm9pZCB2bUVudHJ5
VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArMTIzLDM3IEBAIGNsYXNzIFlhcnJDb2Rl
QmxvY2sgewogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmOC5zaXplKCk7
IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmMTYuc2l6ZSgpOyB9Ci0g
ICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+
IHJlZikgeyBtX3JlZjggPSByZWY7IH0KLSAgICB2b2lkIHNldDE2Qml0Q29kZShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiByZWYpIHsgbV9yZWYxNiA9IHJlZjsgfQorICAg
IHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiBy
ZWYsIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiYmIG1hcHMpCisgICAg
eworICAgICAgICBtX3JlZjggPSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHko
bV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CisgICAgdm9pZCBz
ZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmLCBW
ZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQorICAgIHsKKyAg
ICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICAgICAgbV9tYXBzLnJlc2VydmVDYXBhY2l0eShtX21h
cHMuc2l6ZSgpICsgbWFwcy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBtYXBzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG1fbWFwcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBzW2luZGV4XSkpOworICAgIH0KIAogICAgIGJvb2wgaGFz
OEJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTguc2l6ZSgpOyB9CiAgICAg
Ym9vbCBoYXMxNkJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTE2LnNpemUo
KTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHk4ID0gbWF0
Y2hPbmx5OyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5
MTYgPSBtYXRjaE9ubHk7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5LCBWZWN0b3I8
VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQorICAgIHsKKyAgICAgICAg
bV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OworICAgICAgICBtX21hcHMucmVzZXJ2ZUNhcGFjaXR5
KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbV9tYXBz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQorICAgIHZvaWQg
c2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZl
Y3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7
CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1hcHMuc2l6
ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcy5zaXpl
KCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUo
bWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29sIHVzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZl
cigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOyB9CiAjaWYgRU5BQkxFKFlB
UlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCkBAIC0xNzAsMjAgKzIzOSwzMiBAQCBjbGFz
cyBZYXJyQ29kZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIG1fcmVmOC5zaXplKCkgKyBtX3JlZjE2
LnNpemUoKSArIG1fbWF0Y2hPbmx5OC5zaXplKCkgKyBtX21hdGNoT25seTE2LnNpemUoKTsKICAg
ICB9CiAKKyAgICAvLyBDb21waWxlIGFuZCBDbGVhciBhcmUgZ3VhcmRlZCBieSBSZWdFeHAncyBj
ZWxsLWxvY2suIFNvIHRoZXNlIG9wZXJhdGlvbnMgd29yayBhdG9taWNhbGx5LgogICAgIHZvaWQg
Y2xlYXIoKQogICAgIHsKICAgICAgICAgbV9yZWY4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnI4Qml0UHRyVGFnPigpOwogICAgICAgICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25s
eTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsK
KyAgICAgICAgbV9tYXBzLmNsZWFyKCk7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKKyAgICBjb25zdCB1aW50OF90KiBmaW5kU2FtZVZlY3Rvcih1bnNp
Z25lZCBpbmRleCwgQm95ZXJNb29yZUJ5dGVWZWN0b3ImIHZlY3RvcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpbmRleCA8IG1fbWFwcy5zaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChtX21h
cHNbaW5kZXhdLmdldCgpID09IHZlY3RvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9tYXBz
W2luZGV4XS0+ZGF0YSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKwogcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhCaXRQdHJUYWc+
IG1fcmVmODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiBtX3Jl
ZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4g
bV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZC
aXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1vb3Jl
Qnl0ZVZlY3Rvcj4+IG1fbWFwczsKICAgICBib29sIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVy
IHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+IG1fZmFpbHVy
ZVJlYXNvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwIGIv
U291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAppbmRleCAzY2U2OGZjMWJkN2QyZDBmZjI5ZmI2
ZWNlMDBiYjFhNWRmYjEzN2I3Li4zOTE2MTIxMTZlZjg2NmNiNTA1NDVjMzc3NDI1MmJhOGVlNDUw
NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKQEAgLTI2MiwxMiArMjYyLDggQEAgdWludHB0cl90IEJp
dFZlY3Rvcjo6aGFzaFNsb3dDYXNlKCkgY29uc3QKIAogdm9pZCBCaXRWZWN0b3I6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChnZXQoaSkpCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIx
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGYoIi0iKTsKLSAgICB9Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50
KGdldChpKSA/ICIxIiA6ICItIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQml0bWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAppbmRl
eCA4ZjEzMjdhNDc0MTJmZDJhZGQ0ZWFmNTliMWY1YWVlMzZkZmYxYTg2Li5jNTAxMTBiNWRlYTEz
Y2U0YmE1YmFkYTNlNDllYjcxZjVjMWQyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9C
aXRtYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaApAQCAtMjMsNiArMjMsNyBAQAog
I2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KQEAgLTEzMCw2ICsxMzEsOCBAQCBjbGFzcyBCaXRtYXAgZmlu
YWwgewogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCisgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgd29yZFNpemUgPSBzaXplb2YoV29yZFR5cGUpICogODsKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHdvcmRzID0gKGJpdG1hcFNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29yZFNp
emU7CkBAIC01MDcsNiArNTEwLDEzIEBAIGlubGluZSB1bnNpZ25lZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAgb3V0
LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OkJpdG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5o
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRlZTNkYzEyODc0ZjE5OGUxYmY0
NTNmMjM3YTk5Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2UwZTM5YzJjNjlkOWMzNGRl
YTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysrIGIvU291cmNl
L1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5pcXVlUmVmPFQ+IG1ha2VV
bmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1Vbmlx
dWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0
cjxUPiBwdHIpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRy
KHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KCpw
dHIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdURk1vdmUocHRyKSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNzIFVuaXF1ZVJl
ZiB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisgICAgVCogcHRyKCkgUkVUVVJO
U19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisgICAgVCog
cHRyKCkgY29uc3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVm
LmdldCgpOyB9CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9yZWY7
IH0KICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3JlZik7IHJldHVybiAqbV9y
ZWY7IH0KIApAQCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+
IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51
bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBm
cmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6
OnVuaXF1ZV9wdHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVu
aXF1ZVJlZjsKIAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBw
dHIpCisgICAgICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fcmVmKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbV9yZWY7CiB9OwogCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRh
YWNmOTdmOTU4Yzg1ZGM5ZjUyZDRjMmUyZTI4ZTMyN2I4ODgxZWQuLmY3M2Q4NDAxODQ3MTNjZGI4
NTE2MWRkZTE3MzIxOTkwNzE3ZDg1NTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDctMjggIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIHNob3Vs
ZCBwZXJmb3JtIEJNIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzOgor
ICAgICAgICAqIHN0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC0tYm0tc2Vh
cmNoLWxvbmctbWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBz
dHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rl
ci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4
cC1ub24tYXNjaWktYm0tc2VhcmNoLW1hcC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIsYXJn
dW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKaW5kZXggYWYzYTQyNDU5N2UxNzM5ZDJjZGEzZDAz
M2NkMjU5NGRkMjQ3OGU2MS4uNGYzMGFlZTg4NzM1NWEzN2YyMWU4NjVlNmYxNDc3ZDE4MmI1NzFm
YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVn
ZXhwLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4
cC5qcwpAQCAtODQyMDksNyArODQyMDksOCBAQCBmdW5jdGlvbiB0ZXN0KHJlZ0V4cHMsIHN0cmlu
Z3MpIHsKICAgICByZWdFeHAkMTYubGFzdEluZGV4ID0gMDsKICAgICByZXN1bHRzID0gcmVnRXhw
JDE2LmV4ZWMoc3RyaW5nJDIxNSk7CiB9Ci1ub0lubGluZSh0ZXN0KTsKK2lmICh0eXBlb2Ygbm9J
bmxpbmUgIT09ICJ1bmRlZmluZWQiKQorICAgIG5vSW5saW5lKHRlc3QpOwogcmVnRXhwcy5wdXNo
KC9hdm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIHN0cmluZ3MucHVzaCgvYXZvaWQgY29uc3Rh
bnQgZm9sZGluZy9naSk7CiBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kpCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qcyBiL0pT
VGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctY2hhcmFjdGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgzM2UwZDY4MGQ2YTFlNzE0MDE1YzVhMDVmMjRmYjY3OTIxYzU4ZTIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5q
cwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC9hYWFhYmJiYmFhYWFi
YmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiL2k7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVz
dCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2Nj
Y2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZmZiIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVnZXhw
LnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJhYWFhYmJi
YmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWJiYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFh
YmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJi
YmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmZmZmZmIiksIHRydWUpOworICAgIHNo
b3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFh
YWJiYmJhYWJiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkIik7CisgICAg
c2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgImZmZmZmIik7CisgICAgc2hvdWxkQmUocmVn
ZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFh
YmJiYmNjY2NkZGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksIGZhbHNlKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVjZmFm
NmYyYWQ1YzJlZjZmNDljOWI3ZDdiYmJlMjM2NDA2NzAyYQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzCkBAIC0wLDAgKzEsMTMg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2Nk
ZGRhYWFhYmJiYmNjY2NkZGRkL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsK
KyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFh
YWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZmZiIpLCB0cnVl
KTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICJhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FiY2RlZmciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAiZmZmZmYiKTsK
KyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2Fi
Y2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFh
YWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKSwgZmFs
c2UpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVz
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2UzMWVmMmZhNThjNzhmNDBlMjYxMTMwYmIzNWFkNTQ2MWExOGYzZAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMKQEAgLTAsMCAr
MSwxMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9Cit2YXIgcmVnZXhwID0gL3NjcmlwdC87Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUoL3NjcmlwdC8udGVzdCgidGVzdHRlc3RzY3Jp
cHQiKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAidGVzdHRlc3Qi
KTsKKyAgICBzaG91bGRCZSgvc2NyaXB0Ly50ZXN0KCR2bS5tYWtlMTZCaXRTdHJpbmdJZlBvc3Np
YmxlKCJ0ZXN0dGVzdHNjcmlwdCIpKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRD
b250ZXh0LCAidGVzdHRlc3QiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4
cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4
cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmE2NzRmOTIz
N2EwYTQyOTNkNzFlMGRkZjJjOTlhYjVmOWE2OGIwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpzCkBAIC0wLDAg
KzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL+S7iuaXpS9pOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIuaYqOaXpemB
heOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOBoOecoOOBhOOAgiIpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLmmKjml6XpgYXjgY/jgavlr53jgZ/jga7j
gaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi44Gv44G+44Gg55yg44GE
44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIkJlY2F1c2UgSSB3ZW50IHRvIGJlZCBs
YXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHkiKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMyMmE4ZWVlMTFhM2UzOTEwYzE2YzNiMTAwNTkwZTkzZTMxNjFkNTQKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1tYXAuanMKQEAg
LTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAv5LuK5pelfOaYjuaXpS9pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRl
c3QoIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOBoOecoOOBhOOAgiIp
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLmmKjml6XpgYXjgY/j
gavlr53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi44Gv
44G+44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIkJlY2F1c2UgSSB3
ZW50IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHkiKSwgZmFsc2UpOwor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434482</attachid>
            <date>2021-07-28 18:00:25 -0700</date>
            <delta_ts>2021-07-28 18:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728180024.patch</filename>
            <type>text/plain</type>
            <size>48404</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi42YTk0MWZlYThhODk4YjFm
MGEzOGQ0OTgxNDhmYmRiOGM1ZjM1N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGVtaXRz
IHNraXBwaW5nIGZhc3QtcGF0aCBhdCB0aGUgYmVnaW5uaW5nIG9mIGJvZHkgYWx0ZXJuYXRpdmVz
IHdpdGggYSBsYXJnZSBzdHJpZGUuIFNvIHdlIGNhbiBxdWlja2x5IGRpc2NhcmQgdW5yZWxhdGVk
IGNoYXJhY3RlcnMKKyAgICAgICAgYW5kIGF0dGVtcHQgdG8gZmluZCBwb3NzaWJseSByZWxhdGVk
IHNlcXVlbmNlIGluIHRoZSBsb25nIHNlcXVlbmNlLiBUaGUgbWV0aG9kIGlzIGRlcml2ZWQgZnJv
bSBWOCdzIGltcGxlbWVudGF0aW9uICh3aXRoIHNvbWUgZXh0ZW5zaW9ucykuCisKKyAgICAgICAg
SWYgd2UgaGF2ZSBhIHNlYXJjaGluZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBjaGVj
ayB0aGUgNnRoIGNoYXJhY3RlciBhZ2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBmfS4K
KyAgICAgICAgSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJhY3RlcnMu
IFdlIHVzZSB0aGlzIHN0cmF0ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRlZCBlYXNp
bHkgdG8gc3VwcG9ydAorICAgICAgICBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNsYXNzLCBhbmQg
aWdub3JlLWNhc2VzLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFiY3xkZWYpLywg
d2UgY2FuIGNoZWNrIDNyZCBjaGFyYWN0ZXIKKyAgICAgICAgYWdhaW5zdCB7YSwgYiwgYywgZCwg
ZSwgZn0gYW5kIHNoaWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBtYXRjaC4KKworICAg
ICAgICBUaGVuLCB0aGUgYmVzdCB3YXkgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc2hpZnRpbmcgaXMg
dGhhdCBmaW5kaW5nIHRoZSBsb25nZXN0IGNoYXJhY3RlciBzZXF1ZW5jZSB3aGljaCBkb2VzIG5v
dCBoYXZlCisgICAgICAgIG1hbnkgY2FuZGlkYXRlcy4gSW4gdGhlIGNhc2Ugb2YgL1thLXpdYWFh
YWFhYVthLXpdLywgd2UgY2FuIGV4dHJhY3QgImFhYWFhYWEiIHNlcXVlbmNlIGFuZCBjaGVjayA4
dGggY2hhcmFjdGVyIGFnYWluc3Qge2F9LgorICAgICAgICBJZiBpdCBkb2VzIG5vdCBtYXRjaCwg
dGhlbiB3ZSBjYW4gc2hpZnQgNyBjaGFyYWN0ZXJzIChsZW5ndGggb2YgImFhYWFhYWEiKS4gVGhp
cyBzaGlmdGluZyBpcyBiZXR0ZXIgdGhhbiB1c2luZyAiW2Etel1hYWFhYWFhW2Etel0iCisgICAg
ICAgIHNlcXVlbmNlIGFuZCB7YS16fSBzZXQgc2luY2Uge2Eten0gc2V0IHdpbGwgYWxtb3N0IGFs
d2F5cyBtYXRjaC4KKworICAgICAgICBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3Rl
cnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRv
IGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICB0aGF0IGFuZCBj
b25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBNaWNy
b2JlbmNobWFyayB3aGljaCBwZXJmb3JtcyBSZWdFeHAgb3BzIGluIFNwZWVkb21ldGVyMi9qUXVl
cnktVG9kb01WQyBzaG93cyAyNSUgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVk
CisKKyAgICAgICAgICAgIGpxdWVyeS10b2RvbXZjLXJlZ2V4cCAgICAgIDcyMy45NzM5Ky0xLjM5
OTcgICAgIF4gICAgNTc5LjE2OTgrLTEuMjUwNSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMjUwMHgg
ZmFzdGVyCisKKyAgICAgICAgVGhpcyBpbXByb3ZlcyBTcGVlZG9tZXRlcjIvalF1ZXJ5LVRvZG9N
VkMgYnkgMyUuCisKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAgfCAgICAg
bXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFsc2UgRGlz
Y292ZXJ5IFJhdGUpIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg
IHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMjMuMzY1NjI1ICAgfDEy
My40NTYyNTAgICB8MS4wMDA3MzUgIHwgMC44MDQwNzcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAg
ICAgICAgICAgICAgIHwyNi45MTI1MDAgICAgfDI2LjkyNTAwMCAgICB8MS4wMDA0NjQgIHwgMC45
Njk2MDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgIHwgRW1iZXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHwxMjcuNTQwNjI1ICAg
fDEyNy41NjI1MDAgICB8MS4wMDAxNzIgIHwgMC45NjA0NzQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQmFja2JvbmVKUy1Ub2RvTVZDICAg
ICAgICAgICAgICAgICAgIHw1MC42MDYyNTAgICAgfDUwLjUxODc1MCAgICB8MC45OTgyNzEgIHwg
MC42NzAzMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgIHwgUHJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyMS4wMTg3NTAg
ICAgfDIwLjg1MDAwMCAgICB8MC45OTE5NzEgIHwgMC41NjM4MTggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5ndWxhckpTLVRvZG9NVkMg
ICAgICAgICAgICAgICAgICAgIHwxMzYuOTQzNzUwICAgfDEzNy4yNzE4NzUgICB8MS4wMDIzOTYg
IHwgMC41MzE1MTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2OC41MjE4
NzUgICAgfDY4LjU5Mzc1MCAgICB8MS4wMDEwNDkgIHwgMC43MDEzNzYgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgSW5mZXJuby1Ub2RvTVZD
ICAgICAgICAgICAgICAgICAgICAgIHw2NS41NTkzNzUgICAgfDY1LjgwMzEyNSAgICB8MS4wMDM3
MTggIHwgMC40MTQ0MTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgICAgIHwgRmxpZ2h0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHw3Ny4y
ODQzNzUgICAgfDc2LjcxNTYyNSAgICB8MC45OTI2NDEgIHwgMC4yMTk4NzAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5ndWxhcjItVHlw
ZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHw0MC43MjUwMDAgICAgfDQwLjMxODc1MCAgICB8MC45
OTAwMjUgIHwgMC4yODEyMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHw1
NS4yMDkzNzUgICAgfDU0LjcxNTYyNSAgICB8MC45OTEwNTcgIHwgMC4wNTY5MjEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgalF1ZXJ5LVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyNjYuMzk2ODc1ICAgfDI1OC40NzE4NzUgICB8
MC45NzAyNTEgIHwgMC4wMDAwMDAgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAgICAgICAgICAg
IHwzNDEuNTUwMDAwICAgfDM0MS44NTYyNTAgICB8MS4wMDA4OTcgIHwgMC42MTgxNDAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgUmVhY3Qt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw4OC43MzEyNTAgICAgfDg4Ljg3MTg3NSAg
ICB8MS4wMDE1ODUgIHwgMC41MTI0MDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgIHwgUmVhY3QtUmVkdXgtVG9kb01WQyAgICAgICAgICAgICAg
ICAgIHwxNTAuMzQwNjI1ICAgfDE1MC4wNjU2MjUgICB8MC45OTgxNzEgIHwgMC40MTI5NDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVmFu
aWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2NS4zOTA2MjUgICAgfDY1LjM2MjUw
MCAgICB8MC45OTk1NzAgIHwgMC44MzQ3NjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIGEg
bWVhbiA9IDI0NS45Njk5NworICAgICAgICAgICAgYiBtZWFuID0gMjQ2Ljg2MzY2CisgICAgICAg
ICAgICBwVmFsdWUgPSAwLjAwNjE0NDg0MDIKKyAgICAgICAgICAgIChCaWdnZXIgbWVhbnMgYXJl
IGJldHRlci4pCisgICAgICAgICAgICAxLjAwNCB0aW1lcyBiZXR0ZXIKKyAgICAgICAgICAgIFJl
c3VsdHMgQVJFIHNpZ25pZmljYW50CisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6
CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJN
b29yZUluZm86OkJveWVyTW9vcmVJbmZvKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29y
ZUluZm86Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZv
OjpzZXQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6aW5kZXggY29uc3Qp
OgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2V0SW5kZXgpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6Qm95ZXJNb29yZUluZm86OmZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVuY2UgY29uc3QpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6ZmluZFdvcnRod2hpbGVDaGFyYWN0ZXJT
ZXF1ZW5jZUZvckxvb2thaGVhZCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVJbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAgY29uc3QpOgorICAgICAgICAqIHlhcnIvWWFy
ckpJVC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpjb3VudCBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6Om1hcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmlzTWFza0VmZmVjdGl2ZSBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJveWVyTW9vcmVCeXRlVmVjdG9yOjpCb3llck1vb3JlQnl0ZVZlY3Rvcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDhCaXRDb2RlKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0MTZCaXRDb2RlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGVNYXRjaE9ubHkpOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGVNYXRjaE9ubHkpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpjbGVhcik6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJDb2RlQmxvY2s6OmZpbmRTYW1lVmVjdG9yIGNvbnN0KToKKwogMjAyMS0wNy0yOCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIGxvYWQvc3Rv
cmUgd2l0aCBCYXNlSW5kZXggaXMgaW5lZmZpY2llbnQgaW4gQVJNNjQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDU0YTNmMGVi
YTBiOWE5YWQ2YzFiMjFhOWZhNTNjMDAwMmZlNGU4Mi4uMTlhMmRiODhiNzE3ZjI5NDYyMzhkZGQ2
M2Q4YjM5YWIzZmQ0YjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNy0yOCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxk
IHBlcmZvcm0gQk0gc2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGOjpCaXRWZWN0b3I6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29y
ZFR5cGU+OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6CisgICAgICAg
IChXVEY6Om1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cik6CisgICAgICAgIChXVEY6
OlVuaXF1ZVJlZjo6VW5pcXVlUmVmKToKKwogMjAyMS0wNy0yNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZlIHJldmVy
dCBvZiByMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCAzZGZjYzkxMjA5ZDQ1ODk5ZGZlMzk3YzEyMjRlMTg5YWNkZTkxZTc4Li4xYjljMTAx
ODc2MDFiMzdkMWJmMTE2MjMwMTlkZmE2NzgzMTIxMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ1Miw2ICs0NTIsNyBAQCBib29sIGNhblVz
ZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpOwogICAgIHYoVW5zaWduZWQsIHByb3RvdHlwZUhpdENv
dW50Rm9yTExJbnRDYWNoaW5nLCAyLCBOb3JtYWwsICJOdW1iZXIgb2YgcHJvdG90eXBlIHByb3Bl
cnR5IGhpdHMgYmVmb3JlIGNhY2hpbmcgYSBwcm90b3R5cGUgaW4gdGhlIExMSW50LiBBIGNvdW50
IG9mIDAgbWVhbnMgbmV2ZXIgY2FjaGUuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGR1bXBDb21w
aWxlZFJlZ0V4cFBhdHRlcm5zLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29s
LCB2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihCb29sLCBkdW1wTW9kdWxlTG9hZGluZ1N0YXRlLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDhiNTAx
ZWUzNDA3NTQ4ZTRhNGUxYTBkNzA1ODk4NGQ4ZDJmNjViOWIuLjUyNjU3ZTllYzU2MWVhYWQzMzAz
OGQzNjM1MGM5ZTZlOGVkMjg4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzUsMTI2IEBACiAjaW5jbHVkZSAiWWFyckRpc2Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIllhcnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCIKICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKK25hbWVzcGFjZSBZYXJySklUSW50ZXJuYWwgewor
c3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KIAogI2lmIENQVShBUk02
NEUpCiBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJK
SVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKICNlbmRpZgogCitjbGFzcyBCb3llck1v
b3JlSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQm95ZXJNb29yZUluZm8pOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJveWVyTW9vcmVJbmZvKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heExlbmd0aCA9IDMyOworCisgICAgZXhwbGljaXQg
Qm95ZXJNb29yZUluZm8odW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhs
ZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQodGhpcy0+bGVuZ3RoKCkgPD0gbWF4TGVuZ3Ro
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJh
Y3RlcnMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBj
aGFyYWN0ZXIpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eDsgfQorICAgIHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBt
X2luZGV4ID0gaW5kZXg7CisgICAgfQorCisgICAgc3RhdGljIFVuaXF1ZVJlZjxCb3llck1vb3Jl
SW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEJveWVyTW9vcmVJbmZvPihsZW5ndGgpOworICAgIH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjp0dXBsZTx1bnNpZ25lZCwgdW5zaWduZWQ+PiBmaW5kV29ydGh3aGlsZUNoYXJh
Y3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3Q7CisgICAgc3RkOjp0dXBsZTxCb3llck1v
b3JlQml0bWFwOjpNYXAsIGJvb2w+IGNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCh1bnNpZ25lZCBiZWdp
biwgdW5zaWduZWQgZW5kKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPGludCwg
dW5zaWduZWQsIHVuc2lnbmVkPiBmaW5kQmVzdENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51
bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25zdDsKKworICAgIFZlY3RvcjxCb3llck1vb3JlQml0
bWFwPiBtX2NoYXJhY3RlcnM7CisgICAgdW5zaWduZWQgbV9pbmRleCB7IDAgfTsKK307CisKK3N0
ZDo6dHVwbGU8aW50LCB1bnNpZ25lZCwgdW5zaWduZWQ+IEJveWVyTW9vcmVJbmZvOjpmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKHVuc2lnbmVkIG51bWJlck9mQ2FuZGlkYXRlc0xpbWl0KSBjb25z
dAoreworICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVuc2lnbmVkIGJlZ2luUmVzdWx0
ID0gMDsKKyAgICB1bnNpZ25lZCBlbmRSZXN1bHQgPSAwOworICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IGxlbmd0aCgpOykgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5n
dGgoKSAmJiBtX2NoYXJhY3RlcnNbaW5kZXhdLmNvdW50KCkgPiBudW1iZXJPZkNhbmRpZGF0ZXNM
aW1pdCkKKyAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgIGlmIChpbmRleCA9PSBsZW5ndGgo
KSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBiZWdpbiA9IGluZGV4Owor
ICAgICAgICBCb3llck1vb3JlQml0bWFwOjpNYXAgbWFwIHsgfTsKKyAgICAgICAgZm9yICg7IGlu
ZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpIDw9IG51bWJlck9m
Q2FuZGlkYXRlc0xpbWl0OyArK2luZGV4KQorICAgICAgICAgICAgbWFwLm1lcmdlKG1fY2hhcmFj
dGVyc1tpbmRleF0ubWFwKCkpOworCisgICAgICAgIC8vIElmIG1hcCBoYXMgbWFueSBjYW5kaWRh
dGVzLCB0aGVuIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMgbG93IHNpbmNlIGl0IHdpbGwgbWF0
Y2ggdG9vIG1hbnkgdGhpbmdzLgorICAgICAgICAvLyBBbmQgaWYgdGhlIHNlcXVlbmNlIGlzIGxv
bmdlciwgdGhlbiB0aGUgcG9pbnQgb2YgdGhpcyBzZXF1ZW5jZSBpcyBoaWdoZXIgc2luY2UgaXQg
Y2FuIHNraXAgbWFueSBjaGFyYWN0ZXJzLgorICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdl
IGFyZSBoYW5kbGluZyBhbGwgY2hhcmFjdGVycyBlcXVhbGx5LiBCdXQgd2Ugc2hvdWxkIGhhdmUg
d2VpZ2h0IHBlciBjaGFyYWN0ZXIgc2luY2UgZS5nLiAnZScgc2hvdWxkIGFwcGVhciBtb3JlIGZy
ZXF1ZW50bHkgdGhhbiAnXHYnLgorICAgICAgICBpbnQgZnJlcXVlbmN5ID0gbWFwLmNvdW50KCk7
CisgICAgICAgIGludCBtYXRjaGluZ1Byb2JhYmlsaXR5ID0gQm95ZXJNb29yZUJpdG1hcDo6bWFw
U2l6ZSAtIGZyZXF1ZW5jeTsKKyAgICAgICAgaW50IHBvaW50ID0gKGluZGV4IC0gYmVnaW4pICog
bWF0Y2hpbmdQcm9iYWJpbGl0eTsKKyAgICAgICAgaWYgKHBvaW50ID4gYmlnZ2VzdFBvaW50KSB7
CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBwb2ludDsKKyAgICAgICAgICAgIGJlZ2luUmVz
dWx0ID0gYmVnaW47CisgICAgICAgICAgICBlbmRSZXN1bHQgPSBpbmRleDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gc3RkOjp0dXBsZSB7IGJpZ2dlc3RQb2ludCwgYmVnaW5SZXN1bHQs
IGVuZFJlc3VsdCB9OworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVu
c2lnbmVkPj4gQm95ZXJNb29yZUluZm86OmZpbmRXb3J0aHdoaWxlQ2hhcmFjdGVyU2VxdWVuY2VG
b3JMb29rYWhlYWQoKSBjb25zdAoreworICAgIC8vIElmIGNhbmRpYXRlcy1wZXItY2hhcmFjdGVy
IGJlY29tZXMgbGFyZ2VyLCB0aGVuIHNlcXVlbmNlIGlzIG5vdCBwcm9maXRhYmxlIHNpbmNlIHRo
aXMgc2VxdWVuY2Ugd2lsbCBtYXRjaCBhZ2FpbnN0CisgICAgLy8gdG9vIG1hbnkgY2hhcmFjdGVy
cy4gQnV0IGlmIHdlIGxpbWl0IGNhbmRpYXRlcy1wZXItY2hhcmFjdGVyIHNtYWxsZXIsIGl0IGlz
IHBvc3NpYmxlIHRoYXQgd2Ugb25seSBmaW5kIHZlcnkgc2hvcnQKKyAgICAvLyBjaGFyYWN0ZXIg
c2VxdWVuY2UuIFdlIHN0YXJ0IHdpdGggbG93IGxpbWl0LCB0aGVuIGVubGFyZ2luZyB0aGUgbGlt
aXQgdG8gZmluZCBtb3JlIGFuZCBtb3JlIHByb2ZpdGFibGUKKyAgICAvLyBjaGFyYWN0ZXIgc2Vx
dWVuY2UuCisgICAgaW50IGJpZ2dlc3RQb2ludCA9IDA7CisgICAgdW5zaWduZWQgYmVnaW4gPSAw
OworICAgIHVuc2lnbmVkIGVuZCA9IDA7CisgICAgY29uc3RleHByIHVuc2lnbmVkIG1heENhbmRp
ZGF0ZXNQZXJDaGFyYWN0ZXIgPSAzMjsKKyAgICBmb3IgKHVuc2lnbmVkIGxpbWl0ID0gNDsgbGlt
aXQgPCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyOyBsaW1pdCAqPSAyKSB7CisgICAgICAgIGF1
dG8gW25ld1BvaW50LCBuZXdCZWdpbiwgbmV3RW5kXSA9IGZpbmRCZXN0Q2hhcmFjdGVyU2VxdWVu
Y2UobGltaXQpOworICAgICAgICBpZiAobmV3UG9pbnQgPiBiaWdnZXN0UG9pbnQpIHsKKyAgICAg
ICAgICAgIGJpZ2dlc3RQb2ludCA9IG5ld1BvaW50OworICAgICAgICAgICAgYmVnaW4gPSBuZXdC
ZWdpbjsKKyAgICAgICAgICAgIGVuZCA9IG5ld0VuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoIWJpZ2dlc3RQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjp0dXBsZSB7IGJlZ2luLCBlbmQgfTsKK30KKworc3RkOjp0dXBsZTxCb3llck1vb3Jl
Qml0bWFwOjpNYXAsIGJvb2w+IEJveWVyTW9vcmVJbmZvOjpjcmVhdGVDYW5kaWRhdGVCaXRtYXAo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK3sKKyAgICBCb3llck1vb3JlQml0
bWFwOjpNYXAgbWFwIHsgfTsKKyAgICBib29sIGlzTWFza0VmZmVjdGl2ZSA9IGZhbHNlOworICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSBiZWdpbjsgaW5kZXggPCBlbmQ7ICsraW5kZXgpIHsKKyAg
ICAgICAgYXV0byYgYm1CaXRtYXAgPSBtX2NoYXJhY3RlcnNbaW5kZXhdOworICAgICAgICBtYXAu
bWVyZ2UoYm1CaXRtYXAubWFwKCkpOworICAgICAgICBpc01hc2tFZmZlY3RpdmUgfD0gYm1CaXRt
YXAuaXNNYXNrRWZmZWN0aXZlKCk7CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgbWFw
LCBpc01hc2tFZmZlY3RpdmUgfTsKK30KKwogY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICNpZiBDUFUoQVJN
X1RIVU1CMikKQEAgLTgzMCw2ICs5NDAsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8g
dmFsdWUgdGhhdCB3aWxsIGJlIHB1c2hlZCBpbnRvIHRoZSBwYXR0ZXJuJ3MgZnJhbWUgdG8gcmV0
dXJuIHRvLAogICAgICAgICAvLyB1cG9uIGJhY2t0cmFja2luZyBiYWNrIGludG8gdGhlIGRpc2p1
bmN0aW9uLgogICAgICAgICBEYXRhTGFiZWxQdHIgbV9yZXR1cm5BZGRyZXNzOworCisgICAgICAg
IEJveWVyTW9vcmVJbmZvKiBtX2JtSW5mbzsKICAgICB9OwogCiAgICAgLy8gQmFja3RyYWNraW5n
U3RhdGUKQEAgLTE0MTAsNyArMTUyMiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAg
ICBhbGxDaGFyYWN0ZXJzIHw9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oY3VycmVudENoYXJhY3Rl
cikgPDwgc2hpZnRBbW91bnQpOwogCi0gICAgICAgICAgICBpZiAoKG1fcGF0dGVybi5pZ25vcmVD
YXNlKCkpICYmIChpc0FTQ0lJQWxwaGEoY3VycmVudENoYXJhY3RlcikpKQorICAgICAgICAgICAg
aWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0
ZXIpKQogICAgICAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMyVUxMIDw8IHNoaWZ0QW1v
dW50OwogICAgICAgICB9CiAKQEAgLTIyNTYsMTEgKzIzNjgsNjMgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgLy8gVXBvbiBlbnRyeSBhdCB0aGUgaGVhZCBvZiB0aGUgc2V0IG9m
IGFsdGVybmF0aXZlcywgY2hlY2sgaWYgaW5wdXQgaXMgYXZhaWxhYmxlCiAgICAgICAgICAgICAg
ICAgLy8gdG8gcnVuIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4gKFRoaXMgcHJvZ3Jlc3NlcyB0aGUg
aW5wdXQgcG9zaXRpb24pLgogICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJ
Zk5vQXZhaWxhYmxlSW5wdXQoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpKTsKKyAgICAgICAg
ICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisK
ICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIHJlZW50ZXIgYWZ0ZXIgdGhlIGNoZWNrLCBhbmQg
YXNzdW1lIHRoZSBpbnB1dCBwb3NpdGlvbiB0byBoYXZlIGJlZW4KICAgICAgICAgICAgICAgICAv
LyBzZXQgYXMgYXBwcm9wcmlhdGUgdG8gdGhpcyBhbHRlcm5hdGl2ZS4KICAgICAgICAgICAgICAg
ICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zm
c2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOworICAgICAgICAgICAgICAgIC8vIEVt
aXQgZmFzdCBza2lwIHBhdGggd2l0aCBzdHJpZGUgaWYgd2UgaGF2ZSBCb3llck1vb3JlSW5mby4K
KyAgICAgICAgICAgICAgICBpZiAob3AubV9ibUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byByYW5nZSA9IG9wLm1fYm1JbmZvLT5maW5kV29ydGh3aGlsZUNoYXJhY3RlclNlcXVlbmNl
Rm9yTG9va2FoZWFkKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBbYmVnaW5JbmRleCwgZW5kSW5kZXhdID0gKnJhbmdlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZEluZGV4IDw9IGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01h
c2tFZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbklu
ZGV4LCBlbmRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3Vu
dCA9IG1hcC5jb3VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUg
Y2hhcmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2
ZWN0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPD0gMikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMSA9IG1hcC5maW5kQml0
KDAsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIx
ICE9IEJveWVyTW9vcmVCaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjIgPSAweGZmOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXBDb3VudCA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcjIgPSBtYXAuZmluZEJpdChjaGFyYWN0ZXIxICsgMSwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIyICE9IEJveWVyTW9v
cmVCaXRtYXA6Ok1hcDo6c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJl
Z0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hh
cmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJh
Y3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpb
IiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEJveWVyTW9vcmVCaXRtYXA6
Om1hcE1hc2spLCByZWdUMCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3Rl
cjEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjIpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJ
bmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wKCku
bGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gbWFrZVVuaXF1ZVJlZjxCb3llck1v
b3JlQnl0ZVZlY3Rvcj4obWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZvdW5kIGJpdG1hcCBs
b29rYWhlYWQgY291bnQ6KCIsIG1hcENvdW50LCAiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCogcG9pbnRlciA9IHZlY3Rvci0+ZGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvKiBleGlzdGluZ1BvaW50ZXIgPSBtX2NvZGVCbG9jay5maW5kU2Ft
ZVZlY3RvcihvcC5tX2JtSW5mby0+aW5kZXgoKSwgdmVjdG9yLmdldCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9IGV4aXN0aW5nUG9pbnRlcjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYm1WZWN0b3IuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIHJlZ1QxKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4
ICsgMSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJ
bW0zMihCb3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVybywg
QmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4
IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoKS5saW5r
VG8obG9vcEhlYWQsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
bGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoK
QEAgLTI3ODAsNiArMjk0NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRP
cCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AubV9v
cCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAgICAgICAg
WWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9wLT5t
X29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3LDcgKzI5
NjIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gp
CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1f
cmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0g
WWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlz
IGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0
byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50
YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRo
aXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1f
aGFzRml4ZWRTaXplCkBAIC0yODEzLDQxICsyOTc4LDQxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYXJvdW5kIHRvIHRoZSBmaXJzdCBhbHRlcm5hdGl2ZS4K
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlzKTsK
IAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFuZCByZXRy
eSBmb3IgYSBzdGlja3kgcGF0dGVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9w
YXR0ZXJuLnN0aWNreSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
IHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZv
ciB1c2UgaWYgd2UgbWF0Y2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3Bh
dHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSAtIDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFuZCByZXRy
eSBmb3IgYSBzdGlja3kgcGF0dGVybi4gQW5kIGl0IGlzIGFscmVhZHkgaGFuZGxlZCBiZWZvcmUg
dGhpcyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5z
dGlja3koKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNp
emUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdl
IG1hdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5t
X2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdoZXRoZXIgdGhlIGxhc3QgYWx0
ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8pLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA+IGJlZ2luT3AtPm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0aW9uLiBJZiB0aGUg
ZGVsdGEgaXMgMSwgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxy
ZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1l
bnQgYXMgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGRlbHRhID0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBiZWdpbk9wLT5tX2FsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZGVsdGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEg
IT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGRl
bHRhIC0gMSksIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcChi
ZWdpbk9wLT5tX3JlZW50cnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBhbHRlcm5h
dGl2ZSBoYXMgbWluaW11bSBzaXplIDB4RkZGRkZGRkZ1LCB0aGVuIHRoZXJlIGNhbm5vdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxh
YmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZhbGwgdGhyb3VnaC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2FsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAweEZGRkZGRkZGdSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpbnB1dCBi
ZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0LgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnB1dCgpLmxpbmtUbyhiZWdpbk9w
LT5tX3JlZW50cnksIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdo
ZXRoZXIgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBmaXJzdCAoZS5nLiAvYXx4eS8gb3IgL2F8eHl6LykuCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBiZWdpbk9w
LT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0aW9uLiBJ
ZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
bHJlYWR5IGNvcnJlY3RseSBpbmNyZW1lbnRlZCwgaWYgbW9yZSB0aGFuIG9uZSB0aGVuIGRlY3Jl
bWVudCBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYmVnaW5PcC0+bV9hbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
ZGVsdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAxKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAtIDEpLCBpbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLT5tX3JlZW50cnkp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmltdW0gc2l6ZSAweEZG
RkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZh
bGwgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9
IGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMHhG
RkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBjaGVjayBpbnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0LgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihkZWx0YSArIDEpLCBpbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQoKS5saW5rVG8o
YmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2
MDcsNiArMzc3Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAoYWx0ZXJuYXRpdmVz
LnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpIHsKICAgICAgICAgICAg
IG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsK
ICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKKyAgICAg
ICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CiAKICAgICAgICAgICAgIGRv
IHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAx
OwpAQCAtMzY0Myw2ICszODA5LDIxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzaXplX3Qg
cmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5sYXN0KCku
bV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9
IG51bGxwdHI7CisgICAgICAgIC8vIENvbGxlY3QgQm95ZXJNb29yZUluZm8gaWYgaXQgaXMgcG9z
c2libGUgYW5kIHByb2ZpdGFibGUuIEJveWVyTW9vcmVJbmZvIHdpbGwgYmUgdXNlZCB0byBlbWl0
IGZhc3Qgc2tpcCBwYXRoIHdpdGggbGFyZ2Ugc3RyaWRlCisgICAgICAgIC8vIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGJvZHkgYWx0ZXJuYXRpdmVzLgorICAgICAgICAvLyBXZSBkbyBub3QgZW1p
dCB0aGVzZSBmYXN0IHBhdGggd2hlbiBSZWdFeHAgaGFzIHN0aWNreSBvciB1bmljb2RlIGZsYWcu
IFN0aWNreSBjYXNlIGRvZXMgbm90IG5lZWQgdGhpcyBzaW5jZQorICAgICAgICAvLyBpdCBmYWls
cyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRvIG1hdGNoIHdpdGggdGhlIGN1cnJl
bnQgb2Zmc2V0LgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCB1bmljb2RlIGZsYWcuCisgICAg
ICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlvbi0+bV9oYXNG
aXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkg
eworICAgICAgICAgICAgYXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6
bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86
Om1heExlbmd0aCkpOworICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNq
dW5jdGlvbiwgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CisgICAgICAg
ICAgICAgICAgYm1JbmZvLT5zZXRJbmRleChtX2JtSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXgg
PSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRl
cm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CkBA
IC0zNjY4LDYgKzM4NDksNjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RPcC5tX25l
eHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qm95ZXJNb29yZUlu
Zm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6ZV90IGN1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4LCBCb3llck1vb3JlSW5mbyYgYm1JbmZvKQorICAgIHsKKyAgICAgICAgLy8gSWYg
d2UgaGF2ZSBhIHNlYXJjaGluZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBjaGVjayB0
aGUgNnRoIGNoYXJhY3RlciBhZ2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBmfS4KKyAg
ICAgICAgLy8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJhY3RlcnMu
IFdlIHVzZSB0aGlzIHN0cmF0ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRlZCBlYXNp
bHkgdG8gc3VwcG9ydAorICAgICAgICAvLyBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNsYXNzLCBh
bmQgaWdub3JlLWNhc2VzLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFiY3xkZWYp
Lywgd2UgY2FuIGNoZWNrIDNyZCBjaGFyYWN0ZXIKKyAgICAgICAgLy8gYWdhaW5zdCB7YSwgYiwg
YywgZCwgZSwgZn0gYW5kIHNoaWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBtYXRjaC4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhlbiwgdGhlIGJlc3Qgd2F5IHRvIHBlcmZvcm0gdGhl
IGFib3ZlIHNoaWZ0aW5nIGlzIHRoYXQgZmluZGluZyB0aGUgbG9uZ2VzdCBjaGFyYWN0ZXIgc2Vx
dWVuY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAgICAvLyBtYW55IGNhbmRpZGF0ZXMuIElu
IHRoZSBjYXNlIG9mIC9bYS16XWFhYWFhYWFbYS16XS8sIHdlIGNhbiBleHRyYWN0ICJhYWFhYWFh
IiBzZXF1ZW5jZSBhbmQgY2hlY2sgOHRoIGNoYXJhY3RlciBhZ2FpbnN0IHthfS4KKyAgICAgICAg
Ly8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNoaWZ0IDcgY2hhcmFjdGVycyAo
bGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMgYmV0dGVyIHRoYW4gdXNpbmcg
IlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICAvLyBzZXF1ZW5jZSBhbmQge2Eten0gc2V0IHNp
bmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisgICAgICAgIC8vCisgICAg
ICAgIC8vIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFy
YWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNo
YXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0
IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlv
bi0+bV9oYXNGaXhlZFNpemUpOyAvLyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2Fo
ZWFkIGZvciBCb3llck1vb3JlIHNlYXJjaC4KKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5t
X21pbmltdW1TaXplKTsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQgZGlzanVu
Y3Rpb25zIChlLmcuIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLykuCisgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5nLiAvW1xkXXRlc3QvKS4KKyAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgbm9uLWZpeGVkLXNpemVkIGxvb2thaGVhZCAoZS5nLiAvLiphYmMvIGFu
ZCBleHRyYWN0ICJhYmMiIHNlcXVlbmNlKS4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0g
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVudEFsdGVy
bmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5hdGl2ZUlu
ZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJu
YXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1JbmZvLmxl
bmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBh
bHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJt
LnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRp
b25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9u
RU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldv
cmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFy
YWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNr
UmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndh
cmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5D
aGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9
IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAx
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xFTkdUSCh0
ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhh
dCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNh
c2UgcmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBj
bGFzcy4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgp
IHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlV
bmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFscGhhKHRl
cm0ucGF0dGVybkNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5z
ZXQoY3Vyc29yLCB0b0FTQ0lJVXBwZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSUxvd2VyKHRlcm0ucGF0
dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJvc2UsICJD
aGFyYWN0ZXJzIGNvbGxlY3RlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIoKQogICAgIHsKICNp
ZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMzk1MiwxNCArNDE5NiwxNCBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9k
ZTo6TWF0Y2hPbmx5KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6
Q2hhcjgpCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJ
TkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAi
TWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtC
dWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFy
IGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9S
RUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1v
bmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAgY29kZUJs
b2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVy
LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4
cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCi0gICAgICAgICAgICAg
ICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIs
IFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAg
ICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVm
ZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3Zl
KG1fYm1WZWN0b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb2RlQmxv
Y2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnIxNkJp
dFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZ
YXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdURk1vdmUobV9i
bVZlY3RvcikpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFzb24pCiAgICAg
ICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigqbV9mYWlsdXJl
UmVhc29uKTsKQEAgLTQxOTcsNiArNDQ0MSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgLy8g
VGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2VxdWVuY2Ugb2Yg
b3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAgIFZlY3RvcjxV
bmlxdWVSZWY8Qm95ZXJNb29yZUluZm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVjdG9yPFVuaXF1
ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+IG1fYm1WZWN0b3I7CiAKICAgICAvLyBUaGlzIHJl
Y29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFwcGxpZWQgZHVlIHRvIHRoZSBj
dXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdpdGhpbi4g
RS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmlu
ZGV4IGVmMzljOGI0MDQ1MmZkODVhYWJlM2UwNzI5NjVjMGRmM2RiYjA5ZjUuLmI5ZTUwMTQyNzc3
ODc4YmE3NDQ1ZDk4ZjY5ZWEzMjJmMWUxMjBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IHRo
ZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDkgQEAKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgorI2luY2x1ZGUgPHd0Zi9C
aXRtYXAuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzYwLDQ4IEBAIGVudW0g
Y2xhc3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1dGFibGVNZW1vcnlB
bGxvY2F0aW9uRmFpbHVyZSwKIH07CiAKK2NsYXNzIEJveWVyTW9vcmVCaXRtYXAgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRtYXApOworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEyODsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1hcE1hc2sgPSAxMjggLSAxOworICAgIHVzaW5nIE1hcCA9IEJpdG1hcDxt
YXBTaXplPjsKKworICAgIEJveWVyTW9vcmVCaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAgICB1bnNp
Z25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBNYXAmIG1h
cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisgICAgYm9vbCBpc01hc2tFZmZlY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX2lzTWFza0VmZmVjdGl2ZTsgfQorCisgICAgdm9pZCBhZGQoVUNoYXIz
MiBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGNoYXJhY3Rl
ciAmIG1hcE1hc2s7CisgICAgICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIG1faXNNYXNrRWZmZWN0aXZlID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21hcC5zZXQo
cG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAgfQorCitw
cml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsK
KyAgICBib29sIG1faXNNYXNrRWZmZWN0aXZlIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIEJveWVy
TW9vcmVCeXRlVmVjdG9yIDogcHVibGljIHN0ZDo6YXJyYXk8dWludDhfdCwgQm95ZXJNb29yZUJp
dG1hcDo6bWFwU2l6ZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIEJveWVyTW9vcmVCeXRlVmVjdG9yKGNvbnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1hcCYgbWFw
KQorICAgIHsKKyAgICAgICAgZmlsbCgwKTsKKyAgICAgICAgbWFwLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICAoKnRoaXMpW2luZGV4XSA9IDE7CisgICAg
ICAgIH0pOworICAgIH0KK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBFbmNvZGVk
TWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRl
ciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAiQyIgdm9p
ZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArMTI0LDM3IEBAIGNsYXNz
IFlhcnJDb2RlQmxvY2sgewogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVm
OC5zaXplKCk7IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVmMTYuc2l6
ZSgpOyB9Ci0gICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhC
aXRQdHJUYWc+IHJlZikgeyBtX3JlZjggPSByZWY7IH0KLSAgICB2b2lkIHNldDE2Qml0Q29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiByZWYpIHsgbV9yZWYxNiA9IHJl
ZjsgfQorICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0
UHRyVGFnPiByZWYsIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiYmIG1h
cHMpCisgICAgeworICAgICAgICBtX3JlZjggPSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZl
Q2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAg
ICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9Cisg
ICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRh
Zz4gcmVmLCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQor
ICAgIHsKKyAgICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICAgICAgbV9tYXBzLnJlc2VydmVDYXBh
Y2l0eShtX21hcHMuc2l6ZSgpICsgbWFwcy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBtYXBzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG1f
bWFwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBzW2luZGV4XSkpOworICAgIH0KIAogICAg
IGJvb2wgaGFzOEJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTguc2l6ZSgp
OyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25s
eTE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9u
bHk4ID0gbWF0Y2hPbmx5OyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHkoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1f
bWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5
LCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQorICAgIHsK
KyAgICAgICAgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OworICAgICAgICBtX21hcHMucmVzZXJ2
ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAg
ICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQor
ICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1v
b3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fbWF0Y2hPbmx5MTYgPSBt
YXRjaE9ubHk7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSAr
IG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
bWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29sIHVzZXNQYXR0ZXJuQ29u
dGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOyB9CiAjaWYg
RU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCkBAIC0xNzAsMjAgKzI0MCwz
MiBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIG1fcmVmOC5zaXplKCkg
KyBtX3JlZjE2LnNpemUoKSArIG1fbWF0Y2hPbmx5OC5zaXplKCkgKyBtX21hdGNoT25seTE2LnNp
emUoKTsKICAgICB9CiAKKyAgICAvLyBDb21waWxlIGFuZCBDbGVhciBhcmUgZ3VhcmRlZCBieSBS
ZWdFeHAncyBjZWxsLWxvY2suIFNvIHRoZXNlIG9wZXJhdGlvbnMgd29yayBhdG9taWNhbGx5Lgog
ICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgbV9yZWY4ID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPFlhcnI4Qml0UHRyVGFnPigpOwogICAgICAgICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAgICAgICBt
X21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0
clRhZz4oKTsKKyAgICAgICAgbV9tYXBzLmNsZWFyKCk7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKKyAgICBjb25zdCB1aW50OF90KiBmaW5kU2FtZVZl
Y3Rvcih1bnNpZ25lZCBpbmRleCwgQm95ZXJNb29yZUJ5dGVWZWN0b3ImIHZlY3RvcikgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChpbmRleCA8IG1fbWFwcy5zaXplKCkpIHsKKyAgICAgICAgICAg
IGlmIChtX21hcHNbaW5kZXhdLmdldCgpID09IHZlY3RvcikKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9tYXBzW2luZGV4XS0+ZGF0YSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKwogcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjhC
aXRQdHJUYWc+IG1fcmVmODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRy
VGFnPiBtX3JlZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJp
dFB0clRhZz4gbV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0
Y2hPbmx5MTZCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxC
b3llck1vb3JlQnl0ZVZlY3Rvcj4+IG1fbWFwczsKICAgICBib29sIG1fdXNlc1BhdHRlcm5Db250
ZXh0QnVmZmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+
IG1fZmFpbHVyZVJlYXNvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0
b3IuY3BwIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAppbmRleCAzY2U2OGZjMWJkN2Qy
ZDBmZjI5ZmI2ZWNlMDBiYjFhNWRmYjEzN2I3Li4zOTE2MTIxMTZlZjg2NmNiNTA1NDVjMzc3NDI1
MmJhOGVlNDUwNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKQEAgLTI2MiwxMiArMjYyLDggQEAgdWlu
dHB0cl90IEJpdFZlY3Rvcjo6aGFzaFNsb3dDYXNlKCkgY29uc3QKIAogdm9pZCBCaXRWZWN0b3I6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChnZXQoaSkpCi0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIxIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGYoIi0iKTsK
LSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAgICAgICAg
b3V0LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0bWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9CaXRt
YXAuaAppbmRleCA4ZjEzMjdhNDc0MTJmZDJhZGQ0ZWFmNTliMWY1YWVlMzZkZmYxYTg2Li5jNTAx
MTBiNWRlYTEzY2U0YmE1YmFkYTNlNDllYjcxZjVjMWQyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9CaXRtYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaApAQCAtMjMsNiAr
MjMsNyBAQAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5j
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KQEAgLTEzMCw2ICsxMzEsOCBAQCBjbGFzcyBC
aXRtYXAgZmluYWwgewogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgd29yZFNpemUgPSBzaXplb2YoV29yZFR5cGUpICogODsKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRzID0gKGJpdG1hcFNpemUgKyB3b3JkU2l6ZSAtIDEp
IC8gd29yZFNpemU7CkBAIC01MDcsNiArNTEwLDEzIEBAIGlubGluZSB1bnNpZ25lZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAg
ICAgICAgb3V0LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdURgogCiB1c2luZyBXVEY6OkJpdG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vu
aXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRlZTNkYzEyODc0
ZjE5OGUxYmY0NTNmMjM3YTk5Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2UwZTM5YzJj
NjlkOWMzNGRlYTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5pcXVlUmVm
PFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1VbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6
dW5pcXVlX3B0cjxUPiBwdHIpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxs
VW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1cm4gVW5pcXVl
UmVmPFQ+KCpwdHIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdURk1vdmUo
cHRyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBAIGNsYXNz
IFVuaXF1ZVJlZiB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisgICAgVCogcHRy
KCkgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9
CisgICAgVCogcHRyKCkgY29uc3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0
dXJuIG1fcmVmLmdldCgpOyB9CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3JlZik7IHJldHVy
biAqbV9yZWY7IH0KICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3JlZik7IHJl
dHVybiAqbV9yZWY7IH0KIApAQCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAog
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5p
cXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVm
RnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1
ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5k
IGNsYXNzIFVuaXF1ZVJlZjsKIAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVuaXF1ZV9w
dHI8VD4mJiBwdHIpCisgICAgICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fcmVmKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbV9yZWY7
CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGRhYWNmOTdmOTU4Yzg1ZGM5ZjUyZDRjMmUyZTI4ZTMyN2I4ODgxZWQuLmY3M2Q4NDAx
ODQ3MTNjZGI4NTE2MWRkZTE3MzIxOTkwNzE3ZDg1NTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDct
MjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZ
YXJyIHNob3VsZCBwZXJmb3JtIEJNIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVn
ZXhwLmpzOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rl
ci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4
cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKiBzdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNo
LWNoYXJhY3Rlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3Ry
ZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLW1hcC5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntj
YWxsZXIsYXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKaW5kZXggYWYzYTQyNDU5N2UxNzM5
ZDJjZGEzZDAzM2NkMjU5NGRkMjQ3OGU2MS4uNGYzMGFlZTg4NzM1NWEzN2YyMWU4NjVlNmYxNDc3
ZDE4MmI1NzFmYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5LXRv
ZG9tdmMtcmVnZXhwLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2Rv
bXZjLXJlZ2V4cC5qcwpAQCAtODQyMDksNyArODQyMDksOCBAQCBmdW5jdGlvbiB0ZXN0KHJlZ0V4
cHMsIHN0cmluZ3MpIHsKICAgICByZWdFeHAkMTYubGFzdEluZGV4ID0gMDsKICAgICByZXN1bHRz
ID0gcmVnRXhwJDE2LmV4ZWMoc3RyaW5nJDIxNSk7CiB9Ci1ub0lubGluZSh0ZXN0KTsKK2lmICh0
eXBlb2Ygbm9JbmxpbmUgIT09ICJ1bmRlZmluZWQiKQorICAgIG5vSW5saW5lKHRlc3QpOwogcmVn
RXhwcy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIHN0cmluZ3MucHVzaCgvYXZv
aWQgY29uc3RhbnQgZm9sZGluZy9naSk7CiBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kpCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rl
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctY2hhcmFjdGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgzM2UwZDY4MGQ2YTFlNzE0MDE1YzVhMDVmMjRmYjY3OTIxYzU4ZTIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNo
YXJhY3Rlci5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC9hYWFh
YmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFi
YmJiL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShy
ZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFh
YWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZmZiIpLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJi
YmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWJiYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2Nj
Y2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJhYWFhYmJiYmFhYWFi
YmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmZmZmZmIiksIHRydWUp
OworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgImFiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFh
YWFiYmJiYWFhYWJiYmJhYWJiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRk
Iik7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgImZmZmZmIik7CisgICAgc2hv
dWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2Nj
Y2RkZGRhYWFhYmJiYmNjY2NkZGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksIGZhbHNlKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVjZmFmNmYyYWQ1YzJlZjZmNDljOWI3ZDdiYmJlMjM2NDA2NzAyYQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzCkBAIC0w
LDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL2FhYWFiYmJiY2NjY2RkZGRhYWFh
YmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUy
OyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZm
ZiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICJhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi
ZmZmZmYiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZmZmZmZmZmZmZmZmZmZmZmZmZmZm
ZmYiKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZl
Y3Rvci1yZXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2UzMWVmMmZhNThjNzhmNDBlMjYxMTMwYmIzNWFkNTQ2MWExOGYzZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMK
QEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgcmVnZXhwID0gL3NjcmlwdC87Citmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUoL3NjcmlwdC8udGVzdCgidGVz
dHRlc3RzY3JpcHQiKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAi
dGVzdHRlc3QiKTsKKyAgICBzaG91bGRCZSgvc2NyaXB0Ly50ZXN0KCR2bS5tYWtlMTZCaXRTdHJp
bmdJZlBvc3NpYmxlKCJ0ZXN0dGVzdHNjcmlwdCIpKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVn
RXhwLmxlZnRDb250ZXh0LCAidGVzdHRlc3QiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YmE2NzRmOTIzN2EwYTQyOTNkNzFlMGRkZjJjOTlhYjVmOWE2OGIwCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpz
CkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL+S7iuaXpS9pOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3Qo
IuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOBoOecoOOBhOOAgiIpLCB0
cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLmmKjml6XpgYXjgY/jgavl
r53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi44Gv44G+
44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIkJlY2F1c2UgSSB3ZW50
IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHkiKSwgZmFsc2UpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFw
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMyMmE4ZWVlMTFhM2UzOTEwYzE2YzNiMTAwNTkwZTkzZTMxNjFkNTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1t
YXAuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAv5LuK5pelfOaY
juaXpS9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUo
cmVnZXhwLnRlc3QoIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOBoOec
oOOBhOOAgiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLmmKjm
l6XpgYXjgY/jgavlr53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250
ZXh0LCAi44Gv44G+44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIkJl
Y2F1c2UgSSB3ZW50IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHkiKSwg
ZmFsc2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434484</attachid>
            <date>2021-07-28 18:07:05 -0700</date>
            <delta_ts>2021-07-28 18:51:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728180704.patch</filename>
            <type>text/plain</type>
            <size>48428</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi42ZmM5YjlhODRkOTE3NDE3
OGIyMTE3N2YyYjFlZjQwNTdmZmExMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQm95ZXJNb29yZSBzZWFyY2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZW1pdHMgc2tpcHBpbmcgZmFzdC1wYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgYm9keSBhbHRl
cm5hdGl2ZXMgd2l0aCBhIGxhcmdlIHN0cmlkZS4gU28gd2UgY2FuIHF1aWNrbHkgZGlzY2FyZCB1
bnJlbGF0ZWQgY2hhcmFjdGVycworICAgICAgICBhbmQgYXR0ZW1wdCB0byBmaW5kIHBvc3NpYmx5
IHJlbGF0ZWQgc2VxdWVuY2UgaW4gdGhlIGxvbmcgc2VxdWVuY2UuIFRoZSBtZXRob2QgaXMgZGVy
aXZlZCBmcm9tIFY4J3MgaW1wbGVtZW50YXRpb24gKHdpdGggc29tZSBleHRlbnNpb25zKS4KKwor
ICAgICAgICBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2Ug
Y2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQs
IGUsIGZ9LgorICAgICAgICBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hh
cmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVu
ZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xh
c3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJj
fGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICBhZ2FpbnN0IHthLCBi
LCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1hdGNo
LgorCisgICAgICAgIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlm
dGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNo
IGRvZXMgbm90IGhhdmUKKyAgICAgICAgbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAv
W2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5k
IGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIElmIGl0IGRvZXMgbm90
IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFh
YSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16
XSIKKyAgICAgICAgc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBh
bG1vc3QgYWx3YXlzIG1hdGNoLgorCisgICAgICAgIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUg
Y2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJp
c3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIHRo
YXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAg
ICAgIE1pY3JvYmVuY2htYXJrIHdoaWNoIHBlcmZvcm1zIFJlZ0V4cCBvcHMgaW4gU3BlZWRvbWV0
ZXIyL2pRdWVyeS1Ub2RvTVZDIHNob3dzIDI1JSBpbXByb3ZlbWVudC4KKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAg
IFBhdGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNzIzLjk3
MzkrLTEuMzk5NyAgICAgXiAgICA1NzkuMTY5OCstMS4yNTA1ICAgICAgICBeIGRlZmluaXRlbHkg
MS4yNTAweCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVl
cnktVG9kb01WQyBieSAzJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAg
ICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBG
YWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg
ICAgICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy4zNjU2
MjUgICB8MTIzLjQ1NjI1MCAgIHwxLjAwMDczNSAgfCAwLjgwNDA3NyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAg
ICAgICAgICAgICAgICAgICAgICAgfDI2LjkxMjUwMCAgICB8MjYuOTI1MDAwICAgIHwxLjAwMDQ2
NCAgfCAwLjk2OTYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy41
NDA2MjUgICB8MTI3LjU2MjUwMCAgIHwxLjAwMDE3MiAgfCAwLjk2MDQ3NCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgfDUwLjYwNjI1MCAgICB8NTAuNTE4NzUwICAgIHwwLjk5
ODI3MSAgfCAwLjY3MDMxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAxODc1MCAgICB8MjAuODUwMDAwICAgIHwwLjk5MTk3MSAgfCAwLjU2MzgxOCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDEzNi45NDM3NTAgICB8MTM3LjI3MTg3NSAgIHwx
LjAwMjM5NiAgfCAwLjUzMTUxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAg
fDY4LjUyMTg3NSAgICB8NjguNTkzNzUwICAgIHwxLjAwMTA0OSAgfCAwLjcwMTM3NiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5v
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjU1OTM3NSAgICB8NjUuODAzMTI1ICAg
IHwxLjAwMzcxOCAgfCAwLjQxNDQxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAg
ICAgfDc3LjI4NDM3NSAgICB8NzYuNzE1NjI1ICAgIHwwLjk5MjY0MSAgfCAwLjIxOTg3MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1
bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjcyNTAwMCAgICB8NDAuMzE4NzUw
ICAgIHwwLjk5MDAyNSAgfCAwLjI4MTIxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgfDU1LjIwOTM3NSAgICB8NTQuNzE1NjI1ICAgIHwwLjk5MTA1NyAgfCAwLjA1NjkyMSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBq
UXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI2Ni4zOTY4NzUgICB8MjU4LjQ3
MTg3NSAgIHwwLjk3MDI1MSAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAg
ICAgICAgICAgfDM0MS41NTAwMDAgICB8MzQxLjg1NjI1MCAgIHwxLjAwMDg5NyAgfCAwLjYxODE0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4LjczMTI1MCAgICB8ODgu
ODcxODc1ICAgIHwxLjAwMTU4NSAgfCAwLjUxMjQwNyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgfDE1MC4zNDA2MjUgICB8MTUwLjA2NTYyNSAgIHwwLjk5ODE3MSAgfCAwLjQx
Mjk0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgfCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1LjM5MDYyNSAgICB8
NjUuMzYyNTAwICAgIHwwLjk5OTU3MCAgfCAwLjgzNDc2MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgYSBtZWFuID0gMjQ1Ljk2OTk3CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODYzNjYK
KyAgICAgICAgICAgIHBWYWx1ZSA9IDAuMDA2MTQ0ODQwMgorICAgICAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDA0IHRpbWVzIGJldHRlcgorICAgICAg
ICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCb3llck1vb3JlSW5mbzo6Qm95ZXJNb29yZUluZm8pOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlSW5mbzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJN
b29yZUluZm86OnNldCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjppbmRl
eCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRJbmRleCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qm95ZXJNb29yZUluZm86OmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCBjb25zdCk6CisgICAgICAgICog
eWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmNv
dW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6bWFwIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6aXNNYXNrRWZmZWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkKToK
KyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJ5dGVWZWN0b3I6OkJveWVyTW9vcmVCeXRl
VmVjdG9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGUp
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZU1hdGNoT25seSk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDE2Qml0Q29kZU1hdGNoT25seSk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmNsZWFyKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZmluZFNhbWVWZWN0b3IgY29uc3QpOgorCiAyMDIxLTA3
LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
bG9hZC9zdG9yZSB3aXRoIEJhc2VJbmRleCBpcyBpbmVmZmljaWVudCBpbiBBUk02NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBk
NTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgyLi41MDRjNGU4ODNkN2ZhZGFh
MjA4ZDYwMmI3NTA4ZTE3YWRmNWMxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA3LTI4
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFy
ciBzaG91bGQgcGVyZm9ybSBCb3llck1vb3JlIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAg
KFdURjo6Qml0VmVjdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogd3RmL1VuaXF1
ZVJlZi5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIp
OgorICAgICAgICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBz
cGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggM2RmY2M5MTIwOWQ0NTg5OWRmZTM5N2MxMjI0ZTE4OWFj
ZGU5MWU3OC4uMWI5YzEwMTg3NjAxYjM3ZDFiZjExNjIzMDE5ZGZhNjc4MzEyMTI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00NTIsNiArNDUy
LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KFVuc2lnbmVk
LCBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZywgMiwgTm9ybWFsLCAiTnVtYmVyIG9m
IHByb3RvdHlwZSBwcm9wZXJ0eSBoaXRzIGJlZm9yZSBjYWNoaW5nIGEgcHJvdG90eXBlIGluIHRo
ZSBMTEludC4gQSBjb3VudCBvZiAwIG1lYW5zIG5ldmVyIGNhY2hlLiIpIFwKICAgICBcCiAgICAg
dihCb29sLCBkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYoQm9vbCwgdmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAppbmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi41MjY1
N2U5ZWM1NjFlYWFkMzMwMzhkMzYzNTBjOWU2ZThlZDI4ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDEyNiBAQAogI2lu
Y2x1ZGUgIllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0
SG9sZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAKICNpZiBFTkFCTEUoWUFS
Ul9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CituYW1lc3BhY2UgWWFy
ckpJVEludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdl
dF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRlcik7CiAjZW5kaWYK
IAorY2xhc3MgQm95ZXJNb29yZUluZm8geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVy
TW9vcmVJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlSW5mbyk7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAzMjsK
KworICAgIGV4cGxpY2l0IEJveWVyTW9vcmVJbmZvKHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPmxlbmd0
aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2lu
ZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGluZGV4OworICAgIH0KKworICAgIHN0YXRpYyBVbmlx
dWVSZWY8Qm95ZXJNb29yZUluZm8+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCb3llck1vb3JlSW5mbz4obGVuZ3RoKTsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmlu
ZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIHN0
ZDo6dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBjcmVhdGVDYW5kaWRhdGVCaXRt
YXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RkOjp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1
ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0
b3I8Qm95ZXJNb29yZUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1faW5kZXgg
eyAwIH07Cit9OworCitzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBCb3llck1v
b3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRp
ZGF0ZXNMaW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNp
Z25lZCBiZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hp
bGUgKGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVt
YmVyT2ZDYW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAo
aW5kZXggPT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQg
YmVnaW4gPSBpbmRleDsKKyAgICAgICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07Cisg
ICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hhcmFjdGVyc1tpbmRleF0uY291
bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsgKytpbmRleCkKKyAgICAgICAgICAgIG1h
cC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKworICAgICAgICAvLyBJZiBtYXAg
aGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBz
aW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5ncy4KKyAgICAgICAgLy8gQW5kIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMg
aGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxsIGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0
IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFjdGVyIHNpbmNlIGUuZy4gJ2UnIHNob3Vs
ZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5j
eSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0Y2hpbmdQcm9iYWJpbGl0eSA9IEJveWVy
TW9vcmVCaXRtYXA6Om1hcFNpemUgLSBmcmVxdWVuY3k7CisgICAgICAgIGludCBwb2ludCA9IChp
bmRleCAtIGJlZ2luKSAqIG1hdGNoaW5nUHJvYmFiaWxpdHk7CisgICAgICAgIGlmIChwb2ludCA+
IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gcG9pbnQ7CisgICAg
ICAgICAgICBiZWdpblJlc3VsdCA9IGJlZ2luOworICAgICAgICAgICAgZW5kUmVzdWx0ID0gaW5k
ZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0UG9p
bnQsIGJlZ2luUmVzdWx0LCBlbmRSZXN1bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1
cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD4+IEJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0
ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdlciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJv
Zml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdpbGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRv
byBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBsaW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3Rl
ciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0Cisg
ICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBzdGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBl
bmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9yZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAg
Ly8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVu
c2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25lZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25l
ZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlkYXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0g
MikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwgbmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAgICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2Vz
dFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAg
ICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAgICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiZWdpbiwgZW5kIH07Cit9CisKK3N0ZDo6
dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBCb3llck1vb3JlSW5mbzo6Y3JlYXRl
Q2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7Cisg
ICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgYm9vbCBpc01hc2tFZmZlY3Rp
dmUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gYmVnaW47IGluZGV4IDwgZW5k
OyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIGJtQml0bWFwID0gbV9jaGFyYWN0ZXJzW2luZGV4
XTsKKyAgICAgICAgbWFwLm1lcmdlKGJtQml0bWFwLm1hcCgpKTsKKyAgICAgICAgaXNNYXNrRWZm
ZWN0aXZlIHw9IGJtQml0bWFwLmlzTWFza0VmZmVjdGl2ZSgpOworICAgIH0KKyAgICByZXR1cm4g
c3RkOjp0dXBsZSB7IG1hcCwgaXNNYXNrRWZmZWN0aXZlIH07Cit9CisKIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTQwLDggQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVy
bidzIGZyYW1lIHRvIHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFj
ayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRk
cmVzczsKKworICAgICAgICBCb3llck1vb3JlSW5mbyogbV9ibUluZm87CiAgICAgfTsKIAogICAg
IC8vIEJhY2t0cmFja2luZ1N0YXRlCkBAIC0xNDEwLDcgKzE1MjIsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgYWxsQ2hhcmFjdGVycyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGN1cnJlbnRDaGFyYWN0ZXIpIDw8IHNoaWZ0QW1vdW50KTsKIAotICAgICAgICAgICAgaWYgKCht
X3BhdHRlcm4uaWdub3JlQ2FzZSgpKSAmJiAoaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIp
KSkKKyAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBo
YShjdXJyZW50Q2hhcmFjdGVyKSkKICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlTWFzayB8PSAz
MlVMTCA8PCBzaGlmdEFtb3VudDsKICAgICAgICAgfQogCkBAIC0yMjU2LDExICsyMzY4LDYzIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhl
YWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJs
ZQogICAgICAgICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlz
IHByb2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplKSk7CisgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplOworCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVy
IHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAg
ICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUu
CiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAg
ICAgICAgICAgICAvLyBFbWl0IGZhc3Qgc2tpcCBwYXRoIHdpdGggc3RyaWRlIGlmIHdlIGhhdmUg
Qm95ZXJNb29yZUluZm8uCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVD
aGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZElu
ZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8
PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gW21hcCwgaXNNYXNrRWZmZWN0aXZlXSA9IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRh
dGVCaXRtYXAoYmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbWFwQ291bnQgPSBtYXAuY291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGNhbmRpYXRlIGNoYXJhY3RlcnMgYXJlIDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0
dGVyIHRoYW4gdXNpbmcgdmVjdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENv
dW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIyID0gMHhmZjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPT0gMikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIyID0gbWFwLmZpbmRCaXQoY2hhcmFjdGVyMSAr
IDEsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyMiAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgMS1vci0yIGNoYXJhY3Rl
cnMgbG9va2FoZWFkIGNoYXJhY3RlcjooMHgiLCBoZXgoY2hhcmFjdGVyMSksICIpLGNoYXJhY3Rl
cjI6KCIsIGhleChjaGFyYWN0ZXIyKSwgIiksaXNNYXNrRWZmZWN0aXZlOigiLCBpc01hc2tFZmZl
Y3RpdmUsIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsg
MSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tFZmZlY3Rp
dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihC
b3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
YXBDb3VudCA9PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFw
cGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHZlY3RvciA9IG1ha2VV
bmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+KG1hcCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCks
ICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIs
IGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBvaW50ZXIgPSB2ZWN0b3ItPmRhdGEoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byogZXhpc3RpbmdQb2ludGVyID0gbV9j
b2RlQmxvY2suZmluZFNhbWVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIHZlY3Rvci5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBleGlzdGluZ1Bv
aW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBy
ZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmQzMihUcnVzdGVkSW1tMzIoQm95ZXJNb29yZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNo
VGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFi
bGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlB
bHRlcm5hdGl2ZU5leHQ6CkBAIC0yNzgwLDYgKzI5NDQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIFlhcnJPcCYgZW5kT3AgPSBtX29wc1tvcC5tX25leHRPcF07CisgICAgICAgICAgICAgICAg
QVNTRVJUKGVuZE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKTsKIAog
ICAgICAgICAgICAgICAgIFlhcnJPcCogYmVnaW5PcCA9ICZvcDsKICAgICAgICAgICAgICAgICB3
aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikg
ewpAQCAtMjc5Nyw3ICsyOTYyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
aWYgKG9uY2VUaHJvdWdoKQogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRl
LmxpbmtUbyhlbmRPcC5tX3JlZW50cnksIHRoaXMpOwogICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpICYmIG1fb3BzW29wLm1f
bmV4dE9wXS5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJdCBpcyBhIHN0aWNreSBwYXR0ZXJuIGFuZCB0aGUgbGFzdCBhbHRlcm5hdGl2
ZSBmYWlsZWQsIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFj
a3RyYWNraW5nU3RhdGUudGFrZUJhY2t0cmFja3NUb0p1bXBMaXN0KGxhc3RTdGlja3lBbHRlcm5h
dGl2ZUZhaWx1cmVzLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3Bh
dHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZQpAQCAtMjgxMyw0MSArMjk3OCw0MSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyb3VuZCB0byB0aGUgZmly
c3QgYWx0ZXJuYXRpdmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0
YXRlLmxpbmsodGhpcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8g
YWR2YW5jZSBhbmQgcmV0cnkgZm9yIGEgc3RpY2t5IHBhdHRlcm4uCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fcGF0dGVybi5zdGlja3koKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRo
ZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09
IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGlu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCByZWdUMCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8g
YWR2YW5jZSBhbmQgcmV0cnkgZm9yIGEgc3RpY2t5IHBhdHRlcm4uIEFuZCBpdCBpcyBhbHJlYWR5
IGhhbmRsZWQgYmVmb3JlIHRoaXMgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX3BhdHRlcm4uc3RpY2t5KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5k
ZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9w
YXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUo
aW5kZXgsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0
aGVyIHRoZSBsYXN0IGFsdGVybmF0aXZlIGlzIGxvbmdlciB0aGFuIHRoZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGZpcnN0IChlLmcuIC9hfHh5LyBvciAvYXx4eXovKS4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBi
ZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbG9vcCwgYW5kIGluY3JlbWVudCBpbnB1dCBw
b3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlzIDEsIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGFscmVhZHkgY29ycmVjdGx5IGluY3JlbWVudGVkLCBpZiBtb3JlIHRoYW4g
b25lIHRoZW4gZGVjcmVtZW50IGFzIGFwcHJvcHJpYXRlLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0g
YmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRhKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRlbHRhICE9IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWIzMihJbW0zMihkZWx0YSAtIDEpLCBpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmltdW0gc2l6ZSAweEZGRkZGRkZGdSwgdGhlbiB0
aGVyZSBjYW5ub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc3VmZmlj
ZW50IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxsIHRocm91Z2gu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRlbHRhID0gYmVnaW5P
cC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMHhGRkZG
RkZGRnUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQg
dG8gY2hlY2sgaW5wdXQgYmVjYXVzZSB3ZSBhcmUgaW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGRlbHRhICsgMSks
IGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQo
KS5saW5rVG8oYmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSB0
byBsb29wLiBDaGVjayB3aGV0aGVyIHRoZSBsYXN0IGFsdGVybmF0aXZlIGlzIGxvbmdlciB0aGFu
IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9h
fHh5ei8pLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplID4gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbG9vcCwgYW5kIGluY3JlbWVudCBp
bnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRhIGlzIDEsIGl0IGlzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYWxyZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhh
biBvbmUgdGhlbiBkZWNyZW1lbnQgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIGJl
Z2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGRlbHRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVsdGEgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIo
ZGVsdGEgLSAxKSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoYmVn
aW5PcC0+bV9yZWVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGFsdGVybmF0aXZlIGhhcyBt
aW5pbXVtIHNpemUgMHhGRkZGRkZGRnUsIHRoZW4gdGhlcmUgY2Fubm90CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYmUgc3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUg
dGhpcywgc28ganVzdCBmYWxsIHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0g
YWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGRlbHRhICE9IDB4RkZGRkZGRkZ1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQgYmVjYXVzZSB3ZSBhcmUgaW5jcmVtZW50aW5n
IHRoZSBpbnB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIo
ZGVsdGEgKyAxKSwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0lucHV0KCkubGlua1RvKGJlZ2luT3AtPm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC0zNjA3LDYgKzM3NzIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
aWYgKGFsdGVybmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgp
KSB7CiAgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRl
cm5hdGl2ZUJlZ2luKSk7CiAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0g
bm90Rm91bmQ7CisgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOwog
CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0g
bV9vcHMuc2l6ZSgpIC0gMTsKQEAgLTM2NDMsNiArMzgwOSwyMSBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgc2l6ZV90IHJlcGVhdExvb3AgPSBtX29wcy5zaXplKCk7CiAgICAgICAgIG1fb3Bz
LmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAg
ICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wcy5s
YXN0KCkubV9ibUluZm8gPSBudWxscHRyOworICAgICAgICAvLyBDb2xsZWN0IEJveWVyTW9vcmVJ
bmZvIGlmIGl0IGlzIHBvc3NpYmxlIGFuZCBwcm9maXRhYmxlLiBCb3llck1vb3JlSW5mbyB3aWxs
IGJlIHVzZWQgdG8gZW1pdCBmYXN0IHNraXAgcGF0aCB3aXRoIGxhcmdlIHN0cmlkZQorICAgICAg
ICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBib2R5IGFsdGVybmF0aXZlcy4KKyAgICAgICAg
Ly8gV2UgZG8gbm90IGVtaXQgdGhlc2UgZmFzdCBwYXRoIHdoZW4gUmVnRXhwIGhhcyBzdGlja3kg
b3IgdW5pY29kZSBmbGFnLiBTdGlja3kgY2FzZSBkb2VzIG5vdCBuZWVkIHRoaXMgc2luY2UKKyAg
ICAgICAgLy8gaXQgZmFpbHMgd2hlbiB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRj
aCB3aXRoIHRoZSBjdXJyZW50IG9mZnNldC4KKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5p
Y29kZSBmbGFnLgorICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlz
anVuY3Rpb24tPm1faGFzRml4ZWRTaXplICYmICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0
dGVybi51bmljb2RlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gYm1JbmZvID0gQm95ZXJNb29yZUlu
Zm86OmNyZWF0ZShzdGQ6Om1pbjx1bnNpZ25lZD4oZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUs
IEJveWVyTW9vcmVJbmZvOjptYXhMZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChjb2xsZWN0Qm95
ZXJNb29yZUluZm8oZGlzanVuY3Rpb24sIGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8u
Z2V0KCkpKSB7CisgICAgICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZv
LnB0cigpOworICAgICAgICAgICAgICAgIGJtSW5mby0+c2V0SW5kZXgobV9ibUluZm9zLnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9ibUluZm9zLmFwcGVuZChXVEZNb3ZlKGJtSW5mbykpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgZG8gewogICAgICAgICAgICAgc2l6
ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKICAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZl
SW5kZXhdLmdldCgpOwpAQCAtMzY2OCw2ICszODQ5LDY5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRMb29wOwogICAgIH0KIAorICAgIGJvb2wgY29s
bGVjdEJveWVyTW9vcmVJbmZvKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVf
dCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgQm95ZXJNb29yZUluZm8mIGJtSW5mbykKKyAgICB7
CisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBzZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhl
biB3ZSBjYW4gY2hlY2sgdGhlIDZ0aCBjaGFyYWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwg
YywgZCwgZSwgZn0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hp
ZnQgNiBjaGFyYWN0ZXJzLiBXZSB1c2UgdGhpcyBzdHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4g
YmUgZXh0ZW5kZWQgZWFzaWx5IHRvIHN1cHBvcnQKKyAgICAgICAgLy8gZGlzanVuY3Rpb24sIGNo
YXJhY3Rlci1jbGFzcywgYW5kIGlnbm9yZS1jYXNlcy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNl
IG9mIC8oPzphYmN8ZGVmKS8sIHdlIGNhbiBjaGVjayAzcmQgY2hhcmFjdGVyCisgICAgICAgIC8v
IGFnYWluc3Qge2EsIGIsIGMsIGQsIGUsIGZ9IGFuZCBzaGlmdCAzIGNoYXJhY3RlcnMgaWYgaXQg
ZG9lcyBub3QgbWF0Y2guCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZW4sIHRoZSBiZXN0IHdh
eSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlmdGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdl
c3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAgICAgICAgLy8gbWFu
eSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAvW2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4g
ZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5kIGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5z
dCB7YX0uCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlm
dCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJl
dHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2Ug
YW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgor
ICAgICAgICAvLworICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3Rl
cnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRv
IGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFu
ZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBB
U1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBzdXBwb3J0IGZp
eGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQm95ZXJNb29yZSBzZWFyY2guCisgICAgICAgIEFTU0VS
VChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBv
cnQgbmVzdGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAvKD86YWJjfGRlZnxnKD86aGl8amspKS8pLgor
ICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjaGFyYWN0ZXItY2xhc3MgKGUuZy4gL1tcZF10ZXN0
LykuCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi1maXhlZC1zaXplZCBsb29rYWhlYWQg
KGUuZy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJjIiBzZXF1ZW5jZSkuCisgICAgICAgIGF1dG8m
IGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgZm9y
ICg7IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4IDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytjdXJy
ZW50QWx0ZXJuYXRpdmVJbmRleCkgeworICAgICAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gMDsK
KyAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2
ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpICYmIGN1
cnNvciA8IGJtSW5mby5sZW5ndGgoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIFBhdHRl
cm5UZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1fdGVybXNbaW5kZXhdOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAodGVybS50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkFzc2VydGlvbkVPTDoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgorICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJt
LnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50
aXR5TWF4Q291bnQgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVjb2RlU3Vy
cm9nYXRlUGFpcnMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2Np
aSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8g
dXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0aW9ucyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQg
dG8gYSBjaGFyYWN0ZXIgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0
ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8
fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxN
b2RlKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYm
IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJh
Y3RlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVND
SUlMb3dlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0
ZXJuQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVy
bmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgdm9pZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVs
cGVyKCkKICAgICB7CiAjaWZkZWYgSklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQg
KzQxOTYsMTQgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUg
PT0gSklUQ29tcGlsZU1vZGU6Ok1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNp
emUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0
Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOwor
ICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9S
RUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9u
bHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdURk1vdmUobV9ibVZlY3RvcikpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGVNYXRj
aE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnLCAiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQ
X0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAx
Ni1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdURk1vdmUobV9ibVZlY3RvcikpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4
KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lv
biIpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVH
RVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJl
c3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5r
QnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOwor
ICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NP
REUobGlua0J1ZmZlciwgWWFycjE2Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lv
biIpLCBXVEZNb3ZlKG1fYm1WZWN0b3IpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9mYWls
dXJlUmVhc29uKQogICAgICAgICAgICAgY29kZUJsb2NrLnNldEZhbGxCYWNrV2l0aEZhaWx1cmVS
ZWFzb24oKm1fZmFpbHVyZVJlYXNvbik7CkBAIC00MTk3LDYgKzQ0NDEsOCBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKIAogICAgIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZXhwcmVzc2VkIGFzIGEgbGlu
ZWFyIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuCiAgICAgVmVjdG9yPFlhcnJPcCwgMTI4PiBtX29w
czsKKyAgICBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVJbmZvPiwgND4gbV9ibUluZm9zOwor
ICAgIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiBtX2JtVmVjdG9yOwog
CiAgICAgLy8gVGhpcyByZWNvcmRzIHRoZSBjdXJyZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBs
aWVkIGR1ZSB0byB0aGUgY3VycmVudAogICAgIC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJl
IG5lc3RlZCB3aXRoaW4uIEUuZy4gd2hlbiBtYXRjaGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuaAppbmRleCBlZjM5YzhiNDA0NTJmZDg1YWFiZTNlMDcyOTY1YzBkZjNkYmIw
OWY1Li5iOWU1MDE0Mjc3Nzg3OGJhNzQ0NWQ5OGY2OWVhMzIyZjFlMTIwYTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxOSB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw5IEBACiAjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIK
KyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01Niw2
ICs2MCw0OCBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAgICBF
eGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBCb3llck1vb3Jl
Qml0bWFwIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlQml0bWFwKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1hcFNpemUgPSAxMjg7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBNYXNrID0gMTI4IC0gMTsKKyAgICB1c2lu
ZyBNYXAgPSBCaXRtYXA8bWFwU2l6ZT47CisKKyAgICBCb3llck1vb3JlQml0bWFwKCkgPSBkZWZh
dWx0OworCisgICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9Cisg
ICAgY29uc3QgTWFwJiBtYXAoKSBjb25zdCB7IHJldHVybiBtX21hcDsgfQorICAgIGJvb2wgaXNN
YXNrRWZmZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tFZmZlY3RpdmU7IH0KKworICAg
IHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9z
aXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOworICAgICAgICBpZiAocG9zaXRpb24gIT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCisgICAgICAgICAgICBtX2lzTWFza0VmZmVj
dGl2ZSA9IHRydWU7CisgICAgICAgIGlmICghbV9tYXAuZ2V0KHBvc2l0aW9uKSkgeworICAgICAg
ICAgICAgbV9tYXAuc2V0KHBvc2l0aW9uKTsKKyAgICAgICAgICAgICsrbV9jb3VudDsKKyAgICAg
ICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBNYXAgbV9tYXAgeyB9OworICAgIHVuc2lnbmVk
IG1fY291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzTWFza0VmZmVjdGl2ZSB7IGZhbHNlIH07Cit9
OworCitjbGFzcyBCb3llck1vb3JlQnl0ZVZlY3RvciA6IHB1YmxpYyBzdGQ6OmFycmF5PHVpbnQ4
X3QsIEJveWVyTW9vcmVCaXRtYXA6Om1hcFNpemU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBCb3llck1vb3JlQnl0ZVZlY3Rvcihjb25zdCBCb3llck1vb3Jl
Qml0bWFwOjpNYXAmIG1hcCkKKyAgICB7CisgICAgICAgIGZpbGwoMCk7CisgICAgICAgIG1hcC5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAgICAgKCp0aGlzKVtp
bmRleF0gPSAxOworICAgICAgICB9KTsKKyAgICB9Cit9OworCiAjaWYgQ1BVKEFSTTY0RSkKIGV4
dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCog
aW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRj
aGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7
CiBleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwpAQCAtNzgsMTMg
KzEyNCwzNyBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKIAogICAgIGJvb2wgaGFzOEJpdENvZGUo
KSB7IHJldHVybiBtX3JlZjguc2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGUoKSB7IHJl
dHVybiBtX3JlZjE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiByZWYpIHsgbV9yZWY4ID0gcmVmOyB9Ci0gICAgdm9p
ZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVm
KSB7IG1fcmVmMTYgPSByZWY7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxZYXJyOEJpdFB0clRhZz4gcmVmLCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVC
eXRlVmVjdG9yPj4mJiBtYXBzKQorICAgIHsKKyAgICAgICAgbV9yZWY4ID0gcmVmOworICAgICAg
ICBtX21hcHMucmVzZXJ2ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICAgICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5k
ZXhdKSk7CisgICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyMTZCaXRQdHJUYWc+IHJlZiwgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZl
Y3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fcmVmMTYgPSByZWY7CisgICAgICAgIG1f
bWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgp
CisgICAgICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0p
KTsKKyAgICB9CiAKICAgICBib29sIGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9t
YXRjaE9ubHk4LnNpemUoKTsgfQogICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkgeyBy
ZXR1cm4gbV9tYXRjaE9ubHkxNi5zaXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hP
bmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hP
bmx5KSB7IG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2Rl
TWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+
IG1hdGNoT25seSkgeyBtX21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OyB9CisgICAgdm9pZCBzZXQ4
Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQ
dHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+
JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsKKyAgICAg
ICAgbV9tYXBzLnJlc2VydmVDYXBhY2l0eShtX21hcHMuc2l6ZSgpICsgbWFwcy5zaXplKCkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtYXBzLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgICAgIG1fbWFwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBzW2lu
ZGV4XSkpOworICAgIH0KKyAgICB2b2lkIHNldDE2Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtYXRjaE9ubHksIFZlY3RvcjxV
bmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiYmIG1hcHMpCisgICAgeworICAgICAgICBt
X21hdGNoT25seTE2ID0gbWF0Y2hPbmx5OworICAgICAgICBtX21hcHMucmVzZXJ2ZUNhcGFjaXR5
KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbV9tYXBz
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQogCiAgICAgYm9v
bCB1c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSB7IHJldHVybiBtX3VzZXNQYXR0ZXJuQ29udGV4
dEJ1ZmZlcjsgfQogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQpA
QCAtMTcwLDIwICsyNDAsMzIgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgICAgIHJldHVy
biBtX3JlZjguc2l6ZSgpICsgbV9yZWYxNi5zaXplKCkgKyBtX21hdGNoT25seTguc2l6ZSgpICsg
bV9tYXRjaE9ubHkxNi5zaXplKCk7CiAgICAgfQogCisgICAgLy8gQ29tcGlsZSBhbmQgQ2xlYXIg
YXJlIGd1YXJkZWQgYnkgUmVnRXhwJ3MgY2VsbC1sb2NrLiBTbyB0aGVzZSBvcGVyYXRpb25zIHdv
cmsgYXRvbWljYWxseS4KICAgICB2b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIG1fcmVmOCA9
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9yZWYx
NiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+KCk7CiAgICAgICAgIG1f
bWF0Y2hPbmx5OCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRh
Zz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+KCk7CisgICAgICAgIG1fbWFwcy5jbGVhcigpOwogICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCisgICAgY29uc3QgdWlu
dDhfdCogZmluZFNhbWVWZWN0b3IodW5zaWduZWQgaW5kZXgsIEJveWVyTW9vcmVCeXRlVmVjdG9y
JiB2ZWN0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaW5kZXggPCBtX21hcHMuc2l6ZSgp
KSB7CisgICAgICAgICAgICBpZiAobV9tYXBzW2luZGV4XS5nZXQoKSA9PSB2ZWN0b3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fbWFwc1tpbmRleF0tPmRhdGEoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPiBtX3JlZjg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPFlhcnIxNkJpdFB0clRhZz4gbV9yZWYxNjsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPiBtX21hdGNoT25seTE2OworICAgIFZl
Y3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiBtX21hcHM7CiAgICAgYm9vbCBt
X3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlciB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxK
SVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQml0VmVjdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKaW5k
ZXggM2NlNjhmYzFiZDdkMmQwZmYyOWZiNmVjZTAwYmIxYTVkZmIxMzdiNy4uMzkxNjEyMTE2ZWY4
NjZjYjUwNTQ1YzM3NzQyNTJiYThlZTQ1MDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Qml0VmVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCkBAIC0yNjIs
MTIgKzI2Miw4IEBAIHVpbnRwdHJfdCBCaXRWZWN0b3I6Omhhc2hTbG93Q2FzZSgpIGNvbnN0CiAK
IHZvaWQgQml0VmVjdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZ2V0KGkpKQot
ICAgICAgICAgICAgb3V0LnByaW50ZigiMSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBv
dXQucHJpbnRmKCItIik7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgp
OyArK2kpCisgICAgICAgIG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIGIvU291
cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggOGYxMzI3YTQ3NDEyZmQyYWRkNGVhZjU5YjFmNWFl
ZTM2ZGZmMWE4Ni4uYzUwMTEwYjVkZWExM2NlNGJhNWJhZGEzZTQ5ZWI3MWY1YzFkMjdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0
bWFwLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC0xMzAsNiAr
MTMxLDggQEAgY2xhc3MgQml0bWFwIGZpbmFsIHsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dDsKIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBl
KSAqIDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3b3JkcyA9IChiaXRtYXBTaXpl
ICsgd29yZFNpemUgLSAxKSAvIHdvcmRTaXplOwpAQCAtNTA3LDYgKzUxMCwxMyBAQCBpbmxpbmUg
dW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpCaXRtYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmlu
ZGV4IGM0ZWUzZGMxMjg3NGYxOThlMWJmNDUzZjIzN2E5OWNmNDc2NzZkZTQuLjkzNWQwNmM2Njlk
ZDRjZWU4MTdlMGUzOWMyYzY5ZDljMzRkZWEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC00Niw5ICs0
Niw5IEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4gcHRyKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlx
dWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCiB7Ci0g
ICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqcHRyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIFVuaXF1
ZVJlZjxUPihXVEZNb3ZlKHB0cikpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjcs
NiArNjcsOSBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAg
IH0KIAorICAgIFQqIHB0cigpIFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVy
biBtX3JlZi5nZXQoKTsgfQorICAgIFQqIHB0cigpIGNvbnN0IFJFVFVSTlNfTk9OTlVMTCB7IEFT
U0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorCiAgICAgVCYgZ2V0KCkgeyBBU1NF
UlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBB
U1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CiAKQEAgLTgzLDkgKzg2LDE1IEBAIGNsYXNz
IFVuaXF1ZVJlZiB7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4g
QXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2ND
aGVjayhBcmdzJiYuLi4pOwotICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8
VT4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVm
RnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+JiYpOwogICAgIHRlbXBsYXRl
PGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBVbmlxdWVSZWY7CiAKKyAgICBleHBsaWNpdCBVbmlxdWVS
ZWYoc3RkOjp1bmlxdWVfcHRyPFQ+JiYgcHRyKQorICAgICAgICA6IG1fcmVmKFdURk1vdmUocHRy
KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOwogfTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkYWFjZjk3Zjk1OGM4NWRjOWY1MmQ0YzJlMmUyOGUzMjdi
ODg4MWVkLi43MTM2ZTdmMzJmZGMzNjU4Njc3YTRlNDMwZTQ4ZTMxNGRhYjViNWNlIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDIxLTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgcGVyZm9ybSBCb3llck1vb3JlIHNlYXJjaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAt
LWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1y
ZXVzZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3Jl
Z2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLW1h
cC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisKIDIwMjEtMDctMjUgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1l
bnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIsYXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bv
c2FsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1y
ZWdleHAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAu
anMKaW5kZXggYWYzYTQyNDU5N2UxNzM5ZDJjZGEzZDAzM2NkMjU5NGRkMjQ3OGU2MS4uNGYzMGFl
ZTg4NzM1NWEzN2YyMWU4NjVlNmYxNDc3ZDE4MmI1NzFmYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzCisrKyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcwpAQCAtODQyMDksNyArODQyMDks
OCBAQCBmdW5jdGlvbiB0ZXN0KHJlZ0V4cHMsIHN0cmluZ3MpIHsKICAgICByZWdFeHAkMTYubGFz
dEluZGV4ID0gMDsKICAgICByZXN1bHRzID0gcmVnRXhwJDE2LmV4ZWMoc3RyaW5nJDIxNSk7CiB9
Ci1ub0lubGluZSh0ZXN0KTsKK2lmICh0eXBlb2Ygbm9JbmxpbmUgIT09ICJ1bmRlZmluZWQiKQor
ICAgIG5vSW5saW5lKHRlc3QpOwogcmVnRXhwcy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xkaW5n
L2dpKTsKIHN0cmluZ3MucHVzaCgvYXZvaWQgY29uc3RhbnQgZm9sZGluZy9naSk7CiBmb3IgKGxl
dCBpID0gMDsgaSA8IDIwOyArK2kpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAt
LWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0t
c2VhcmNoLWxvbmctY2hhcmFjdGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzM2UwZDY4MGQ2YTFlNzE0MDE1
YzVhMDVmMjRmYjY3OTIxYzU4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9y
ZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJhY3Rlci5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKwordmFyIHJlZ2V4cCA9IC9hYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFi
YmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUy
OyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZm
ZiIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJi
YmFhYWFiYmJiYWFhYWJiYmJhYWJiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2Nk
ZGRkYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJi
YmJhYWFhYmJiYmZmZmZmIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4
dCwgImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJhYWFhYmJiYmFh
YWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWJiYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJi
YmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkIik7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29u
dGV4dCwgImZmZmZmIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGZmZmZmZmZmZmZmZmZm
ZmZmZmZmZmZmIiksIGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4
cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFy
Y2gtbG9uZy1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVjZmFmNmYyYWQ1YzJlZjZmNDljOWI3ZDdiYmJl
MjM2NDA2NzAyYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0t
c2VhcmNoLWxvbmctbWFwLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhw
ID0gL2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkL2k7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVz
dCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2Nj
Y2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZmZiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAu
bGVmdENvbnRleHQsICJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmciKTsKKyAgICBzaG91bGRC
ZShSZWdFeHAucmlnaHRDb250ZXh0LCAiZmZmZmYiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVz
dCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2Nj
Y2RkZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jl
Z2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzMWVmMmZhNThjNzhmNDBlMjYx
MTMwYmIzNWFkNTQ2MWExOGYzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Jl
Z2V4cC1iaXR2ZWN0b3ItcmV1c2UuanMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgcmVn
ZXhwID0gL3NjcmlwdC87Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hv
dWxkQmUoL3NjcmlwdC8udGVzdCgidGVzdHRlc3RzY3JpcHQiKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoUmVnRXhwLmxlZnRDb250ZXh0LCAidGVzdHRlc3QiKTsKKyAgICBzaG91bGRCZSgvc2NyaXB0
Ly50ZXN0KCR2bS5tYWtlMTZCaXRTdHJpbmdJZlBvc3NpYmxlKCJ0ZXN0dGVzdHNjcmlwdCIpKSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAidGVzdHRlc3QiKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNo
YXJhY3Rlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNo
YXJhY3Rlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmE2NzRmOTIzN2EwYTQyOTNkNzFlMGRkZjJjOTlhYjVm
OWE2OGIwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2Np
aS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIg
cmVnZXhwID0gL+S7iuaXpS9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7Cisg
ICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaX
peOBr+OBvuOBoOecoOOBhOOAgiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENv
bnRleHQsICLmmKjml6XpgYXjgY/jgavlr53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdF
eHAucmlnaHRDb250ZXh0LCAi44Gv44G+44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVn
ZXhwLnRlc3QoIkJlY2F1c2UgSSB3ZW50IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGls
bCBzbGVlcHkiKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhw
LW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1h
c2NpaS1ibS1zZWFyY2gtbWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMmE4ZWVlMTFhM2UzOTEwYzE2YzNi
MTAwNTkwZTkzZTMxNjFkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdl
eHAtbm9uLWFzY2lpLWJtLXNlYXJjaC1tYXAuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K3ZhciByZWdleHAgPSAv5LuK5pelfOaYjuaXpS9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
MjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIuaYqOaXpemBheOBj+OBq+WvneOB
n+OBruOBp+S7iuaXpeOBr+OBvuOBoOecoOOBhOOAgiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShS
ZWdFeHAubGVmdENvbnRleHQsICLmmKjml6XpgYXjgY/jgavlr53jgZ/jga7jgaciKTsKKyAgICBz
aG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi44Gv44G+44Gg55yg44GE44CCIik7CisgICAg
c2hvdWxkQmUocmVnZXhwLnRlc3QoIkJlY2F1c2UgSSB3ZW50IHRvIGJlZCBsYXRlIGxhc3Qgbmln
aHQsIEknbSBzdGlsbCBzbGVlcHkiKSwgZmFsc2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434486</attachid>
            <date>2021-07-28 18:51:22 -0700</date>
            <delta_ts>2021-07-28 18:54:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728185121.patch</filename>
            <type>text/plain</type>
            <size>48931</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi42ZmM5YjlhODRkOTE3NDE3
OGIyMTE3N2YyYjFlZjQwNTdmZmExMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQm95ZXJNb29yZSBzZWFyY2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZW1pdHMgc2tpcHBpbmcgZmFzdC1wYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgYm9keSBhbHRl
cm5hdGl2ZXMgd2l0aCBhIGxhcmdlIHN0cmlkZS4gU28gd2UgY2FuIHF1aWNrbHkgZGlzY2FyZCB1
bnJlbGF0ZWQgY2hhcmFjdGVycworICAgICAgICBhbmQgYXR0ZW1wdCB0byBmaW5kIHBvc3NpYmx5
IHJlbGF0ZWQgc2VxdWVuY2UgaW4gdGhlIGxvbmcgc2VxdWVuY2UuIFRoZSBtZXRob2QgaXMgZGVy
aXZlZCBmcm9tIFY4J3MgaW1wbGVtZW50YXRpb24gKHdpdGggc29tZSBleHRlbnNpb25zKS4KKwor
ICAgICAgICBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2Ug
Y2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQs
IGUsIGZ9LgorICAgICAgICBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hh
cmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVu
ZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xh
c3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJj
fGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICBhZ2FpbnN0IHthLCBi
LCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1hdGNo
LgorCisgICAgICAgIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlm
dGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNo
IGRvZXMgbm90IGhhdmUKKyAgICAgICAgbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAv
W2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5k
IGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIElmIGl0IGRvZXMgbm90
IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFh
YSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16
XSIKKyAgICAgICAgc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBh
bG1vc3QgYWx3YXlzIG1hdGNoLgorCisgICAgICAgIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUg
Y2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJp
c3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIHRo
YXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAg
ICAgIE1pY3JvYmVuY2htYXJrIHdoaWNoIHBlcmZvcm1zIFJlZ0V4cCBvcHMgaW4gU3BlZWRvbWV0
ZXIyL2pRdWVyeS1Ub2RvTVZDIHNob3dzIDI1JSBpbXByb3ZlbWVudC4KKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAg
IFBhdGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNzIzLjk3
MzkrLTEuMzk5NyAgICAgXiAgICA1NzkuMTY5OCstMS4yNTA1ICAgICAgICBeIGRlZmluaXRlbHkg
MS4yNTAweCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVl
cnktVG9kb01WQyBieSAzJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAg
ICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBG
YWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg
ICAgICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy4zNjU2
MjUgICB8MTIzLjQ1NjI1MCAgIHwxLjAwMDczNSAgfCAwLjgwNDA3NyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAg
ICAgICAgICAgICAgICAgICAgICAgfDI2LjkxMjUwMCAgICB8MjYuOTI1MDAwICAgIHwxLjAwMDQ2
NCAgfCAwLjk2OTYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy41
NDA2MjUgICB8MTI3LjU2MjUwMCAgIHwxLjAwMDE3MiAgfCAwLjk2MDQ3NCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgfDUwLjYwNjI1MCAgICB8NTAuNTE4NzUwICAgIHwwLjk5
ODI3MSAgfCAwLjY3MDMxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAxODc1MCAgICB8MjAuODUwMDAwICAgIHwwLjk5MTk3MSAgfCAwLjU2MzgxOCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDEzNi45NDM3NTAgICB8MTM3LjI3MTg3NSAgIHwx
LjAwMjM5NiAgfCAwLjUzMTUxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAg
fDY4LjUyMTg3NSAgICB8NjguNTkzNzUwICAgIHwxLjAwMTA0OSAgfCAwLjcwMTM3NiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5v
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjU1OTM3NSAgICB8NjUuODAzMTI1ICAg
IHwxLjAwMzcxOCAgfCAwLjQxNDQxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAg
ICAgfDc3LjI4NDM3NSAgICB8NzYuNzE1NjI1ICAgIHwwLjk5MjY0MSAgfCAwLjIxOTg3MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1
bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjcyNTAwMCAgICB8NDAuMzE4NzUw
ICAgIHwwLjk5MDAyNSAgfCAwLjI4MTIxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgfDU1LjIwOTM3NSAgICB8NTQuNzE1NjI1ICAgIHwwLjk5MTA1NyAgfCAwLjA1NjkyMSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBq
UXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI2Ni4zOTY4NzUgICB8MjU4LjQ3
MTg3NSAgIHwwLjk3MDI1MSAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAg
ICAgICAgICAgfDM0MS41NTAwMDAgICB8MzQxLjg1NjI1MCAgIHwxLjAwMDg5NyAgfCAwLjYxODE0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4LjczMTI1MCAgICB8ODgu
ODcxODc1ICAgIHwxLjAwMTU4NSAgfCAwLjUxMjQwNyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgfDE1MC4zNDA2MjUgICB8MTUwLjA2NTYyNSAgIHwwLjk5ODE3MSAgfCAwLjQx
Mjk0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgfCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1LjM5MDYyNSAgICB8
NjUuMzYyNTAwICAgIHwwLjk5OTU3MCAgfCAwLjgzNDc2MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgYSBtZWFuID0gMjQ1Ljk2OTk3CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODYzNjYK
KyAgICAgICAgICAgIHBWYWx1ZSA9IDAuMDA2MTQ0ODQwMgorICAgICAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDA0IHRpbWVzIGJldHRlcgorICAgICAg
ICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCb3llck1vb3JlSW5mbzo6Qm95ZXJNb29yZUluZm8pOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlSW5mbzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJN
b29yZUluZm86OnNldCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjppbmRl
eCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRJbmRleCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qm95ZXJNb29yZUluZm86OmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCBjb25zdCk6CisgICAgICAgICog
eWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmNv
dW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6bWFwIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6aXNNYXNrRWZmZWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkKToK
KyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJ5dGVWZWN0b3I6OkJveWVyTW9vcmVCeXRl
VmVjdG9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGUp
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZU1hdGNoT25seSk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDE2Qml0Q29kZU1hdGNoT25seSk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmNsZWFyKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZmluZFNhbWVWZWN0b3IgY29uc3QpOgorCiAyMDIxLTA3
LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
bG9hZC9zdG9yZSB3aXRoIEJhc2VJbmRleCBpcyBpbmVmZmljaWVudCBpbiBBUk02NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBk
NTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgyLi41MDRjNGU4ODNkN2ZhZGFh
MjA4ZDYwMmI3NTA4ZTE3YWRmNWMxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA3LTI4
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFy
ciBzaG91bGQgcGVyZm9ybSBCb3llck1vb3JlIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAg
KFdURjo6Qml0VmVjdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogd3RmL1VuaXF1
ZVJlZi5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIp
OgorICAgICAgICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBz
cGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggM2RmY2M5MTIwOWQ0NTg5OWRmZTM5N2MxMjI0ZTE4OWFj
ZGU5MWU3OC4uMWI5YzEwMTg3NjAxYjM3ZDFiZjExNjIzMDE5ZGZhNjc4MzEyMTI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00NTIsNiArNDUy
LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KFVuc2lnbmVk
LCBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZywgMiwgTm9ybWFsLCAiTnVtYmVyIG9m
IHByb3RvdHlwZSBwcm9wZXJ0eSBoaXRzIGJlZm9yZSBjYWNoaW5nIGEgcHJvdG90eXBlIGluIHRo
ZSBMTEludC4gQSBjb3VudCBvZiAwIG1lYW5zIG5ldmVyIGNhY2hlLiIpIFwKICAgICBcCiAgICAg
dihCb29sLCBkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYoQm9vbCwgdmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAppbmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi5jYWQ5
OTMxMDZmNDAyMDRjNmYzMjMzMzExY2I2ODQxM2Y2MTJmZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDEyNiBAQAogI2lu
Y2x1ZGUgIllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0
SG9sZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAKICNpZiBFTkFCTEUoWUFS
Ul9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CituYW1lc3BhY2UgWWFy
ckpJVEludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdl
dF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRlcik7CiAjZW5kaWYK
IAorY2xhc3MgQm95ZXJNb29yZUluZm8geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVy
TW9vcmVJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlSW5mbyk7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAzMjsK
KworICAgIGV4cGxpY2l0IEJveWVyTW9vcmVJbmZvKHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPmxlbmd0
aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2lu
ZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGluZGV4OworICAgIH0KKworICAgIHN0YXRpYyBVbmlx
dWVSZWY8Qm95ZXJNb29yZUluZm8+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCb3llck1vb3JlSW5mbz4obGVuZ3RoKTsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmlu
ZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIHN0
ZDo6dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBjcmVhdGVDYW5kaWRhdGVCaXRt
YXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RkOjp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1
ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0
b3I8Qm95ZXJNb29yZUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1faW5kZXgg
eyAwIH07Cit9OworCitzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBCb3llck1v
b3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRp
ZGF0ZXNMaW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNp
Z25lZCBiZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hp
bGUgKGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVt
YmVyT2ZDYW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAo
aW5kZXggPT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQg
YmVnaW4gPSBpbmRleDsKKyAgICAgICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07Cisg
ICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hhcmFjdGVyc1tpbmRleF0uY291
bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsgKytpbmRleCkKKyAgICAgICAgICAgIG1h
cC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKworICAgICAgICAvLyBJZiBtYXAg
aGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBz
aW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5ncy4KKyAgICAgICAgLy8gQW5kIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMg
aGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxsIGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0
IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFjdGVyIHNpbmNlIGUuZy4gJ2UnIHNob3Vs
ZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5j
eSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0Y2hpbmdQcm9iYWJpbGl0eSA9IEJveWVy
TW9vcmVCaXRtYXA6Om1hcFNpemUgLSBmcmVxdWVuY3k7CisgICAgICAgIGludCBwb2ludCA9IChp
bmRleCAtIGJlZ2luKSAqIG1hdGNoaW5nUHJvYmFiaWxpdHk7CisgICAgICAgIGlmIChwb2ludCA+
IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gcG9pbnQ7CisgICAg
ICAgICAgICBiZWdpblJlc3VsdCA9IGJlZ2luOworICAgICAgICAgICAgZW5kUmVzdWx0ID0gaW5k
ZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0UG9p
bnQsIGJlZ2luUmVzdWx0LCBlbmRSZXN1bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1
cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD4+IEJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0
ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdlciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJv
Zml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdpbGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRv
byBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBsaW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3Rl
ciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0Cisg
ICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBzdGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBl
bmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9yZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAg
Ly8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVu
c2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25lZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25l
ZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlkYXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0g
MikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwgbmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAgICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2Vz
dFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAg
ICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAgICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiZWdpbiwgZW5kIH07Cit9CisKK3N0ZDo6
dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBCb3llck1vb3JlSW5mbzo6Y3JlYXRl
Q2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7Cisg
ICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgYm9vbCBpc01hc2tFZmZlY3Rp
dmUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gYmVnaW47IGluZGV4IDwgZW5k
OyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIGJtQml0bWFwID0gbV9jaGFyYWN0ZXJzW2luZGV4
XTsKKyAgICAgICAgbWFwLm1lcmdlKGJtQml0bWFwLm1hcCgpKTsKKyAgICAgICAgaXNNYXNrRWZm
ZWN0aXZlIHw9IGJtQml0bWFwLmlzTWFza0VmZmVjdGl2ZSgpOworICAgIH0KKyAgICByZXR1cm4g
c3RkOjp0dXBsZSB7IG1hcCwgaXNNYXNrRWZmZWN0aXZlIH07Cit9CisKIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTQwLDggQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVy
bidzIGZyYW1lIHRvIHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFj
ayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRk
cmVzczsKKworICAgICAgICBCb3llck1vb3JlSW5mbyogbV9ibUluZm87CiAgICAgfTsKIAogICAg
IC8vIEJhY2t0cmFja2luZ1N0YXRlCkBAIC0xNDEwLDcgKzE1MjIsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgYWxsQ2hhcmFjdGVycyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGN1cnJlbnRDaGFyYWN0ZXIpIDw8IHNoaWZ0QW1vdW50KTsKIAotICAgICAgICAgICAgaWYgKCht
X3BhdHRlcm4uaWdub3JlQ2FzZSgpKSAmJiAoaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIp
KSkKKyAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBo
YShjdXJyZW50Q2hhcmFjdGVyKSkKICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlTWFzayB8PSAz
MlVMTCA8PCBzaGlmdEFtb3VudDsKICAgICAgICAgfQogCkBAIC0yMjU2LDExICsyMzY4LDcyIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhl
YWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJs
ZQogICAgICAgICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlz
IHByb2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplKSk7CisgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplOworCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVy
IHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAg
ICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUu
CiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAg
ICAgICAgICAgICAvLyBFbWl0IGZhc3Qgc2tpcCBwYXRoIHdpdGggc3RyaWRlIGlmIHdlIGhhdmUg
Qm95ZXJNb29yZUluZm8uCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVD
aGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZElu
ZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8
PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gW21hcCwgaXNNYXNrRWZmZWN0aXZlXSA9IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRh
dGVCaXRtYXAoYmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbWFwQ291bnQgPSBtYXAuY291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGNhbmRpYXRlIGNoYXJhY3RlcnMgYXJlIDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0
dGVyIHRoYW4gdXNpbmcgdmVjdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENv
dW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIyID0gMHhmZjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPT0gMikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIyID0gbWFwLmZpbmRCaXQoY2hhcmFjdGVyMSAr
IDEsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyMiAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgMS1vci0yIGNoYXJhY3Rl
cnMgbG9va2FoZWFkIGNoYXJhY3RlcjooMHgiLCBoZXgoY2hhcmFjdGVyMSksICIpLGNoYXJhY3Rl
cjI6KCIsIGhleChjaGFyYWN0ZXIyKSwgIiksaXNNYXNrRWZmZWN0aXZlOigiLCBpc01hc2tFZmZl
Y3RpdmUsIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsg
MSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tFZmZlY3Rp
dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihC
b3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
YXBDb3VudCA9PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFw
cGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHZlY3RvciA9IG1ha2VV
bmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+KG1hcCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCks
ICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIs
IGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBvaW50ZXIgPSB2ZWN0b3ItPmRhdGEoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byogZXhpc3RpbmdQb2ludGVyID0gbV9j
b2RlQmxvY2suZmluZFNhbWVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIHZlY3Rvci5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBleGlzdGluZ1Bv
aW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBy
ZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmQzMihUcnVzdGVkSW1tMzIoQm95ZXJNb29yZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNo
VGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFi
bGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90IGZp
eGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIGluZGV4LCByZWdUMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVnVDApOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRN
YXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZl
TmV4dDoKQEAgLTI3ODAsNiArMjk1Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgWWFyck9w
JiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5k
T3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQpOwogCiAgICAgICAgICAg
ICAgICAgWWFyck9wKiBiZWdpbk9wID0gJm9wOwogICAgICAgICAgICAgICAgIHdoaWxlIChiZWdp
bk9wLT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CkBAIC0yNzk3
LDcgKzI5NzEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRo
cm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVu
ZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1f
b3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChtX3BhdHRlcm4uc3RpY2t5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEl0IGlzIGEgc3RpY2t5IHBhdHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwg
anVtcCB0byB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdT
dGF0ZS50YWtlQmFja3RyYWNrc1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVy
ZXMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2Jv
ZHktPm1faGFzRml4ZWRTaXplCkBAIC0yODEzLDQxICsyOTg3LDQxIEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJvdW5kIHRvIHRoZSBmaXJzdCBhbHRlcm5h
dGl2ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0
aGlzKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFu
ZCByZXRyeSBmb3IgYSBzdGlja3kgcGF0dGVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9wYXR0ZXJuLnN0aWNreSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGlu
ZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+
bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBhZHZhbmNlIGFu
ZCByZXRyeSBmb3IgYSBzdGlja3kgcGF0dGVybi4gQW5kIGl0IGlzIGFscmVhZHkgaGFuZGxlZCBi
ZWZvcmUgdGhpcyBicmFuY2guCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0
dGVybi5zdGlja3koKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0
ZXJuIHNpemUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNl
IGlmIHdlIG1hdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9i
b2R5LT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVn
VDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENoZWNrIHdoZXRoZXIgdGhlIGxh
c3QgYWx0ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8pLgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA+IGJlZ2luT3AtPm1f
YWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0aW9uLiBJ
ZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYWxyZWFkeSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBk
ZWNyZW1lbnQgYXMgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGRlbHRhID0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBiZWdpbk9wLT5t
X2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoZGVsdGEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZGVsdGEgIT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKElt
bTMyKGRlbHRhIC0gMSksIGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
anVtcChiZWdpbk9wLT5tX3JlZW50cnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBh
bHRlcm5hdGl2ZSBoYXMgbWluaW11bSBzaXplIDB4RkZGRkZGRkZ1LCB0aGVuIHRoZXJlIGNhbm5v
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBzdWZmaWNlbnQgaW5wdXQg
YXZhaWxhYmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBqdXN0IGZhbGwgdGhyb3VnaC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdpbk9wLT5tX2FsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAweEZGRkZGRkZGdSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBp
bnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0LgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnB1dCgpLmxpbmtUbyhi
ZWdpbk9wLT5tX3JlZW50cnksIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBjb2RlIHRvIGxvb3AuIENo
ZWNrIHdoZXRoZXIgdGhlIGxhc3QgYWx0ZXJuYXRpdmUgaXMgbG9uZ2VyIHRoYW4gdGhlCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCAoZS5nLiAvYXx4eS8gb3IgL2F8eHl6LykuCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBi
ZWdpbk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBsb29wLCBhbmQgaW5jcmVtZW50IGlucHV0IHBvc2l0
aW9uLiBJZiB0aGUgZGVsdGEgaXMgMSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhbHJlYWR5IGNvcnJlY3RseSBpbmNyZW1lbnRlZCwgaWYgbW9yZSB0aGFuIG9uZSB0aGVu
IGRlY3JlbWVudCBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBkZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYmVnaW5PcC0+bV9h
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoZGVsdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAx
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAtIDEp
LCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLT5tX3Jl
ZW50cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUgaGFzIG1pbmltdW0gc2l6
ZSAweEZGRkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBiZSBzdWZmaWNlbnQgaW5wdXQgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aGlzLCBzbyBq
dXN0IGZhbGwgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBk
ZWx0YSA9IGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSBhbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEg
IT0gMHhGRkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBjaGVjayBpbnB1dCBiZWNhdXNlIHdlIGFyZSBpbmNyZW1lbnRpbmcgdGhlIGlucHV0
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihkZWx0YSArIDEp
LCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQoKS5s
aW5rVG8oYmVnaW5PcC0+bV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTM2MDcsNiArMzc4MSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAoYWx0ZXJu
YXRpdmVzLnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpIHsKICAgICAg
ICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVn
aW4pKTsKICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsK
KyAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXpl
KCkgLSAxOwpAQCAtMzY0Myw2ICszODE4LDIxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBz
aXplX3QgcmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKICAgICAgICAgbV9vcHMuYXBwZW5kKFlh
cnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5s
YXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgIG1fb3BzLmxhc3QoKS5tX2Jt
SW5mbyA9IG51bGxwdHI7CisgICAgICAgIC8vIENvbGxlY3QgQm95ZXJNb29yZUluZm8gaWYgaXQg
aXMgcG9zc2libGUgYW5kIHByb2ZpdGFibGUuIEJveWVyTW9vcmVJbmZvIHdpbGwgYmUgdXNlZCB0
byBlbWl0IGZhc3Qgc2tpcCBwYXRoIHdpdGggbGFyZ2Ugc3RyaWRlCisgICAgICAgIC8vIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGJvZHkgYWx0ZXJuYXRpdmVzLgorICAgICAgICAvLyBXZSBkbyBu
b3QgZW1pdCB0aGVzZSBmYXN0IHBhdGggd2hlbiBSZWdFeHAgaGFzIHN0aWNreSBvciB1bmljb2Rl
IGZsYWcuIFN0aWNreSBjYXNlIGRvZXMgbm90IG5lZWQgdGhpcyBzaW5jZQorICAgICAgICAvLyBp
dCBmYWlscyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRvIG1hdGNoIHdpdGggdGhl
IGN1cnJlbnQgb2Zmc2V0LgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCB1bmljb2RlIGZsYWcu
CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlvbi0+
bV9oYXNGaXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNv
ZGUoKSkgeworICAgICAgICAgICAgYXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRl
KHN0ZDo6bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29y
ZUluZm86Om1heExlbmd0aCkpOworICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5m
byhkaXNqdW5jdGlvbiwgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsK
KyAgICAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7Cisg
ICAgICAgICAgICAgICAgYm1JbmZvLT5zZXRJbmRleChtX2JtSW5mb3Muc2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX2JtSW5mb3MuYXBwZW5kKFdURk1vdmUoYm1JbmZvKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKwogICAgICAgICBkbyB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9w
SW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50QWx0ZXJuYXRpdmVJbmRleF0uZ2V0
KCk7CkBAIC0zNjY4LDYgKzM4NTgsNjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIGxhc3RP
cC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQogCisgICAgYm9vbCBjb2xsZWN0Qm95ZXJN
b29yZUluZm8oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgc2l6ZV90IGN1cnJlbnRB
bHRlcm5hdGl2ZUluZGV4LCBCb3llck1vb3JlSW5mbyYgYm1JbmZvKQorICAgIHsKKyAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHNlYXJjaGluZyBwYXR0ZXJuIC9hYmNkZWYvLCB0aGVuIHdlIGNhbiBj
aGVjayB0aGUgNnRoIGNoYXJhY3RlciBhZ2FpbnN0IGEgc2V0IG9mIHthLCBiLCBjLCBkLCBlLCBm
fS4KKyAgICAgICAgLy8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHdlIGNhbiBzaGlmdCA2IGNoYXJh
Y3RlcnMuIFdlIHVzZSB0aGlzIHN0cmF0ZWd5IHNpbmNlIHRoaXMgd2F5IGNhbiBiZSBleHRlbmRl
ZCBlYXNpbHkgdG8gc3VwcG9ydAorICAgICAgICAvLyBkaXNqdW5jdGlvbiwgY2hhcmFjdGVyLWNs
YXNzLCBhbmQgaWdub3JlLWNhc2VzLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgLyg/OmFi
Y3xkZWYpLywgd2UgY2FuIGNoZWNrIDNyZCBjaGFyYWN0ZXIKKyAgICAgICAgLy8gYWdhaW5zdCB7
YSwgYiwgYywgZCwgZSwgZn0gYW5kIHNoaWZ0IDMgY2hhcmFjdGVycyBpZiBpdCBkb2VzIG5vdCBt
YXRjaC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhlbiwgdGhlIGJlc3Qgd2F5IHRvIHBlcmZv
cm0gdGhlIGFib3ZlIHNoaWZ0aW5nIGlzIHRoYXQgZmluZGluZyB0aGUgbG9uZ2VzdCBjaGFyYWN0
ZXIgc2VxdWVuY2Ugd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAgICAvLyBtYW55IGNhbmRpZGF0
ZXMuIEluIHRoZSBjYXNlIG9mIC9bYS16XWFhYWFhYWFbYS16XS8sIHdlIGNhbiBleHRyYWN0ICJh
YWFhYWFhIiBzZXF1ZW5jZSBhbmQgY2hlY2sgOHRoIGNoYXJhY3RlciBhZ2FpbnN0IHthfS4KKyAg
ICAgICAgLy8gSWYgaXQgZG9lcyBub3QgbWF0Y2gsIHRoZW4gd2UgY2FuIHNoaWZ0IDcgY2hhcmFj
dGVycyAobGVuZ3RoIG9mICJhYWFhYWFhIikuIFRoaXMgc2hpZnRpbmcgaXMgYmV0dGVyIHRoYW4g
dXNpbmcgIlthLXpdYWFhYWFhYVthLXpdIgorICAgICAgICAvLyBzZXF1ZW5jZSBhbmQge2Eten0g
c2V0IHNpbmNlIHthLXp9IHNldCB3aWxsIGFsbW9zdCBhbHdheXMgbWF0Y2guCisgICAgICAgIC8v
CisgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFj
aCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBn
b29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVj
dCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAgICAgIEFTU0VSVChkaXNq
dW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAvLyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQg
bG9va2FoZWFkIGZvciBCb3llck1vb3JlIHNlYXJjaC4KKyAgICAgICAgQVNTRVJUKGRpc2p1bmN0
aW9uLT5tX21pbmltdW1TaXplKTsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQg
ZGlzanVuY3Rpb25zIChlLmcuIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLykuCisgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5nLiAvW1xkXXRlc3QvKS4KKyAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLWZpeGVkLXNpemVkIGxvb2thaGVhZCAoZS5nLiAvLiph
YmMvIGFuZCBleHRyYWN0ICJhYmMiIHNlcXVlbmNlKS4KKyAgICAgICAgYXV0byYgYWx0ZXJuYXRp
dmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOworICAgICAgICBmb3IgKDsgY3VycmVu
dEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2N1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjdXJzb3IgPSAwOworICAgICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGFsdGVybmF0aXZlc1tjdXJyZW50
QWx0ZXJuYXRpdmVJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBhbHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkgJiYgY3Vyc29yIDwgYm1J
bmZvLmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRl
cm0gPSBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpbmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNo
ICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpB
c3NlcnRpb25CT0w6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNz
ZXJ0aW9uRU9MOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2Vy
dGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
OjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
OjpCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OkZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBh
dHRlcm5DaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlU
eXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3Vu
dCAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoVTE2X0xF
TkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWly
cykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3Rl
cnMgdGhhdCBoYXZlIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxv
d2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJh
Y3RlciBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3Jl
Q2FzZSgpIHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25p
Y2FsbHlVbmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJSUFs
cGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5zZXQoY3Vyc29yLCB0b0FTQ0lJVXBwZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdG9BU0NJSUxvd2VyKHRl
cm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpOworICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJv
c2UsICJDaGFyYWN0ZXJzIGNvbGxlY3RlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICB2b2lkIGdlbmVyYXRlVHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJIZWxwZXIoKQogICAg
IHsKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwpAQCAtMzk1MiwxNCArNDIwNSwxNCBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21w
aWxlTW9kZTo6TWF0Y2hPbmx5KSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFy
U2l6ZTo6Q2hhcjgpCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hP
bmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRy
VGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RF
KGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCBy
ZWd1bGFyIGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5B
TElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJN
YXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5r
QnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1
bGFyIGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2JtVmVjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCi0gICAgICAg
ICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtC
dWZmZXIsIFlhcnI4Qml0UHRyVGFnLCAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAg
ICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShs
aW5rQnVmZmVyLCBZYXJyOEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBX
VEZNb3ZlKG1fYm1WZWN0b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
b2RlQmxvY2suc2V0MTZCaXRDb2RlKEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlh
cnIxNkJpdFB0clRhZywgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVm
ZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIiksIFdURk1v
dmUobV9ibVZlY3RvcikpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2ZhaWx1cmVSZWFzb24p
CiAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRoRmFpbHVyZVJlYXNvbigqbV9m
YWlsdXJlUmVhc29uKTsKQEAgLTQxOTcsNiArNDQ1MCw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAg
ICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBleHByZXNzZWQgYXMgYSBsaW5lYXIgc2VxdWVu
Y2Ugb2Ygb3BlcmF0aW9ucy4KICAgICBWZWN0b3I8WWFyck9wLCAxMjg+IG1fb3BzOworICAgIFZl
Y3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUluZm8+LCA0PiBtX2JtSW5mb3M7CisgICAgVmVjdG9y
PFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+IG1fYm1WZWN0b3I7CiAKICAgICAvLyBU
aGlzIHJlY29yZHMgdGhlIGN1cnJlbnQgaW5wdXQgb2Zmc2V0IGJlaW5nIGFwcGxpZWQgZHVlIHRv
IHRoZSBjdXJyZW50CiAgICAgLy8gc2V0IG9mIGFsdGVybmF0aXZlcyB3ZSBhcmUgbmVzdGVkIHdp
dGhpbi4gRS5nLiB3aGVuIG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5oCmluZGV4IGVmMzljOGI0MDQ1MmZkODVhYWJlM2UwNzI5NjVjMGRmM2RiYjA5ZjUuLmI5ZTUw
MTQyNzc3ODc4YmE3NDQ1ZDk4ZjY5ZWEzMjJmMWUxMjBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDkgQEAKICNpbmNsdWRlICJWTS5o
IgogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVybi5oIgorI2luY2x1ZGUg
PHd0Zi9CaXRtYXAuaD4KKyNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKICNkZWZpbmUgWUFSUl9DQUxMCiAKQEAgLTU2LDYgKzYwLDQ4IEBA
IGVudW0gY2xhc3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogICAgIEV4ZWN1dGFibGVN
ZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSwKIH07CiAKK2NsYXNzIEJveWVyTW9vcmVCaXRtYXAgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRtYXApOworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEyODsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1hcE1hc2sgPSAxMjggLSAxOworICAgIHVzaW5nIE1hcCA9IEJp
dG1hcDxtYXBTaXplPjsKKworICAgIEJveWVyTW9vcmVCaXRtYXAoKSA9IGRlZmF1bHQ7CisKKyAg
ICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBjb25zdCBN
YXAmIG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwOyB9CisgICAgYm9vbCBpc01hc2tFZmZlY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBtX2lzTWFza0VmZmVjdGl2ZTsgfQorCisgICAgdm9pZCBhZGQo
VUNoYXIzMiBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGNo
YXJhY3RlciAmIG1hcE1hc2s7CisgICAgICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIG1faXNNYXNrRWZmZWN0aXZlID0gdHJ1
ZTsKKyAgICAgICAgaWYgKCFtX21hcC5nZXQocG9zaXRpb24pKSB7CisgICAgICAgICAgICBtX21h
cC5zZXQocG9zaXRpb24pOworICAgICAgICAgICAgKyttX2NvdW50OworICAgICAgICB9CisgICAg
fQorCitwcml2YXRlOgorICAgIE1hcCBtX21hcCB7IH07CisgICAgdW5zaWduZWQgbV9jb3VudCB7
IDAgfTsKKyAgICBib29sIG1faXNNYXNrRWZmZWN0aXZlIHsgZmFsc2UgfTsKK307CisKK2NsYXNz
IEJveWVyTW9vcmVCeXRlVmVjdG9yIDogcHVibGljIHN0ZDo6YXJyYXk8dWludDhfdCwgQm95ZXJN
b29yZUJpdG1hcDo6bWFwU2l6ZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEJveWVyTW9vcmVCeXRlVmVjdG9yKGNvbnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1h
cCYgbWFwKQorICAgIHsKKyAgICAgICAgZmlsbCgwKTsKKyAgICAgICAgbWFwLmZvckVhY2hTZXRC
aXQoWyZdKHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICAoKnRoaXMpW2luZGV4XSA9IDE7
CisgICAgICAgIH0pOworICAgIH0KK307CisKICNpZiBDUFUoQVJNNjRFKQogZXh0ZXJuICJDIiBF
bmNvZGVkTWF0Y2hSZXN1bHQgdm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4
dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGV4dGVybiAi
QyIgdm9pZCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIodm9pZCk7CkBAIC03OCwxMyArMTI0LDM3IEBA
IGNsYXNzIFlhcnJDb2RlQmxvY2sgewogCiAgICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0dXJu
IG1fcmVmOC5zaXplKCk7IH0KICAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1fcmVm
MTYuc2l6ZSgpOyB9Ci0gICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFycjhCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjggPSByZWY7IH0KLSAgICB2b2lkIHNldDE2Qml0
Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiByZWYpIHsgbV9yZWYx
NiA9IHJlZjsgfQorICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlh
cnI4Qml0UHRyVGFnPiByZWYsIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+
PiYmIG1hcHMpCisgICAgeworICAgICAgICBtX3JlZjggPSByZWY7CisgICAgICAgIG1fbWFwcy5y
ZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAg
ICAgICAgICBtX21hcHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAg
ICB9CisgICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJp
dFB0clRhZz4gcmVmLCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBt
YXBzKQorICAgIHsKKyAgICAgICAgbV9yZWYxNiA9IHJlZjsKKyAgICAgICAgbV9tYXBzLnJlc2Vy
dmVDYXBhY2l0eShtX21hcHMuc2l6ZSgpICsgbWFwcy5zaXplKCkpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtYXBzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAg
ICAgIG1fbWFwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBzW2luZGV4XSkpOworICAgIH0K
IAogICAgIGJvb2wgaGFzOEJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21hdGNoT25seTgu
c2l6ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGVNYXRjaE9ubHkoKSB7IHJldHVybiBtX21h
dGNoT25seTE2LnNpemUoKTsgfQotICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPiBtYXRjaE9ubHkpIHsgbV9t
YXRjaE9ubHk4ID0gbWF0Y2hPbmx5OyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGVNYXRjaE9ubHko
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4gbWF0Y2hPbmx5
KSB7IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0KKyAgICB2b2lkIHNldDhCaXRDb2RlTWF0
Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0
Y2hPbmx5LCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQor
ICAgIHsKKyAgICAgICAgbV9tYXRjaE9ubHk4ID0gbWF0Y2hPbmx5OworICAgICAgICBtX21hcHMu
cmVzZXJ2ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICAgICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVjdG9yPFVuaXF1ZVJlZjxC
b3llck1vb3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAgICAgIG1fbWF0Y2hPbmx5
MTYgPSBtYXRjaE9ubHk7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHkobV9tYXBzLnNp
emUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMudW5jaGVja2Vk
QXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29sIHVzZXNQYXR0
ZXJuQ29udGV4dEJ1ZmZlcigpIHsgcmV0dXJuIG1fdXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyOyB9
CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCkBAIC0xNzAsMjAg
KzI0MCwzMiBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIG1fcmVmOC5z
aXplKCkgKyBtX3JlZjE2LnNpemUoKSArIG1fbWF0Y2hPbmx5OC5zaXplKCkgKyBtX21hdGNoT25s
eTE2LnNpemUoKTsKICAgICB9CiAKKyAgICAvLyBDb21waWxlIGFuZCBDbGVhciBhcmUgZ3VhcmRl
ZCBieSBSZWdFeHAncyBjZWxsLWxvY2suIFNvIHRoZXNlIG9wZXJhdGlvbnMgd29yayBhdG9taWNh
bGx5LgogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgbV9yZWY4ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFnPigpOwogICAgICAgICBtX3JlZjE2ID0gTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAg
ICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkx
NkJpdFB0clRhZz4oKTsKKyAgICAgICAgbV9tYXBzLmNsZWFyKCk7CiAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKKyAgICBjb25zdCB1aW50OF90KiBmaW5k
U2FtZVZlY3Rvcih1bnNpZ25lZCBpbmRleCwgQm95ZXJNb29yZUJ5dGVWZWN0b3ImIHZlY3Rvcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA8IG1fbWFwcy5zaXplKCkpIHsKKyAgICAg
ICAgICAgIGlmIChtX21hcHNbaW5kZXhdLmdldCgpID09IHZlY3RvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9tYXBzW2luZGV4XS0+ZGF0YSgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
WWFycjhCaXRQdHJUYWc+IG1fcmVmODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2
Qml0UHRyVGFnPiBtX3JlZjE2OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZz4gbV9tYXRjaE9ubHk4OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZ
YXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1fbWF0Y2hPbmx5MTY7CisgICAgVmVjdG9yPFVuaXF1
ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+IG1fbWFwczsKICAgICBib29sIG1fdXNlc1BhdHRl
cm5Db250ZXh0QnVmZmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEpJVEZhaWx1cmVS
ZWFzb24+IG1fZmFpbHVyZVJlYXNvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9C
aXRWZWN0b3IuY3BwIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAppbmRleCAzY2U2OGZj
MWJkN2QyZDBmZjI5ZmI2ZWNlMDBiYjFhNWRmYjEzN2I3Li4zOTE2MTIxMTZlZjg2NmNiNTA1NDVj
Mzc3NDI1MmJhOGVlNDUwNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKQEAgLTI2MiwxMiArMjYyLDgg
QEAgdWludHB0cl90IEJpdFZlY3Rvcjo6aGFzaFNsb3dDYXNlKCkgY29uc3QKIAogdm9pZCBCaXRW
ZWN0b3I6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChnZXQoaSkpCi0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIxIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dC5wcmludGYo
Ii0iKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKKyAg
ICAgICAgb3V0LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0bWFwLmggYi9Tb3VyY2UvV1RGL3d0
Zi9CaXRtYXAuaAppbmRleCA4ZjEzMjdhNDc0MTJmZDJhZGQ0ZWFmNTliMWY1YWVlMzZkZmYxYTg2
Li5jNTAxMTBiNWRlYTEzY2U0YmE1YmFkYTNlNDllYjcxZjVjMWQyN2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KQEAgLTEzMCw2ICsxMzEsOCBAQCBj
bGFzcyBCaXRtYXAgZmluYWwgewogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgd29yZFNpemUgPSBzaXplb2YoV29yZFR5cGUpICogODsKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdvcmRzID0gKGJpdG1hcFNpemUgKyB3b3JkU2l6
ZSAtIDEpIC8gd29yZFNpemU7CkBAIC01MDcsNiArNTEwLDEzIEBAIGlubGluZSB1bnNpZ25lZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsr
aSkKKyAgICAgICAgb3V0LnByaW50KGdldChpKSA/ICIxIiA6ICItIik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkJpdG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggYzRlZTNk
YzEyODc0ZjE5OGUxYmY0NTNmMjM3YTk5Y2Y0NzY3NmRlNC4uOTM1ZDA2YzY2OWRkNGNlZTgxN2Uw
ZTM5YzJjNjlkOWMzNGRlYTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVm
LmgKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgVW5p
cXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1VbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRy
KHN0ZDo6dW5pcXVlX3B0cjxUPiBwdHIpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZkZyb21O
b25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUPiYmIHB0cikKIHsKLSAgICByZXR1cm4g
VW5pcXVlUmVmPFQ+KCpwdHIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPFQ+KFdU
Rk1vdmUocHRyKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC02Nyw2ICs2Nyw5IEBA
IGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgICAgIEFTU0VSVChtX3JlZik7CiAgICAgfQogCisgICAg
VCogcHRyKCkgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdl
dCgpOyB9CisgICAgVCogcHRyKCkgY29uc3QgUkVUVVJOU19OT05OVUxMIHsgQVNTRVJUKG1fcmVm
KTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKICAgICBUJiBnZXQoKSB7IEFTU0VSVChtX3JlZik7
IHJldHVybiAqbV9yZWY7IH0KICAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IEFTU0VSVChtX3Jl
Zik7IHJldHVybiAqbV9yZWY7IH0KIApAQCAtODMsOSArODYsMTUgQEAgY2xhc3MgVW5pcXVlUmVm
IHsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmll
bmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3Mm
Ji4uLik7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5p
cXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFU+KTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBVPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VT4mJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4g
ZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAorICAgIGV4cGxpY2l0IFVuaXF1ZVJlZihzdGQ6OnVu
aXF1ZV9wdHI8VD4mJiBwdHIpCisgICAgICAgIDogbV9yZWYoV1RGTW92ZShwdHIpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fcmVmKTsKKyAgICB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4g
bV9yZWY7CiB9OwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGRhYWNmOTdmOTU4Yzg1ZGM5ZjUyZDRjMmUyZTI4ZTMyN2I4ODgxZWQuLjcx
MzZlN2YzMmZkYzM2NTg2NzdhNGU0MzBlNDhlMzE0ZGFiNWI1Y2UgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjEtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
SlNDXSBZYXJyIHNob3VsZCBwZXJmb3JtIEJveWVyTW9vcmUgc2VhcmNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgzMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9qcXVl
cnktdG9kb212Yy1yZWdleHAuanM6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNo
LWxvbmctY2hhcmFjdGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KiBzdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtYml0dmVjdG9yLXJldXNlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLW5vbi1h
c2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAyMS0wNy0yNSAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUGFydGx5IGltcGxlbWVudCBGdW5jdGlv
bi5wcm90b3R5cGUue2NhbGxlcixhcmd1bWVudHN9IHJlZmxlY3Rpb24gcHJvcG9zYWwKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10b2RvbXZjLXJlZ2V4cC5qcwppbmRleCBh
ZjNhNDI0NTk3ZTE3MzlkMmNkYTNkMDMzY2QyNTk0ZGQyNDc4ZTYxLi40ZjMwYWVlODg3MzU1YTM3
ZjIxZTg2NWU2ZjE0NzdkMTgyYjU3MWZhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvanF1ZXJ5LXRvZG9tdmMtcmVnZXhwLmpzCkBAIC04NDIwOSw3ICs4NDIwOSw4IEBAIGZ1bmN0
aW9uIHRlc3QocmVnRXhwcywgc3RyaW5ncykgewogICAgIHJlZ0V4cCQxNi5sYXN0SW5kZXggPSAw
OwogICAgIHJlc3VsdHMgPSByZWdFeHAkMTYuZXhlYyhzdHJpbmckMjE1KTsKIH0KLW5vSW5saW5l
KHRlc3QpOworaWYgKHR5cGVvZiBub0lubGluZSAhPT0gInVuZGVmaW5lZCIpCisgICAgbm9Jbmxp
bmUodGVzdCk7CiByZWdFeHBzLnB1c2goL2F2b2lkIGNvbnN0YW50IGZvbGRpbmcvZ2kpOwogc3Ry
aW5ncy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIGZvciAobGV0IGkgPSAwOyBp
IDwgMjA7ICsraSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNo
LWxvbmctY2hhcmFjdGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9u
Zy1jaGFyYWN0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMzZTBkNjgwZDZhMWU3MTQwMTVjNWEwNWYyNGZi
Njc5MjFjNThlMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0t
c2VhcmNoLWxvbmctY2hhcmFjdGVyLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIg
cmVnZXhwID0gL2FhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJi
YmFhYWFiYmJiYWFhYWJiYmIvaTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgewor
ICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFh
YmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRkYWFhYWJiYmJjY2NjZGRkZGZmZmZmIiksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVm
Z2FiY2RlZmdhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJh
YWFhYmJiYmFhYmJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRhYWFhYmJi
YmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJi
ZmZmZmYiKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCAiYWJjZGVm
Z2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFh
YmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYmJhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFh
YWFiYmJiY2NjY2RkZGQiKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAiZmZm
ZmYiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYi
KSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFy
Y2gtbG9uZy1tYXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLW1h
cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNWNmYWY2ZjJhZDVjMmVmNmY0OWM5YjdkN2JiYmUyMzY0MDY3MDJh
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9u
Zy1tYXAuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAvYWFhYWJi
YmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGQvaTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRkYWFhYWJi
YmJjY2NjZGRkZGZmZmZmIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4
dCwgImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZyIpOworICAgIHNob3VsZEJlKFJlZ0V4cC5y
aWdodENvbnRleHQsICJmZmZmZiIpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KCJhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmdhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJjY2NjZGRmZmZmZmZm
ZmZmZmZmZmZmZmZmZmZmZiIpLCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9yZWdleHAtYml0dmVjdG9yLXJldXNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZl
Y3Rvci1yZXVzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTMxZWYyZmE1OGM3OGY0MGUyNjExMzBiYjM1YWQ1
NDYxYTE4ZjNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJpdHZl
Y3Rvci1yZXVzZS5qcwpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciByZWdleHAgPSAvc2Ny
aXB0LzsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZSgvc2Ny
aXB0Ly50ZXN0KCJ0ZXN0dGVzdHNjcmlwdCIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAu
bGVmdENvbnRleHQsICJ0ZXN0dGVzdCIpOworICAgIHNob3VsZEJlKC9zY3JpcHQvLnRlc3QoJHZt
Lm1ha2UxNkJpdFN0cmluZ0lmUG9zc2libGUoInRlc3R0ZXN0c2NyaXB0IikpLCB0cnVlKTsKKyAg
ICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICJ0ZXN0dGVzdCIpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZiYTY3NGY5MjM3YTBhNDI5M2Q3MWUwZGRmMmM5OWFiNWY5YTY4YjAKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJj
aC1jaGFyYWN0ZXIuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAv
5LuK5pelL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRC
ZShyZWdleHAudGVzdCgi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44Gn5LuK5pel44Gv44G+44Gg
55yg44GE44CCIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgIuaY
qOaXpemBheOBj+OBq+WvneOBn+OBruOBpyIpOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENv
bnRleHQsICLjga/jgb7jgaDnnKDjgYTjgIIiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgi
QmVjYXVzZSBJIHdlbnQgdG8gYmVkIGxhdGUgbGFzdCBuaWdodCwgSSdtIHN0aWxsIHNsZWVweSIp
LCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lp
LWJtLXNlYXJjaC1tYXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNl
YXJjaC1tYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIyYThlZWUxMWEzZTM5MTBjMTZjM2IxMDA1OTBlOTNl
MzE2MWQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ub24tYXNj
aWktYm0tc2VhcmNoLW1hcC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4
cCA9IC/ku4rml6V85piO5pelL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsK
KyAgICBzaG91bGRCZShyZWdleHAudGVzdCgi5pio5pel6YGF44GP44Gr5a+d44Gf44Gu44Gn5LuK
5pel44Gv44G+44Gg55yg44GE44CCIiksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0
Q29udGV4dCwgIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBpyIpOworICAgIHNob3VsZEJlKFJl
Z0V4cC5yaWdodENvbnRleHQsICLjga/jgb7jgaDnnKDjgYTjgIIiKTsKKyAgICBzaG91bGRCZShy
ZWdleHAudGVzdCgiQmVjYXVzZSBJIHdlbnQgdG8gYmVkIGxhdGUgbGFzdCBuaWdodCwgSSdtIHN0
aWxsIHNsZWVweSIpLCBmYWxzZSk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="456997"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434488</attachid>
            <date>2021-07-28 18:54:06 -0700</date>
            <delta_ts>2021-07-29 13:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228301-20210728185405.patch</filename>
            <type>text/plain</type>
            <size>48977</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODI3NGVhODQzOGQxZTNmZmNmMjQwNmZmNmUwNGY4Yjg0ODc4YmZhLi42ZmM5YjlhODRkOTE3NDE3
OGIyMTE3N2YyYjFlZjQwNTdmZmExMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQm95ZXJNb29yZSBzZWFyY2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODMwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZW1pdHMgc2tpcHBpbmcgZmFzdC1wYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgYm9keSBhbHRl
cm5hdGl2ZXMgd2l0aCBhIGxhcmdlIHN0cmlkZS4gU28gd2UgY2FuIHF1aWNrbHkgZGlzY2FyZCB1
bnJlbGF0ZWQgY2hhcmFjdGVycworICAgICAgICBhbmQgYXR0ZW1wdCB0byBmaW5kIHBvc3NpYmx5
IHJlbGF0ZWQgc2VxdWVuY2UgaW4gdGhlIGxvbmcgc2VxdWVuY2UuIFRoZSBtZXRob2QgaXMgZGVy
aXZlZCBmcm9tIFY4J3MgaW1wbGVtZW50YXRpb24gKHdpdGggc29tZSBleHRlbnNpb25zKS4KKwor
ICAgICAgICBJZiB3ZSBoYXZlIGEgc2VhcmNoaW5nIHBhdHRlcm4gL2FiY2RlZi8sIHRoZW4gd2Ug
Y2FuIGNoZWNrIHRoZSA2dGggY2hhcmFjdGVyIGFnYWluc3QgYSBzZXQgb2Yge2EsIGIsIGMsIGQs
IGUsIGZ9LgorICAgICAgICBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgd2UgY2FuIHNoaWZ0IDYgY2hh
cmFjdGVycy4gV2UgdXNlIHRoaXMgc3RyYXRlZ3kgc2luY2UgdGhpcyB3YXkgY2FuIGJlIGV4dGVu
ZGVkIGVhc2lseSB0byBzdXBwb3J0CisgICAgICAgIGRpc2p1bmN0aW9uLCBjaGFyYWN0ZXItY2xh
c3MsIGFuZCBpZ25vcmUtY2FzZXMuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiAvKD86YWJj
fGRlZikvLCB3ZSBjYW4gY2hlY2sgM3JkIGNoYXJhY3RlcgorICAgICAgICBhZ2FpbnN0IHthLCBi
LCBjLCBkLCBlLCBmfSBhbmQgc2hpZnQgMyBjaGFyYWN0ZXJzIGlmIGl0IGRvZXMgbm90IG1hdGNo
LgorCisgICAgICAgIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92ZSBzaGlm
dGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNo
IGRvZXMgbm90IGhhdmUKKyAgICAgICAgbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUgY2FzZSBvZiAv
W2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2VxdWVuY2UgYW5k
IGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIElmIGl0IGRvZXMgbm90
IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0aCBvZiAiYWFhYWFh
YSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16XWFhYWFhYWFbYS16
XSIKKyAgICAgICAgc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7YS16fSBzZXQgd2lsbCBh
bG1vc3QgYWx3YXlzIG1hdGNoLgorCisgICAgICAgIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUg
Y2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJp
c3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCisgICAgICAgIHRo
YXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgorCisgICAg
ICAgIE1pY3JvYmVuY2htYXJrIHdoaWNoIHBlcmZvcm1zIFJlZ0V4cCBvcHMgaW4gU3BlZWRvbWV0
ZXIyL2pRdWVyeS1Ub2RvTVZDIHNob3dzIDI1JSBpbXByb3ZlbWVudC4KKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAg
IFBhdGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNzIzLjk3
MzkrLTEuMzk5NyAgICAgXiAgICA1NzkuMTY5OCstMS4yNTA1ICAgICAgICBeIGRlZmluaXRlbHkg
MS4yNTAweCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVl
cnktVG9kb01WQyBieSAzJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAg
ICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBG
YWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg
ICAgICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy4zNjU2
MjUgICB8MTIzLjQ1NjI1MCAgIHwxLjAwMDczNSAgfCAwLjgwNDA3NyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAg
ICAgICAgICAgICAgICAgICAgICAgfDI2LjkxMjUwMCAgICB8MjYuOTI1MDAwICAgIHwxLjAwMDQ2
NCAgfCAwLjk2OTYwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy41
NDA2MjUgICB8MTI3LjU2MjUwMCAgIHwxLjAwMDE3MiAgfCAwLjk2MDQ3NCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgfDUwLjYwNjI1MCAgICB8NTAuNTE4NzUwICAgIHwwLjk5
ODI3MSAgfCAwLjY3MDMxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIx
LjAxODc1MCAgICB8MjAuODUwMDAwICAgIHwwLjk5MTk3MSAgfCAwLjU2MzgxOCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDEzNi45NDM3NTAgICB8MTM3LjI3MTg3NSAgIHwx
LjAwMjM5NiAgfCAwLjUzMTUxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAg
fDY4LjUyMTg3NSAgICB8NjguNTkzNzUwICAgIHwxLjAwMTA0OSAgfCAwLjcwMTM3NiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5v
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjU1OTM3NSAgICB8NjUuODAzMTI1ICAg
IHwxLjAwMzcxOCAgfCAwLjQxNDQxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAg
ICAgfDc3LjI4NDM3NSAgICB8NzYuNzE1NjI1ICAgIHwwLjk5MjY0MSAgfCAwLjIxOTg3MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1
bGFyMi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjcyNTAwMCAgICB8NDAuMzE4NzUw
ICAgIHwwLjk5MDAyNSAgfCAwLjI4MTIxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgfDU1LjIwOTM3NSAgICB8NTQuNzE1NjI1ICAgIHwwLjk5MTA1NyAgfCAwLjA1NjkyMSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBq
UXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI2Ni4zOTY4NzUgICB8MjU4LjQ3
MTg3NSAgIHwwLjk3MDI1MSAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAg
ICAgICAgICAgfDM0MS41NTAwMDAgICB8MzQxLjg1NjI1MCAgIHwxLjAwMDg5NyAgfCAwLjYxODE0
MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4LjczMTI1MCAgICB8ODgu
ODcxODc1ICAgIHwxLjAwMTU4NSAgfCAwLjUxMjQwNyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgfDE1MC4zNDA2MjUgICB8MTUwLjA2NTYyNSAgIHwwLjk5ODE3MSAgfCAwLjQx
Mjk0MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgfCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1LjM5MDYyNSAgICB8
NjUuMzYyNTAwICAgIHwwLjk5OTU3MCAgfCAwLjgzNDc2MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgYSBtZWFuID0gMjQ1Ljk2OTk3CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODYzNjYK
KyAgICAgICAgICAgIHBWYWx1ZSA9IDAuMDA2MTQ0ODQwMgorICAgICAgICAgICAgKEJpZ2dlciBt
ZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDA0IHRpbWVzIGJldHRlcgorICAgICAg
ICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpCb3llck1vb3JlSW5mbzo6Qm95ZXJNb29yZUluZm8pOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlSW5mbzo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJN
b29yZUluZm86OnNldCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjppbmRl
eCBjb25zdCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRJbmRleCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSBjb25z
dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6
Qm95ZXJNb29yZUluZm86OmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcCBjb25zdCk6CisgICAgICAgICog
eWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmNv
dW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6bWFwIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6aXNNYXNrRWZmZWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkKToK
KyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJ5dGVWZWN0b3I6OkJveWVyTW9vcmVCeXRl
VmVjdG9yKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6c2V0OEJpdENvZGUp
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQxNkJpdENvZGUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpzZXQ4Qml0Q29kZU1hdGNoT25seSk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OnNldDE2Qml0Q29kZU1hdGNoT25seSk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmNsZWFyKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZmluZFNhbWVWZWN0b3IgY29uc3QpOgorCiAyMDIxLTA3
LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
bG9hZC9zdG9yZSB3aXRoIEJhc2VJbmRleCBpcyBpbmVmZmljaWVudCBpbiBBUk02NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBk
NTRhM2YwZWJhMGI5YTlhZDZjMWIyMWE5ZmE1M2MwMDAyZmU0ZTgyLi41MDRjNGU4ODNkN2ZhZGFh
MjA4ZDYwMmI3NTA4ZTE3YWRmNWMxNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA3LTI4
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFy
ciBzaG91bGQgcGVyZm9ybSBCb3llck1vb3JlIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmNwcDoKKyAgICAgICAg
KFdURjo6Qml0VmVjdG9yOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZHVtcCBjb25zdCk6CisgICAgICAgICogd3RmL1VuaXF1
ZVJlZi5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIp
OgorICAgICAgICAoV1RGOjpVbmlxdWVSZWY6OlVuaXF1ZVJlZik6CisKIDIwMjEtMDctMjYgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBz
cGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggM2RmY2M5MTIwOWQ0NTg5OWRmZTM5N2MxMjI0ZTE4OWFj
ZGU5MWU3OC4uMWI5YzEwMTg3NjAxYjM3ZDFiZjExNjIzMDE5ZGZhNjc4MzEyMTI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00NTIsNiArNDUy
LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KFVuc2lnbmVk
LCBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZywgMiwgTm9ybWFsLCAiTnVtYmVyIG9m
IHByb3RvdHlwZSBwcm9wZXJ0eSBoaXRzIGJlZm9yZSBjYWNoaW5nIGEgcHJvdG90eXBlIGluIHRo
ZSBMTEludC4gQSBjb3VudCBvZiAwIG1lYW5zIG5ldmVyIGNhY2hlLiIpIFwKICAgICBcCiAgICAg
dihCb29sLCBkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYoQm9vbCwgdmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAppbmRleCA4YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcwNTg5ODRkOGQyZjY1YjliLi5mMzY3
MzExODM0MGFiMzBkYjY3MmE5YjIxNDE0ODcwN2NiYWY0NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgdGhlIFY4IHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcgKzM1LDEyNiBAQAogI2lu
Y2x1ZGUgIllhcnJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJZYXJyTWF0Y2hpbmdDb250ZXh0
SG9sZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAKICNpZiBFTkFCTEUoWUFS
Ul9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CituYW1lc3BhY2UgWWFy
ckpJVEludGVybmFsIHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9
CiAKICNpZiBDUFUoQVJNNjRFKQogSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdl
dF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRlcik7CiAjZW5kaWYK
IAorY2xhc3MgQm95ZXJNb29yZUluZm8geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVy
TW9vcmVJbmZvKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlSW5mbyk7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAzMjsK
KworICAgIGV4cGxpY2l0IEJveWVyTW9vcmVJbmZvKHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMobGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPmxlbmd0
aCgpIDw9IG1heExlbmd0aCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFyYWN0ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2lu
ZGV4XS5hZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGluZGV4OworICAgIH0KKworICAgIHN0YXRpYyBVbmlx
dWVSZWY8Qm95ZXJNb29yZUluZm8+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCb3llck1vb3JlSW5mbz4obGVuZ3RoKTsKKyAgICB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8dW5zaWduZWQsIHVuc2lnbmVkPj4gZmlu
ZFdvcnRod2hpbGVDaGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpIGNvbnN0OworICAgIHN0
ZDo6dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBjcmVhdGVDYW5kaWRhdGVCaXRt
YXAodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
c3RkOjp0dXBsZTxpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZD4gZmluZEJlc3RDaGFyYWN0ZXJTZXF1
ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdCkgY29uc3Q7CisKKyAgICBWZWN0
b3I8Qm95ZXJNb29yZUJpdG1hcD4gbV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1faW5kZXgg
eyAwIH07Cit9OworCitzdGQ6OnR1cGxlPGludCwgdW5zaWduZWQsIHVuc2lnbmVkPiBCb3llck1v
b3JlSW5mbzo6ZmluZEJlc3RDaGFyYWN0ZXJTZXF1ZW5jZSh1bnNpZ25lZCBudW1iZXJPZkNhbmRp
ZGF0ZXNMaW1pdCkgY29uc3QKK3sKKyAgICBpbnQgYmlnZ2VzdFBvaW50ID0gMDsKKyAgICB1bnNp
Z25lZCBiZWdpblJlc3VsdCA9IDA7CisgICAgdW5zaWduZWQgZW5kUmVzdWx0ID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGgoKTspIHsKKyAgICAgICAgd2hp
bGUgKGluZGV4IDwgbGVuZ3RoKCkgJiYgbV9jaGFyYWN0ZXJzW2luZGV4XS5jb3VudCgpID4gbnVt
YmVyT2ZDYW5kaWRhdGVzTGltaXQpCisgICAgICAgICAgICArK2luZGV4OworICAgICAgICBpZiAo
aW5kZXggPT0gbGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQg
YmVnaW4gPSBpbmRleDsKKyAgICAgICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07Cisg
ICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aCgpICYmIG1fY2hhcmFjdGVyc1tpbmRleF0uY291
bnQoKSA8PSBudW1iZXJPZkNhbmRpZGF0ZXNMaW1pdDsgKytpbmRleCkKKyAgICAgICAgICAgIG1h
cC5tZXJnZShtX2NoYXJhY3RlcnNbaW5kZXhdLm1hcCgpKTsKKworICAgICAgICAvLyBJZiBtYXAg
aGFzIG1hbnkgY2FuZGlkYXRlcywgdGhlbiBwb2ludCBvZiB0aGlzIHNlcXVlbmNlIGlzIGxvdyBz
aW5jZSBpdCB3aWxsIG1hdGNoIHRvbyBtYW55IHRoaW5ncy4KKyAgICAgICAgLy8gQW5kIGlmIHRo
ZSBzZXF1ZW5jZSBpcyBsb25nZXIsIHRoZW4gdGhlIHBvaW50IG9mIHRoaXMgc2VxdWVuY2UgaXMg
aGlnaGVyIHNpbmNlIGl0IGNhbiBza2lwIG1hbnkgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBhcmUgaGFuZGxpbmcgYWxsIGNoYXJhY3RlcnMgZXF1YWxseS4gQnV0
IHdlIHNob3VsZCBoYXZlIHdlaWdodCBwZXIgY2hhcmFjdGVyIHNpbmNlIGUuZy4gJ2UnIHNob3Vs
ZCBhcHBlYXIgbW9yZSBmcmVxdWVudGx5IHRoYW4gJ1x2Jy4KKyAgICAgICAgaW50IGZyZXF1ZW5j
eSA9IG1hcC5jb3VudCgpOworICAgICAgICBpbnQgbWF0Y2hpbmdQcm9iYWJpbGl0eSA9IEJveWVy
TW9vcmVCaXRtYXA6Om1hcFNpemUgLSBmcmVxdWVuY3k7CisgICAgICAgIGludCBwb2ludCA9IChp
bmRleCAtIGJlZ2luKSAqIG1hdGNoaW5nUHJvYmFiaWxpdHk7CisgICAgICAgIGlmIChwb2ludCA+
IGJpZ2dlc3RQb2ludCkgeworICAgICAgICAgICAgYmlnZ2VzdFBvaW50ID0gcG9pbnQ7CisgICAg
ICAgICAgICBiZWdpblJlc3VsdCA9IGJlZ2luOworICAgICAgICAgICAgZW5kUmVzdWx0ID0gaW5k
ZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiaWdnZXN0UG9p
bnQsIGJlZ2luUmVzdWx0LCBlbmRSZXN1bHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1
cGxlPHVuc2lnbmVkLCB1bnNpZ25lZD4+IEJveWVyTW9vcmVJbmZvOjpmaW5kV29ydGh3aGlsZUNo
YXJhY3RlclNlcXVlbmNlRm9yTG9va2FoZWFkKCkgY29uc3QKK3sKKyAgICAvLyBJZiBjYW5kaWF0
ZXMtcGVyLWNoYXJhY3RlciBiZWNvbWVzIGxhcmdlciwgdGhlbiBzZXF1ZW5jZSBpcyBub3QgcHJv
Zml0YWJsZSBzaW5jZSB0aGlzIHNlcXVlbmNlIHdpbGwgbWF0Y2ggYWdhaW5zdAorICAgIC8vIHRv
byBtYW55IGNoYXJhY3RlcnMuIEJ1dCBpZiB3ZSBsaW1pdCBjYW5kaWF0ZXMtcGVyLWNoYXJhY3Rl
ciBzbWFsbGVyLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHdlIG9ubHkgZmluZCB2ZXJ5IHNob3J0Cisg
ICAgLy8gY2hhcmFjdGVyIHNlcXVlbmNlLiBXZSBzdGFydCB3aXRoIGxvdyBsaW1pdCwgdGhlbiBl
bmxhcmdpbmcgdGhlIGxpbWl0IHRvIGZpbmQgbW9yZSBhbmQgbW9yZSBwcm9maXRhYmxlCisgICAg
Ly8gY2hhcmFjdGVyIHNlcXVlbmNlLgorICAgIGludCBiaWdnZXN0UG9pbnQgPSAwOworICAgIHVu
c2lnbmVkIGJlZ2luID0gMDsKKyAgICB1bnNpZ25lZCBlbmQgPSAwOworICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXhDYW5kaWRhdGVzUGVyQ2hhcmFjdGVyID0gMzI7CisgICAgZm9yICh1bnNpZ25l
ZCBsaW1pdCA9IDQ7IGxpbWl0IDwgbWF4Q2FuZGlkYXRlc1BlckNoYXJhY3RlcjsgbGltaXQgKj0g
MikgeworICAgICAgICBhdXRvIFtuZXdQb2ludCwgbmV3QmVnaW4sIG5ld0VuZF0gPSBmaW5kQmVz
dENoYXJhY3RlclNlcXVlbmNlKGxpbWl0KTsKKyAgICAgICAgaWYgKG5ld1BvaW50ID4gYmlnZ2Vz
dFBvaW50KSB7CisgICAgICAgICAgICBiaWdnZXN0UG9pbnQgPSBuZXdQb2ludDsKKyAgICAgICAg
ICAgIGJlZ2luID0gbmV3QmVnaW47CisgICAgICAgICAgICBlbmQgPSBuZXdFbmQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKCFiaWdnZXN0UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBiZWdpbiwgZW5kIH07Cit9CisKK3N0ZDo6
dHVwbGU8Qm95ZXJNb29yZUJpdG1hcDo6TWFwLCBib29sPiBCb3llck1vb3JlSW5mbzo6Y3JlYXRl
Q2FuZGlkYXRlQml0bWFwKHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7Cisg
ICAgQm95ZXJNb29yZUJpdG1hcDo6TWFwIG1hcCB7IH07CisgICAgYm9vbCBpc01hc2tFZmZlY3Rp
dmUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gYmVnaW47IGluZGV4IDwgZW5k
OyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIGJtQml0bWFwID0gbV9jaGFyYWN0ZXJzW2luZGV4
XTsKKyAgICAgICAgbWFwLm1lcmdlKGJtQml0bWFwLm1hcCgpKTsKKyAgICAgICAgaXNNYXNrRWZm
ZWN0aXZlIHw9IGJtQml0bWFwLmlzTWFza0VmZmVjdGl2ZSgpOworICAgIH0KKyAgICByZXR1cm4g
c3RkOjp0dXBsZSB7IG1hcCwgaXNNYXNrRWZmZWN0aXZlIH07Cit9CisKIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCkBAIC04MzAsNiArOTQwLDggQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIC8vIHZhbHVlIHRoYXQgd2lsbCBiZSBwdXNoZWQgaW50byB0aGUgcGF0dGVy
bidzIGZyYW1lIHRvIHJldHVybiB0bywKICAgICAgICAgLy8gdXBvbiBiYWNrdHJhY2tpbmcgYmFj
ayBpbnRvIHRoZSBkaXNqdW5jdGlvbi4KICAgICAgICAgRGF0YUxhYmVsUHRyIG1fcmV0dXJuQWRk
cmVzczsKKworICAgICAgICBCb3llck1vb3JlSW5mbyogbV9ibUluZm87CiAgICAgfTsKIAogICAg
IC8vIEJhY2t0cmFja2luZ1N0YXRlCkBAIC0xNDEwLDcgKzE1MjIsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgYWxsQ2hhcmFjdGVycyB8PSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGN1cnJlbnRDaGFyYWN0ZXIpIDw8IHNoaWZ0QW1vdW50KTsKIAotICAgICAgICAgICAgaWYgKCht
X3BhdHRlcm4uaWdub3JlQ2FzZSgpKSAmJiAoaXNBU0NJSUFscGhhKGN1cnJlbnRDaGFyYWN0ZXIp
KSkKKyAgICAgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBo
YShjdXJyZW50Q2hhcmFjdGVyKSkKICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlTWFzayB8PSAz
MlVMTCA8PCBzaGlmdEFtb3VudDsKICAgICAgICAgfQogCkBAIC0yMjU2LDExICsyMzY4LDczIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhl
YWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJs
ZQogICAgICAgICAgICAgICAgIC8vIHRvIHJ1biB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuIChUaGlz
IHByb2dyZXNzZXMgdGhlIGlucHV0IHBvc2l0aW9uKS4KICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGFsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplKSk7CisgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplOworCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCByZWVudGVyIGFmdGVy
IHRoZSBjaGVjaywgYW5kIGFzc3VtZSB0aGUgaW5wdXQgcG9zaXRpb24gdG8gaGF2ZSBiZWVuCiAg
ICAgICAgICAgICAgICAgLy8gc2V0IGFzIGFwcHJvcHJpYXRlIHRvIHRoaXMgYWx0ZXJuYXRpdmUu
CiAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAg
ICAgIG1fY2hlY2tlZE9mZnNldCArPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKKyAgICAg
ICAgICAgICAgICAvLyBFbWl0IGZhc3Qgc2tpcCBwYXRoIHdpdGggc3RyaWRlIGlmIHdlIGhhdmUg
Qm95ZXJNb29yZUluZm8uCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fYm1JbmZvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBvcC5tX2JtSW5mby0+ZmluZFdvcnRod2hpbGVD
aGFyYWN0ZXJTZXF1ZW5jZUZvckxvb2thaGVhZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW2JlZ2luSW5kZXgsIGVuZElu
ZGV4XSA9ICpyYW5nZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRJbmRleCA8
PSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gW21hcCwgaXNNYXNrRWZmZWN0aXZlXSA9IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRh
dGVCaXRtYXAoYmVnaW5JbmRleCwgZW5kSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbWFwQ291bnQgPSBtYXAuY291bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGNhbmRpYXRlIGNoYXJhY3RlcnMgYXJlIDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0
dGVyIHRoYW4gdXNpbmcgdmVjdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENv
dW50IDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIyID0gMHhmZjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPT0gMikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIyID0gbWFwLmZpbmRCaXQoY2hhcmFjdGVyMSAr
IDEsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyMiAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgMS1vci0yIGNoYXJhY3Rl
cnMgbG9va2FoZWFkIGNoYXJhY3RlcjooMHgiLCBoZXgoY2hhcmFjdGVyMSksICIpLGNoYXJhY3Rl
cjI6KCIsIGhleChjaGFyYWN0ZXIyKSwgIiksaXNNYXNrRWZmZWN0aXZlOigiLCBpc01hc2tFZmZl
Y3RpdmUsIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsg
MSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01hc2tFZmZlY3Rp
dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihC
b3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
YXBDb3VudCA9PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFw
cGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHZlY3RvciA9IG1ha2VV
bmlxdWVSZWY8Qm95ZXJNb29yZUJ5dGVWZWN0b3I+KG1hcCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCks
ICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIs
IGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBvaW50ZXIgPSB2ZWN0b3ItPmRhdGEoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byogZXhpc3RpbmdQb2ludGVyID0gbV9j
b2RlQmxvY2suZmluZFNhbWVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIHZlY3Rvci5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBleGlzdGluZ1Bv
aW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2JtVmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvcikpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBy
ZWdUMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmQzMihUcnVzdGVkSW1tMzIoQm95ZXJNb29yZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNo
VGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFi
bGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90IGZp
eGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChp
bmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQ6CkBAIC0y
NzgwLDYgKzI5NTQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBt
X29wc1tvcC5tX25leHRPcF07CisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9wLm1fb3AgPT0g
WWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKTsKIAogICAgICAgICAgICAgICAgIFlhcnJP
cCogYmVnaW5PcCA9ICZvcDsKICAgICAgICAgICAgICAgICB3aGlsZSAoYmVnaW5PcC0+bV9vcCAh
PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikgewpAQCAtMjc5Nyw3ICsyOTcyLDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKG9uY2VUaHJvdWdoKQogICAg
ICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtUbyhlbmRPcC5tX3JlZW50
cnksIHRoaXMpOwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBp
ZiAobV9wYXR0ZXJuLnN0aWNreSgpICYmIG1fb3BzW29wLm1fbmV4dE9wXS5tX29wID09IFlhcnJP
cENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9w
YXR0ZXJuLnN0aWNreSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIHN0
aWNreSBwYXR0ZXJuIGFuZCB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBmYWlsZWQsIGp1bXAgdG8gdGhl
IGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUudGFrZUJh
Y2t0cmFja3NUb0p1bXBMaXN0KGxhc3RTdGlja3lBbHRlcm5hdGl2ZUZhaWx1cmVzLCB0aGlzKTsK
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0Zp
eGVkU2l6ZQpAQCAtMjgxMyw0MSArMjk4OCw0MSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFyb3VuZCB0byB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gYWR2YW5jZSBhbmQgcmV0cnkgZm9y
IGEgc3RpY2t5IHBhdHRlcm4uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVy
bi5zdGlja3koKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0
ZXJuIHNpemUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNl
IGlmIHdlIG1hdGNoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJu
Lm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IDEpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3ZlKGluZGV4LCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNp
emUgLSAxKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TWF0Y2hTdGFydChyZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gYWR2YW5jZSBhbmQgcmV0cnkgZm9y
IGEgc3RpY2t5IHBhdHRlcm4uIEFuZCBpdCBpcyBhbHJlYWR5IGhhbmRsZWQgYmVmb3JlIHRoaXMg
YnJhbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uc3RpY2t5
KCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlz
IG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRj
aC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNG
aXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUt
Pm1fbWluaW11bVNpemUgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TWF0Y2hTdGFydChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQz
MihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gR2VuZXJhdGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0aGVyIHRoZSBsYXN0IGFsdGVybmF0
aXZlIGlzIGxvbmdlciB0aGFuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZp
cnN0IChlLmcuIC9hfHh5LyBvciAvYXx4eXovKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPiBiZWdpbk9wLT5tX2FsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IHdhbnQgdG8gbG9vcCwgYW5kIGluY3JlbWVudCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhlIGRlbHRh
IGlzIDEsIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkg
Y29ycmVjdGx5IGluY3JlbWVudGVkLCBpZiBtb3JlIHRoYW4gb25lIHRoZW4gZGVjcmVtZW50IGFz
IGFwcHJvcHJpYXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBk
ZWx0YSA9IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2
ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGRlbHRhKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihkZWx0YSAt
IDEpLCBpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoYmVnaW5P
cC0+bV9yZWVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUg
aGFzIG1pbmltdW0gc2l6ZSAweEZGRkZGRkZGdSwgdGhlbiB0aGVyZSBjYW5ub3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgc3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0
byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxsIHRocm91Z2guCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGRlbHRhID0gYmVnaW5PcC0+bV9hbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSAtIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMHhGRkZGRkZGRnUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaW5wdXQgYmVjYXVz
ZSB3ZSBhcmUgaW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZDMyKEltbTMyKGRlbHRhICsgMSksIGluZGV4KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSW5wdXQoKS5saW5rVG8oYmVnaW5PcC0+bV9y
ZWVudHJ5LCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgY29kZSB0byBsb29wLiBDaGVjayB3aGV0aGVy
IHRoZSBsYXN0IGFsdGVybmF0aXZlIGlzIGxvbmdlciB0aGFuIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZmlyc3QgKGUuZy4gL2F8eHkvIG9yIC9hfHh5ei8pLgorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID4gYmVnaW5PcC0+bV9h
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIHdhbnQgdG8gbG9vcCwgYW5kIGluY3JlbWVudCBpbnB1dCBwb3NpdGlvbi4gSWYgdGhl
IGRlbHRhIGlzIDEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFk
eSBjb3JyZWN0bHkgaW5jcmVtZW50ZWQsIGlmIG1vcmUgdGhhbiBvbmUgdGhlbiBkZWNyZW1lbnQg
YXMgYXBwcm9wcmlhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVs
dGEgPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIGJlZ2luT3AtPm1fYWx0ZXJuYXRpdmUt
Pm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGRlbHRh
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEgIT0gMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoZGVsdGEgLSAxKSwgaW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoYmVnaW5PcC0+bV9yZWVudHJ5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIGZpcnN0IGFsdGVybmF0aXZlIGhhcyBtaW5pbXVtIHNpemUgMHhGRkZGRkZG
RnUsIHRoZW4gdGhlcmUgY2Fubm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUg
c3VmZmljZW50IGlucHV0IGF2YWlsYWJsZSB0byBoYW5kbGUgdGhpcywgc28ganVzdCBmYWxsIHRo
cm91Z2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZGVsdGEgPSBiZWdp
bk9wLT5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDB4RkZGRkZG
RkZ1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hl
Y2sgaW5wdXQgYmVjYXVzZSB3ZSBhcmUgaW5jcmVtZW50aW5nIHRoZSBpbnB1dC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoZGVsdGEgKyAxKSwgaW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lucHV0KCkubGlua1RvKGJlZ2lu
T3AtPm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNjA3LDYg
KzM3ODIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXpl
KCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgpKSB7CiAgICAgICAgICAgICBtX29w
cy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CiAgICAg
ICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CisgICAgICAgICAg
ICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxscHRyOwogCiAgICAgICAgICAgICBkbyB7CiAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9vcHMuc2l6ZSgpIC0gMTsKQEAg
LTM2NDMsNiArMzgxOSwyMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgc2l6ZV90IHJlcGVh
dExvb3AgPSBtX29wcy5zaXplKCk7CiAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9w
Q29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJl
dmlvdXNPcCA9IG5vdEZvdW5kOworICAgICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBudWxs
cHRyOworICAgICAgICAvLyBDb2xsZWN0IEJveWVyTW9vcmVJbmZvIGlmIGl0IGlzIHBvc3NpYmxl
IGFuZCBwcm9maXRhYmxlLiBCb3llck1vb3JlSW5mbyB3aWxsIGJlIHVzZWQgdG8gZW1pdCBmYXN0
IHNraXAgcGF0aCB3aXRoIGxhcmdlIHN0cmlkZQorICAgICAgICAvLyBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBib2R5IGFsdGVybmF0aXZlcy4KKyAgICAgICAgLy8gV2UgZG8gbm90IGVtaXQgdGhl
c2UgZmFzdCBwYXRoIHdoZW4gUmVnRXhwIGhhcyBzdGlja3kgb3IgdW5pY29kZSBmbGFnLiBTdGlj
a3kgY2FzZSBkb2VzIG5vdCBuZWVkIHRoaXMgc2luY2UKKyAgICAgICAgLy8gaXQgZmFpbHMgd2hl
biB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IG9m
ZnNldC4KKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5pY29kZSBmbGFnLgorICAgICAgICBp
ZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlzanVuY3Rpb24tPm1faGFzRml4ZWRT
aXplICYmICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0dGVybi51bmljb2RlKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gYm1JbmZvID0gQm95ZXJNb29yZUluZm86OmNyZWF0ZShzdGQ6Om1pbjx1
bnNpZ25lZD4oZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUsIEJveWVyTW9vcmVJbmZvOjptYXhM
ZW5ndGgpKTsKKyAgICAgICAgICAgIGlmIChjb2xsZWN0Qm95ZXJNb29yZUluZm8oZGlzanVuY3Rp
b24sIGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8uZ2V0KCkpKSB7CisgICAgICAgICAg
ICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZvLnB0cigpOworICAgICAgICAgICAg
ICAgIGJtSW5mby0+c2V0SW5kZXgobV9ibUluZm9zLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
bV9ibUluZm9zLmFwcGVuZChXVEZNb3ZlKGJtSW5mbykpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKICAgICAgICAgZG8gewogICAgICAgICAgICAgc2l6ZV90IGxhc3RPcEluZGV4ID0gbV9v
cHMuc2l6ZSgpIC0gMTsKICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRp
dmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZlSW5kZXhdLmdldCgpOwpAQCAtMzY2
OCw2ICszODU5LDY5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBsYXN0T3AubV9uZXh0T3Ag
PSByZXBlYXRMb29wOwogICAgIH0KIAorICAgIGJvb2wgY29sbGVjdEJveWVyTW9vcmVJbmZvKFBh
dHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHNpemVfdCBjdXJyZW50QWx0ZXJuYXRpdmVJ
bmRleCwgQm95ZXJNb29yZUluZm8mIGJtSW5mbykKKyAgICB7CisgICAgICAgIC8vIElmIHdlIGhh
dmUgYSBzZWFyY2hpbmcgcGF0dGVybiAvYWJjZGVmLywgdGhlbiB3ZSBjYW4gY2hlY2sgdGhlIDZ0
aCBjaGFyYWN0ZXIgYWdhaW5zdCBhIHNldCBvZiB7YSwgYiwgYywgZCwgZSwgZn0uCisgICAgICAg
IC8vIElmIGl0IGRvZXMgbm90IG1hdGNoLCB3ZSBjYW4gc2hpZnQgNiBjaGFyYWN0ZXJzLiBXZSB1
c2UgdGhpcyBzdHJhdGVneSBzaW5jZSB0aGlzIHdheSBjYW4gYmUgZXh0ZW5kZWQgZWFzaWx5IHRv
IHN1cHBvcnQKKyAgICAgICAgLy8gZGlzanVuY3Rpb24sIGNoYXJhY3Rlci1jbGFzcywgYW5kIGln
bm9yZS1jYXNlcy4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIC8oPzphYmN8ZGVmKS8sIHdl
IGNhbiBjaGVjayAzcmQgY2hhcmFjdGVyCisgICAgICAgIC8vIGFnYWluc3Qge2EsIGIsIGMsIGQs
IGUsIGZ9IGFuZCBzaGlmdCAzIGNoYXJhY3RlcnMgaWYgaXQgZG9lcyBub3QgbWF0Y2guCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFRoZW4sIHRoZSBiZXN0IHdheSB0byBwZXJmb3JtIHRoZSBhYm92
ZSBzaGlmdGluZyBpcyB0aGF0IGZpbmRpbmcgdGhlIGxvbmdlc3QgY2hhcmFjdGVyIHNlcXVlbmNl
IHdoaWNoIGRvZXMgbm90IGhhdmUKKyAgICAgICAgLy8gbWFueSBjYW5kaWRhdGVzLiBJbiB0aGUg
Y2FzZSBvZiAvW2Etel1hYWFhYWFhW2Etel0vLCB3ZSBjYW4gZXh0cmFjdCAiYWFhYWFhYSIgc2Vx
dWVuY2UgYW5kIGNoZWNrIDh0aCBjaGFyYWN0ZXIgYWdhaW5zdCB7YX0uCisgICAgICAgIC8vIElm
IGl0IGRvZXMgbm90IG1hdGNoLCB0aGVuIHdlIGNhbiBzaGlmdCA3IGNoYXJhY3RlcnMgKGxlbmd0
aCBvZiAiYWFhYWFhYSIpLiBUaGlzIHNoaWZ0aW5nIGlzIGJldHRlciB0aGFuIHVzaW5nICJbYS16
XWFhYWFhYWFbYS16XSIKKyAgICAgICAgLy8gc2VxdWVuY2UgYW5kIHthLXp9IHNldCBzaW5jZSB7
YS16fSBzZXQgd2lsbCBhbG1vc3QgYWx3YXlzIG1hdGNoLgorICAgICAgICAvLworICAgICAgICAv
LyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVy
IHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0
ZXIgc2VxdWVuY2UgZnJvbQorICAgICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFy
Y2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KKworICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1f
aGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBzdXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBm
b3IgQm95ZXJNb29yZSBzZWFyY2guCisgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbmVzdGVkIGRpc2p1bmN0aW9u
cyAoZS5nLiAvKD86YWJjfGRlZnxnKD86aGl8amspKS8pLgorICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBjaGFyYWN0ZXItY2xhc3MgKGUuZy4gL1tcZF10ZXN0LykuCisgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IG5vbi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUuZy4gLy4qYWJjLyBhbmQgZXh0
cmFjdCAiYWJjIiBzZXF1ZW5jZSkuCisgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1
bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgZm9yICg7IGN1cnJlbnRBbHRlcm5hdGl2
ZUluZGV4IDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCkg
eworICAgICAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gMDsKKyAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBhbHRlcm5hdGl2ZXNbY3VycmVudEFsdGVybmF0aXZl
SW5kZXhdLmdldCgpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpICYmIGN1cnNvciA8IGJtSW5mby5sZW5ndGgo
KTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gYWx0ZXJu
YXRpdmUtPm1fdGVybXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHN3aXRjaCAodGVybS50eXBl
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9M
OgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoK
KyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91
bmRhcnk6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVy
Q2xhc3M6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVy
ZW5jZToKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVm
ZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
c2VzU3VicGF0dGVybjoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFj
dGVyOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFu
dGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQgIT0gMSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5w
YXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIC8vIEZv
ciBjYXNlLWluc2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2
ZSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJl
cHJlc2VudGF0aW9ucyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3Mu
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBp
c0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVl
KHRlcm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIGlzQVNDSUlBbHBoYSh0ZXJtLnBh
dHRlcm5DaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1
cnNvciwgdG9BU0NJSVVwcGVyKHRlcm0ucGF0dGVybkNoYXJhY3RlcikpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRvQVNDSUlMb3dlcih0ZXJtLnBhdHRlcm5D
aGFyYWN0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFj
dGVycyBjb2xsZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdm9p
ZCBnZW5lcmF0ZVRyeVJlYWRVbmljb2RlQ2hhcmFjdGVySGVscGVyKCkKICAgICB7CiAjaWZkZWYg
SklUX1VOSUNPREVfRVhQUkVTU0lPTlMKQEAgLTM5NTIsMTQgKzQyMDYsMTQgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Ok1h
dGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4
KQotICAgICAgICAgICAgICAgIGNvZGVCbG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTEla
RV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNo
LW9ubHkgOC1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVC
bG9jay5zZXQ4Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVy
LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgIk1hdGNoLW9ubHkgOC1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIiksIFdURk1vdmUobV9ibVZlY3RvcikpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay5zZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQ
X0NPREUobGlua0J1ZmZlciwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAx
Ni1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jay5z
ZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFy
ck1hdGNoT25seTE2Qml0UHRyVGFnLCAiTWF0Y2gtb25seSAxNi1iaXQgcmVndWxhciBleHByZXNz
aW9uIiksIFdURk1vdmUobV9ibVZlY3RvcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQotICAgICAgICAgICAgICAgIGNv
ZGVCbG9jay5zZXQ4Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJy
OEJpdFB0clRhZywgIjgtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKTsKKyAgICAgICAgICAgICAg
ICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwg
WWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSwgV1RGTW92ZShtX2Jt
VmVjdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLnNl
dDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJU
YWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOworICAgICAgICAgICAgICAgIGNvZGVC
bG9jay5zZXQxNkJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjE2
Qml0UHRyVGFnLCAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpLCBXVEZNb3ZlKG1fYm1WZWN0
b3IpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9mYWlsdXJlUmVhc29uKQogICAgICAgICAg
ICAgY29kZUJsb2NrLnNldEZhbGxCYWNrV2l0aEZhaWx1cmVSZWFzb24oKm1fZmFpbHVyZVJlYXNv
bik7CkBAIC00MTk3LDYgKzQ0NTEsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIC8vIFRoZSBy
ZWd1bGFyIGV4cHJlc3Npb24gZXhwcmVzc2VkIGFzIGEgbGluZWFyIHNlcXVlbmNlIG9mIG9wZXJh
dGlvbnMuCiAgICAgVmVjdG9yPFlhcnJPcCwgMTI4PiBtX29wczsKKyAgICBWZWN0b3I8VW5pcXVl
UmVmPEJveWVyTW9vcmVJbmZvPiwgND4gbV9ibUluZm9zOworICAgIFZlY3RvcjxVbmlxdWVSZWY8
Qm95ZXJNb29yZUJ5dGVWZWN0b3I+PiBtX2JtVmVjdG9yOwogCiAgICAgLy8gVGhpcyByZWNvcmRz
IHRoZSBjdXJyZW50IGlucHV0IG9mZnNldCBiZWluZyBhcHBsaWVkIGR1ZSB0byB0aGUgY3VycmVu
dAogICAgIC8vIHNldCBvZiBhbHRlcm5hdGl2ZXMgd2UgYXJlIG5lc3RlZCB3aXRoaW4uIEUuZy4g
d2hlbiBtYXRjaGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCBl
ZjM5YzhiNDA0NTJmZDg1YWFiZTNlMDcyOTY1YzBkZjNkYmIwOWY1Li5iOWU1MDE0Mjc3Nzg3OGJh
NzQ0NWQ5OGY2OWVhMzIyZjFlMTIwYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSB0aGUgVjgg
cHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw5IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRl
ICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiAjZGVmaW5lIFlBUlJfQ0FMTAogCkBAIC01Niw2ICs2MCw0OCBAQCBlbnVtIGNsYXNz
IEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKICAgICBFeGVjdXRhYmxlTWVtb3J5QWxsb2Nh
dGlvbkZhaWx1cmUsCiB9OwogCitjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlQml0bWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1hcFNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXBNYXNrID0gMTI4IC0gMTsKKyAgICB1c2luZyBNYXAgPSBCaXRtYXA8bWFwU2l6
ZT47CisKKyAgICBCb3llck1vb3JlQml0bWFwKCkgPSBkZWZhdWx0OworCisgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgY29uc3QgTWFwJiBtYXAoKSBj
b25zdCB7IHJldHVybiBtX21hcDsgfQorICAgIGJvb2wgaXNNYXNrRWZmZWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01hc2tFZmZlY3RpdmU7IH0KKworICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBt
YXBNYXNrOworICAgICAgICBpZiAocG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNo
YXJhY3RlcikpCisgICAgICAgICAgICBtX2lzTWFza0VmZmVjdGl2ZSA9IHRydWU7CisgICAgICAg
IGlmICghbV9tYXAuZ2V0KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgbV9tYXAuc2V0KHBvc2l0
aW9uKTsKKyAgICAgICAgICAgICsrbV9jb3VudDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0
ZToKKyAgICBNYXAgbV9tYXAgeyB9OworICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAg
Ym9vbCBtX2lzTWFza0VmZmVjdGl2ZSB7IGZhbHNlIH07Cit9OworCitjbGFzcyBCb3llck1vb3Jl
Qnl0ZVZlY3RvciA6IHB1YmxpYyBzdGQ6OmFycmF5PHVpbnQ4X3QsIEJveWVyTW9vcmVCaXRtYXA6
Om1hcFNpemU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBC
b3llck1vb3JlQnl0ZVZlY3Rvcihjb25zdCBCb3llck1vb3JlQml0bWFwOjpNYXAmIG1hcCkKKyAg
ICB7CisgICAgICAgIGZpbGwoMCk7CisgICAgICAgIG1hcC5mb3JFYWNoU2V0Qml0KFsmXSh1bnNp
Z25lZCBpbmRleCkgeworICAgICAgICAgICAgKCp0aGlzKVtpbmRleF0gPSAxOworICAgICAgICB9
KTsKKyAgICB9Cit9OworCiAjaWYgQ1BVKEFSTTY0RSkKIGV4dGVybiAiQyIgRW5jb2RlZE1hdGNo
UmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1h
dGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7CiBleHRlcm4gIkMiIHZvaWQgdm1F
bnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwpAQCAtNzgsMTMgKzEyNCwzNyBAQCBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKIAogICAgIGJvb2wgaGFzOEJpdENvZGUoKSB7IHJldHVybiBtX3JlZjguc2l6
ZSgpOyB9CiAgICAgYm9vbCBoYXMxNkJpdENvZGUoKSB7IHJldHVybiBtX3JlZjE2LnNpemUoKTsg
fQotICAgIHZvaWQgc2V0OEJpdENvZGUoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRy
VGFnPiByZWYpIHsgbV9yZWY4ID0gcmVmOyB9Ci0gICAgdm9pZCBzZXQxNkJpdENvZGUoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gcmVmKSB7IG1fcmVmMTYgPSByZWY7IH0K
KyAgICB2b2lkIHNldDhCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyOEJpdFB0clRh
Zz4gcmVmLCBWZWN0b3I8VW5pcXVlUmVmPEJveWVyTW9vcmVCeXRlVmVjdG9yPj4mJiBtYXBzKQor
ICAgIHsKKyAgICAgICAgbV9yZWY4ID0gcmVmOworICAgICAgICBtX21hcHMucmVzZXJ2ZUNhcGFj
aXR5KG1fbWFwcy5zaXplKCkgKyBtYXBzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG1hcHMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbV9t
YXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQorICAgIHZv
aWQgc2V0MTZCaXRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+IHJl
ZiwgVmVjdG9yPFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7
CisgICAgICAgIG1fcmVmMTYgPSByZWY7CisgICAgICAgIG1fbWFwcy5yZXNlcnZlQ2FwYWNpdHko
bV9tYXBzLnNpemUoKSArIG1hcHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgbWFwcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBtX21hcHMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUobWFwc1tpbmRleF0pKTsKKyAgICB9CiAKICAgICBib29s
IGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4LnNpemUoKTsgfQog
ICAgIGJvb2wgaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkgeyByZXR1cm4gbV9tYXRjaE9ubHkxNi5z
aXplKCk7IH0KLSAgICB2b2lkIHNldDhCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4gbWF0Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5OCA9
IG1hdGNoT25seTsgfQotICAgIHZvaWQgc2V0MTZCaXRDb2RlTWF0Y2hPbmx5KE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+IG1hdGNoT25seSkgeyBtX21hdGNo
T25seTE2ID0gbWF0Y2hPbmx5OyB9CisgICAgdm9pZCBzZXQ4Qml0Q29kZU1hdGNoT25seShNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1hdGNoT25seSwgVmVj
dG9yPFVuaXF1ZVJlZjxCb3llck1vb3JlQnl0ZVZlY3Rvcj4+JiYgbWFwcykKKyAgICB7CisgICAg
ICAgIG1fbWF0Y2hPbmx5OCA9IG1hdGNoT25seTsKKyAgICAgICAgbV9tYXBzLnJlc2VydmVDYXBh
Y2l0eShtX21hcHMuc2l6ZSgpICsgbWFwcy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBtYXBzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgIG1f
bWFwcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBzW2luZGV4XSkpOworICAgIH0KKyAgICB2
b2lkIHNldDE2Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNo
T25seTE2Qml0UHRyVGFnPiBtYXRjaE9ubHksIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJNb29yZUJ5
dGVWZWN0b3I+PiYmIG1hcHMpCisgICAgeworICAgICAgICBtX21hdGNoT25seTE2ID0gbWF0Y2hP
bmx5OworICAgICAgICBtX21hcHMucmVzZXJ2ZUNhcGFjaXR5KG1fbWFwcy5zaXplKCkgKyBtYXBz
LnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1hcHMu
c2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgbV9tYXBzLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKG1hcHNbaW5kZXhdKSk7CisgICAgfQogCiAgICAgYm9vbCB1c2VzUGF0dGVybkNvbnRleHRC
dWZmZXIoKSB7IHJldHVybiBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1ZmZlcjsgfQogI2lmIEVOQUJM
RShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQpAQCAtMTcwLDIwICsyNDAsMzIgQEAg
Y2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgICAgIHJldHVybiBtX3JlZjguc2l6ZSgpICsgbV9y
ZWYxNi5zaXplKCkgKyBtX21hdGNoT25seTguc2l6ZSgpICsgbV9tYXRjaE9ubHkxNi5zaXplKCk7
CiAgICAgfQogCisgICAgLy8gQ29tcGlsZSBhbmQgQ2xlYXIgYXJlIGd1YXJkZWQgYnkgUmVnRXhw
J3MgY2VsbC1sb2NrLiBTbyB0aGVzZSBvcGVyYXRpb25zIHdvcmsgYXRvbWljYWxseS4KICAgICB2
b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIG1fcmVmOCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyOEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9yZWYxNiA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyMTZCaXRQdHJUYWc+KCk7CiAgICAgICAgIG1fbWF0Y2hPbmx5OCA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRj
aE9ubHkxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+
KCk7CisgICAgICAgIG1fbWFwcy5jbGVhcigpOwogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCisgICAgY29uc3QgdWludDhfdCogZmluZFNhbWVWZWN0b3Io
dW5zaWduZWQgaW5kZXgsIEJveWVyTW9vcmVCeXRlVmVjdG9yJiB2ZWN0b3IpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoaW5kZXggPCBtX21hcHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAo
bV9tYXBzW2luZGV4XS5nZXQoKSA9PSB2ZWN0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
bWFwc1tpbmRleF0tPmRhdGEoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRy
VGFnPiBtX3JlZjg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4g
bV9yZWYxNjsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJU
YWc+IG1fbWF0Y2hPbmx5ODsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25s
eTE2Qml0UHRyVGFnPiBtX21hdGNoT25seTE2OworICAgIFZlY3RvcjxVbmlxdWVSZWY8Qm95ZXJN
b29yZUJ5dGVWZWN0b3I+PiBtX21hcHM7CiAgICAgYm9vbCBtX3VzZXNQYXR0ZXJuQ29udGV4dEJ1
ZmZlciB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2Zh
aWx1cmVSZWFzb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKaW5kZXggM2NlNjhmYzFiZDdkMmQwZmYy
OWZiNmVjZTAwYmIxYTVkZmIxMzdiNy4uMzkxNjEyMTE2ZWY4NjZjYjUwNTQ1YzM3NzQyNTJiYThl
ZTQ1MDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCkBAIC0yNjIsMTIgKzI2Miw4IEBAIHVpbnRwdHJf
dCBCaXRWZWN0b3I6Omhhc2hTbG93Q2FzZSgpIGNvbnN0CiAKIHZvaWQgQml0VmVjdG9yOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplKCk7ICsraSkgewotICAgICAgICBpZiAoZ2V0KGkpKQotICAgICAgICAgICAgb3V0LnByaW50
ZigiMSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCItIik7Ci0gICAg
fQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5w
cmludChnZXQoaSkgPyAiMSIgOiAiLSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgK
aW5kZXggOGYxMzI3YTQ3NDEyZmQyYWRkNGVhZjU5YjFmNWFlZTM2ZGZmMWE4Ni4uYzUwMTEwYjVk
ZWExM2NlNGJhNWJhZGEzZTQ5ZWI3MWY1YzFkMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC0xMzAsNiArMTMxLDggQEAgY2xhc3MgQml0bWFw
IGZpbmFsIHsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCB3b3JkcyA9IChiaXRtYXBTaXplICsgd29yZFNpemUgLSAxKSAvIHdv
cmRTaXplOwpAQCAtNTA3LDYgKzUxMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAg
IG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpCaXRtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVS
ZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmluZGV4IGM0ZWUzZGMxMjg3NGYxOThl
MWJmNDUzZjIzN2E5OWNmNDc2NzZkZTQuLjkzNWQwNmM2NjlkZDRjZWU4MTdlMGUzOWMyYzY5ZDlj
MzRkZWEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC00Niw5ICs0Niw5IEBAIFVuaXF1ZVJlZjxUPiBt
YWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
VW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihzdGQ6OnVuaXF1
ZV9wdHI8VD4gcHRyKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1
ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VD4mJiBwdHIpCiB7Ci0gICAgcmV0dXJuIFVuaXF1ZVJlZjxU
PigqcHRyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPihXVEZNb3ZlKHB0cikp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBVbmlx
dWVSZWYgewogICAgICAgICBBU1NFUlQobV9yZWYpOwogICAgIH0KIAorICAgIFQqIHB0cigpIFJF
VFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAg
IFQqIHB0cigpIGNvbnN0IFJFVFVSTlNfTk9OTlVMTCB7IEFTU0VSVChtX3JlZik7IHJldHVybiBt
X3JlZi5nZXQoKTsgfQorCiAgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1f
cmVmOyB9CiAgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
Km1fcmVmOyB9CiAKQEAgLTgzLDkgKzg2LDE1IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAKIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJl
ZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4pOwotICAg
IHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZkZyb21O
b25OdWxsVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxVPik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VT4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIo
c3RkOjp1bmlxdWVfcHRyPFU+JiYpOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFz
cyBVbmlxdWVSZWY7CiAKKyAgICBleHBsaWNpdCBVbmlxdWVSZWYoc3RkOjp1bmlxdWVfcHRyPFQ+
JiYgcHRyKQorICAgICAgICA6IG1fcmVmKFdURk1vdmUocHRyKSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3JlZik7CisgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOwogfTsK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBkYWFjZjk3Zjk1OGM4NWRjOWY1MmQ0YzJlMmUyOGUzMjdiODg4MWVkLi43MTM2ZTdmMzJmZGMz
NjU4Njc3YTRlNDMwZTQ4ZTMxNGRhYjViNWNlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA3LTI4ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gWWFyciBz
aG91bGQgcGVyZm9ybSBCb3llck1vb3JlIHNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvanF1ZXJ5LXRvZG9tdmMt
cmVnZXhwLmpzOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJh
Y3Rlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3Jl
Z2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLWJpdHZlY3Rvci1yZXVzZS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2Vh
cmNoLWNoYXJhY3Rlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICog
c3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLW1hcC5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisKIDIwMjEtMDctMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgogCiAgICAgICAgIFBhcnRseSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBl
LntjYWxsZXIsYXJndW1lbnRzfSByZWZsZWN0aW9uIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9qcXVlcnktdG9kb212Yy1yZWdleHAuanMKaW5kZXggYWYzYTQyNDU5N2Ux
NzM5ZDJjZGEzZDAzM2NkMjU5NGRkMjQ3OGU2MS4uNGYzMGFlZTg4NzM1NWEzN2YyMWU4NjVlNmYx
NDc3ZDE4MmI1NzFmYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanF1ZXJ5
LXRvZG9tdmMtcmVnZXhwLmpzCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pxdWVyeS10
b2RvbXZjLXJlZ2V4cC5qcwpAQCAtODQyMDksNyArODQyMDksOCBAQCBmdW5jdGlvbiB0ZXN0KHJl
Z0V4cHMsIHN0cmluZ3MpIHsKICAgICByZWdFeHAkMTYubGFzdEluZGV4ID0gMDsKICAgICByZXN1
bHRzID0gcmVnRXhwJDE2LmV4ZWMoc3RyaW5nJDIxNSk7CiB9Ci1ub0lubGluZSh0ZXN0KTsKK2lm
ICh0eXBlb2Ygbm9JbmxpbmUgIT09ICJ1bmRlZmluZWQiKQorICAgIG5vSW5saW5lKHRlc3QpOwog
cmVnRXhwcy5wdXNoKC9hdm9pZCBjb25zdGFudCBmb2xkaW5nL2dpKTsKIHN0cmluZ3MucHVzaCgv
YXZvaWQgY29uc3RhbnQgZm9sZGluZy9naSk7CiBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kp
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25nLWNoYXJh
Y3Rlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctY2hhcmFjdGVy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgzM2UwZDY4MGQ2YTFlNzE0MDE1YzVhMDVmMjRmYjY3OTIxYzU4ZTIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtLWJtLXNlYXJjaC1sb25n
LWNoYXJhY3Rlci5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC9h
YWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFh
YWFiYmJiL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRC
ZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRk
ZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRmZmZmZiIpLCBmYWxzZSk7CisgICAgc2hv
dWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWFh
YWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWJi
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJi
Y2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkYWFhYWJiYmJhYWFhYmJiYmFh
YWFiYmJiYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJiYmZmZmZmIiksIHRy
dWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwgImFiY2RlZmdhYmNkZWZnYWJj
ZGVmZ2FiY2RlZmdhYmNkZWZnYWFhYWJiYmJhYWFhYmJiYmFhYWFiYmJiYWFhYWJiYmJhYWFhYmJi
YmFhYWFiYmJiYWFhYWJiYmJhYWJiYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FhYWFiYmJiY2NjY2RkZGRhYWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2Nk
ZGRkIik7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgImZmZmZmIik7CisgICAg
c2hvdWxkQmUocmVnZXhwLnRlc3QoImFiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FhYWFiYmJi
Y2NjY2RkZGRhYWFhYmJiYmNjY2NkZGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIiksIGZhbHNlKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFw
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLS1ibS1zZWFyY2gtbG9uZy1tYXAuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjVjZmFmNmYyYWQ1YzJlZjZmNDljOWI3ZDdiYmJlMjM2NDA2NzAyYQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC0tYm0tc2VhcmNoLWxvbmctbWFwLmpzCkBA
IC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL2FhYWFiYmJiY2NjY2RkZGRh
YWFhYmJiYmNjY2NkZGRhYWFhYmJiYmNjY2NkZGRkL2k7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZGFhYWFiYmJiY2NjY2RkZGRm
ZmZmZiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICJhYmNkZWZn
YWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdh
YmNkZWZnYWJjZGVmZ2FiY2RlZmciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0
LCAiZmZmZmYiKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdCgiYWJjZGVmZ2FiY2RlZmdhYmNk
ZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2RlZmdhYmNkZWZnYWJjZGVmZ2FiY2Rl
ZmdhYmNkZWZnYWFhYWJiYmJjY2NjZGRkZGFhYWFiYmJiY2NjY2RkZmZmZmZmZmZmZmZmZmZmZmZm
ZmZmZmYiKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJp
dHZlY3Rvci1yZXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2Uu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2UzMWVmMmZhNThjNzhmNDBlMjYxMTMwYmIzNWFkNTQ2MWExOGYzZAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1iaXR2ZWN0b3ItcmV1c2Uu
anMKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgcmVnZXhwID0gL3NjcmlwdC87Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUoL3NjcmlwdC8udGVzdCgi
dGVzdHRlc3RzY3JpcHQiKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0
LCAidGVzdHRlc3QiKTsKKyAgICBzaG91bGRCZSgvc2NyaXB0Ly50ZXN0KCR2bS5tYWtlMTZCaXRT
dHJpbmdJZlBvc3NpYmxlKCJ0ZXN0dGVzdHNjcmlwdCIpKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
UmVnRXhwLmxlZnRDb250ZXh0LCAidGVzdHRlc3QiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcyBiL0pTVGVzdHMv
c3RyZXNzL3JlZ2V4cC1ub24tYXNjaWktYm0tc2VhcmNoLWNoYXJhY3Rlci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYmE2NzRmOTIzN2EwYTQyOTNkNzFlMGRkZjJjOTlhYjVmOWE2OGIwCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtY2hhcmFjdGVy
LmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL+S7iuaXpS9pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRl
c3QoIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOBoOecoOOBhOOAgiIp
LCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLmmKjml6XpgYXjgY/j
gavlr53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCAi44Gv
44G+44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoIkJlY2F1c2UgSSB3
ZW50IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHkiKSwgZmFsc2UpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gt
bWFwLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLW5vbi1hc2NpaS1ibS1zZWFyY2gtbWFwLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMyMmE4ZWVlMTFhM2UzOTEwYzE2YzNiMTAwNTkwZTkzZTMxNjFkNTQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtbm9uLWFzY2lpLWJtLXNlYXJj
aC1tYXAuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAv5LuK5pel
fOaYjuaXpS9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxk
QmUocmVnZXhwLnRlc3QoIuaYqOaXpemBheOBj+OBq+WvneOBn+OBruOBp+S7iuaXpeOBr+OBvuOB
oOecoOOBhOOAgiIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsICLm
mKjml6XpgYXjgY/jgavlr53jgZ/jga7jgaciKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRD
b250ZXh0LCAi44Gv44G+44Gg55yg44GE44CCIik7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3Qo
IkJlY2F1c2UgSSB3ZW50IHRvIGJlZCBsYXRlIGxhc3QgbmlnaHQsIEknbSBzdGlsbCBzbGVlcHki
KSwgZmFsc2UpOworfQo=
</data>
<flag name="review"
          id="456996"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>