<?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>228687</bug_id>
          
          <creation_ts>2021-08-01 04:33:31 -0700</creation_ts>
          <short_desc>[JSC] Use loadPair / storePair in YarrJIT</short_desc>
          <delta_ts>2021-08-02 19:48:31 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781132</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 04:33:31 -0700</bug_when>
    <thetext>[JSC] Use loadPair / storePair in YarrJIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781133</commentid>
    <comment_count>1</comment_count>
      <attachid>434716</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 04:37:12 -0700</bug_when>
    <thetext>Created attachment 434716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781134</commentid>
    <comment_count>2</comment_count>
      <attachid>434717</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 04:47:16 -0700</bug_when>
    <thetext>Created attachment 434717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781135</commentid>
    <comment_count>3</comment_count>
      <attachid>434718</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 04:50:56 -0700</bug_when>
    <thetext>Created attachment 434718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781136</commentid>
    <comment_count>4</comment_count>
      <attachid>434719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 05:07:25 -0700</bug_when>
    <thetext>Created attachment 434719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781152</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-01 11:01:53 -0700</bug_when>
    <thetext>The test failures look real.  Can you check them please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781154</commentid>
    <comment_count>6</comment_count>
      <attachid>434725</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 12:41:09 -0700</bug_when>
    <thetext>Created attachment 434725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781155</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 12:41:18 -0700</bug_when>
    <thetext>Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781188</commentid>
    <comment_count>8</comment_count>
      <attachid>434734</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 21:20:57 -0700</bug_when>
    <thetext>Created attachment 434734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781189</commentid>
    <comment_count>9</comment_count>
      <attachid>434735</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 21:26:10 -0700</bug_when>
    <thetext>Created attachment 434735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781194</commentid>
    <comment_count>10</comment_count>
      <attachid>434738</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 22:18:35 -0700</bug_when>
    <thetext>Created attachment 434738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781196</commentid>
    <comment_count>11</comment_count>
      <attachid>434739</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 22:23:18 -0700</bug_when>
    <thetext>Created attachment 434739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781197</commentid>
    <comment_count>12</comment_count>
      <attachid>434740</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-01 22:28:33 -0700</bug_when>
    <thetext>Created attachment 434740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781199</commentid>
    <comment_count>13</comment_count>
      <attachid>434741</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 00:26:40 -0700</bug_when>
    <thetext>Created attachment 434741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781201</commentid>
    <comment_count>14</comment_count>
      <attachid>434742</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 00:37:23 -0700</bug_when>
    <thetext>Created attachment 434742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781363</commentid>
    <comment_count>15</comment_count>
      <attachid>434742</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-02 12:59:30 -0700</bug_when>
    <thetext>Comment on attachment 434742
Patch

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

r=me with suggestions.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1484
&gt; +        if (offset.m_value &lt;= 252 &amp;&amp; offset.m_value &gt;= -256) {

Let&apos;s use ARM64Assembler::isValidLDPImm&lt;32&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1505
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1526
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1547
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1883
&gt; +        if (offset.m_value &lt;= 252 &amp;&amp; offset.m_value &gt;= -256) {

Let&apos;s use ARM64Assembler::isValidSTPImm&lt;32&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1898
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1913
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1928
&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {

Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:877
&gt; +        // FIXME: ldrd can be used if dest1 and dest2 are consecutive pair of registers.

ARMv7 can also use the ldm (load multiple) instruction.  Can you add that to the comment?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:993
&gt; +        // FIXME: strd can be used if src1 and src2 are consecutive pair of registers.

Can you add a comment here that ARMv7 can also use the stm (store multiple) instruction?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:302
&gt;          static ptrdiff_t beginOffset()

Can this be constexpr?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:307
&gt;          static ptrdiff_t matchAmountOffset()

Can this be constexpr?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:382
&gt; +        ASSERT(ParenContext::beginOffset() + 4 == ParenContext::matchAmountOffset());

Can this be a static_assert?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:388
&gt; +        ASSERT(ParenContext::beginOffset() + 4 == ParenContext::matchAmountOffset());

Can this be a static_assert?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:401
&gt; -                loadPtr(Address(output, (subpattern &lt;&lt; 1) * sizeof(unsigned)), tempReg);
&gt; -                storePtr(tempReg, Address(parenContextReg, ParenContext::subpatternOffset(subpattern)));
&gt; +                load64(Address(output, (subpattern &lt;&lt; 1) * sizeof(unsigned)), tempReg);
&gt; +                store64(tempReg, Address(parenContextReg, ParenContext::subpatternOffset(subpattern)));

How can this be correct on 32-bit platforms?  There&apos;s no load64 and store64, right?  Is this code compiled out on 32-bit?

Yep, looks like this is disabled on 32-bit:

#if ENABLE(YARR_JIT) &amp;&amp; (CPU(ARM64) || (CPU(X86_64) &amp;&amp; !OS(WINDOWS)))
#define ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS 1
#endif

Can you add a `static_assert(is64Bit())` here so that 32-bit doesn&apos;t fail silently if they ever enable this?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:422
&gt; -                loadPtr(Address(parenContextReg, ParenContext::subpatternOffset(subpattern)), tempReg);
&gt; -                storePtr(tempReg, Address(output, (subpattern &lt;&lt; 1) * sizeof(unsigned)));
&gt; +                load64(Address(parenContextReg, ParenContext::subpatternOffset(subpattern)), tempReg);
&gt; +                store64(tempReg, Address(output, (subpattern &lt;&lt; 1) * sizeof(unsigned)));

Ditto:  can you add a `static_assert(is64Bit())` here so that 32-bit doesn&apos;t fail silently if they ever enable this?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:4062
&gt; +    void loadSubPatterns(RegisterID outputGPR, unsigned subpatternId, RegisterID startIndexGPR, RegisterID endIndexOrLenGPR)

Maybe this should be `loadSubPattern` instead of `loadSubPatterns`.  Each pair of int32s contain data for only 1 subpattern, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781417</commentid>
    <comment_count>16</comment_count>
      <attachid>434742</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 15:15:47 -0700</bug_when>
    <thetext>Comment on attachment 434742
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1484
&gt;&gt; +        if (offset.m_value &lt;= 252 &amp;&amp; offset.m_value &gt;= -256) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidLDPImm&lt;32&gt;() instead.

Sounds great! Fixed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1505
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1526
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1547
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidLDPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1883
&gt;&gt; +        if (offset.m_value &lt;= 252 &amp;&amp; offset.m_value &gt;= -256) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidSTPImm&lt;32&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1898
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1913
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1928
&gt;&gt; +        if (offset.m_value &lt;= 504 &amp;&amp; offset.m_value &gt;= -512) {
&gt; 
&gt; Let&apos;s use ARM64Assembler::isValidSTPImm&lt;64&gt;() instead.

Done.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:877
&gt;&gt; +        // FIXME: ldrd can be used if dest1 and dest2 are consecutive pair of registers.
&gt; 
&gt; ARMv7 can also use the ldm (load multiple) instruction.  Can you add that to the comment?

Added.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:993
&gt;&gt; +        // FIXME: strd can be used if src1 and src2 are consecutive pair of registers.
&gt; 
&gt; Can you add a comment here that ARMv7 can also use the stm (store multiple) instruction?

Added.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:302
&gt;&gt;          static ptrdiff_t beginOffset()
&gt; 
&gt; Can this be constexpr?

Changed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:307
&gt;&gt;          static ptrdiff_t matchAmountOffset()
&gt; 
&gt; Can this be constexpr?

Changed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:382
&gt;&gt; +        ASSERT(ParenContext::beginOffset() + 4 == ParenContext::matchAmountOffset());
&gt; 
&gt; Can this be a static_assert?

Changed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:388
&gt;&gt; +        ASSERT(ParenContext::beginOffset() + 4 == ParenContext::matchAmountOffset());
&gt; 
&gt; Can this be a static_assert?

Changed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:401
&gt;&gt; +                store64(tempReg, Address(parenContextReg, ParenContext::subpatternOffset(subpattern)));
&gt; 
&gt; How can this be correct on 32-bit platforms?  There&apos;s no load64 and store64, right?  Is this code compiled out on 32-bit?
&gt; 
&gt; Yep, looks like this is disabled on 32-bit:
&gt; 
&gt; #if ENABLE(YARR_JIT) &amp;&amp; (CPU(ARM64) || (CPU(X86_64) &amp;&amp; !OS(WINDOWS)))
&gt; #define ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS 1
&gt; #endif
&gt; 
&gt; Can you add a `static_assert(is64Bit())` here so that 32-bit doesn&apos;t fail silently if they ever enable this?

static_assert sounds good! Added.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:422
&gt;&gt; +                store64(tempReg, Address(output, (subpattern &lt;&lt; 1) * sizeof(unsigned)));
&gt; 
&gt; Ditto:  can you add a `static_assert(is64Bit())` here so that 32-bit doesn&apos;t fail silently if they ever enable this?

Added.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:4062
&gt;&gt; +    void loadSubPatterns(RegisterID outputGPR, unsigned subpatternId, RegisterID startIndexGPR, RegisterID endIndexOrLenGPR)
&gt; 
&gt; Maybe this should be `loadSubPattern` instead of `loadSubPatterns`.  Each pair of int32s contain data for only 1 subpattern, right?

Right. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781419</commentid>
    <comment_count>17</comment_count>
      <attachid>434794</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 15:19:47 -0700</bug_when>
    <thetext>Created attachment 434794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781503</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-02 18:45:17 -0700</bug_when>
    <thetext>Committed r280578 (240200@main): &lt;https://commits.webkit.org/240200@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434794.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781504</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-02 18:46:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/81439528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434716</attachid>
            <date>2021-08-01 04:37:12 -0700</date>
            <delta_ts>2021-08-01 04:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801043712.patch</filename>
            <type>text/plain</type>
            <size>17639</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li43MmE1OWRiYTQ3ZGYxNzg3
MjliNDc0ZDMwZmRlN2YyN2U3YmQ5YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6
CisKIDIwMjEtMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJ
VF9VTklDT0RFX0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGU2YmZiZWM2MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLmU4Yjk2OWZhYzYxNWRl
ZDUyZTNhNmFlZTBkYWQyZmM0NzZhMTA3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMs
MjcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQg
ZGVzdDIpCisgICAgeworICAgICAgICBBU1NFUlQoIShkZXN0MSA9PSBkZXN0MiAmJiBkZXN0MSA9
PSBzcmMpKTsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92
YWx1ZSA+PSAtMjU2KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8MzI+KGRlc3QxLCBk
ZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVz
dDIpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKICAgICAgICAg
bG9hZFBhaXI2NChzcmMsIFRydXN0ZWRJbW0zMigwKSwgZGVzdDEsIGRlc3QyKTsKQEAgLTE0ODAs
NyArMTUwMSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVy
SUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0
Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVCghKGRlc3QxID09IGRlc3Qy
ICYmIGRlc3QxID09IHNyYykpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYm
IG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2
ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBs
b2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAg
ICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVl
KSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1
ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjRX
aXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJl
Z2lzdGVySUQgZGVzdDIpCkBAIC0xNDkwLDcgKzE1MjIsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAg
ICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjLCBU
cnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCEoZGVzdDEgPT0gZGVzdDIgJiYgZGVzdDEg
PT0gc3JjKSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1f
dmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEs
IGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkNjQoQWRk
cmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEp
OworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBk
ZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTUwMCw3
ICsxNTQzLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lz
dGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBk
ZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8
PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3Moc3JjLCBv
ZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CiAgICAgfQogCiAgICAgdm9pZCBhYm9ydFdpdGhS
ZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQpAQCAtMTgyNCw2ICsxODcyLDIxIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmVQYWly
MzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0ZWRJbW0zMigw
KSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lz
dGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAt
MjU2KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8MzI+KHNyYzEsIHNyYzIsIGRlc3Qs
IG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAg
c3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0K
KwogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjY0KHNyYzEsIHNyYzIs
IGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CkBAIC0xODMxLDcgKzE4OTQsMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQg
c3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7
CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0g
LTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0
LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgc3RvcmU2NChzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAg
IHN0b3JlNjQoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9
CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODQxLDcgKzE5MDks
MTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3Jh
bEFjY2VzcyhSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0
LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2
ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0
Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFk
ZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRy
ZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQ
YWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QpCkBAIC0xODUxLDcgKzE5MjQsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9y
ZVBhaXI2NChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQg
ZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0
cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zm
c2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlRG91YmxlKHNy
YzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmVEb3VibGUo
c3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2
b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBjY2E3NDgyYzg5MDhlMDAxMzlk
MzE2ZTgxNzZhZDdjMmVmNWM4YWFlLi40MWZkYzgxMDViZjgwZmYzOGFhN2EwNGMzMjU0ZWI1ODM3
NGE1YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMjc4LDgg
KzI3OCwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHN0cnVjdCBQYXJlbkNvbnRleHQgewog
ICAgICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0KiBuZXh0OwotICAgICAgICB1aW50MzJfdCBiZWdp
bjsKLSAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIHN0cnVjdCBCZWdpbkFu
ZE1hdGNoQW1vdW50IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGJlZ2luOworICAgICAgICAgICAg
dWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIH0gYmVnaW5BbmRNYXRjaEFtb3VudDsKICAg
ICAgICAgdWludHB0cl90IHJldHVybkFkZHJlc3M7CiAgICAgICAgIHN0cnVjdCBTdWJwYXR0ZXJu
cyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydDsKQEAgLTI5OSwxMiArMzAxLDEyIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgYmVnaW5PZmZzZXQoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdp
bik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFuZE1h
dGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIGJlZ2luKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF0Y2hBbW91bnRPZmZzZXQoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBtYXRjaEFt
b3VudCk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFu
ZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIG1hdGNoQW1vdW50
KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuQWRkcmVzc09m
ZnNldCgpCkBAIC0zNzQsMTcgKzM3NiwzOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbW92
ZShoZWFkUHRyUmVnaXN0ZXIsIGZyZWVsaXN0UmVnaXN0ZXIpOwogICAgIH0KIAorCisgICAgdm9p
ZCBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29udGV4dChSZWdpc3RlcklEIGJlZ2lu
R1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSLCBSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQ
UikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0Ojpi
ZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOwor
ICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQUiwgbWF0Y2hBbW91bnRHUFIsIHBhcmVuQ29udGV4
dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworI2Vsc2UK
KyAgICAgICAgc3RvcmUzMihiZWdpbkdQUiwgQWRkcmVzcyhwYXJlbkNvbnRleHRHUFIsIFBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgICAgICBzdG9yZTMyKG1hdGNoQW1vdW50R1BS
LCBBZGRyZXNzKHBhcmVuQ29udGV4dEdQUiwgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNl
dCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50
RnJvbVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0ZXJJRCBi
ZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0
KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJl
bkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBsb2FkUGFpcjMyKHBhcmVu
Q29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJl
Z2luR1BSLCBtYXRjaEFtb3VudEdQUik7CisjZWxzZQorICAgICAgICBsb2FkMzIoQWRkcmVzcyhw
YXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSKTsK
KyAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0R1BSLCBQYXJlbkNvbnRleHQ6Om1h
dGNoQW1vdW50T2Zmc2V0KCkpLCBtYXRjaEFtb3VudEdQUik7CisjZW5kaWYKKyAgICB9CisKICAg
ICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lz
dGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3Vi
cGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAgIHsKLSAg
ICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4
dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5CYXNl
RnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRl
eCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29u
dGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7CisgICAgICAgIHN0
b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0KGluZGV4LCB0ZW1wUmVnLCBwYXJl
bkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5CYXNlRnJhbWVM
b2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0luZGV4KCks
IHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4
dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpKTsKICAgICAgICAgaWYg
KG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBz
dWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAg
ICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1
bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBB
ZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1
YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Mob3V0cHV0LCAoc3Vi
cGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAg
ICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRl
eHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKICAgICAgICAgICAgICAgICBjbGVh
clN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMzk3LDE2ICs0MjEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICB2b2lkIHJlc3RvcmVQ
YXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQgdGVtcFJl
ZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybiwgdW5z
aWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgbG9hZDMy
KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpLCBp
bmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29udGV4dChw
YXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0ZyYW1lKGlu
ZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVz
ZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVuQ29udGV4dFJl
ZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAg
IHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJuQWRkcmVzc09m
ZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0
ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnJldHVybkFk
ZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1v
ZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJw
YXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBz
dWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocGFyZW5Db250
ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1w
UmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKG91dHB1dCwg
KHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CisgICAgICAgICAgICAgICAg
bG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5P
ZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9yZTY0KHRl
bXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25l
ZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdWJwYXR0ZXJuQmFzZUZy
YW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM7
CkBAIC0xMjc1LDggKzEyOTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgSnVtcExpc3Qg
bWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJU
eXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1
YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAg
ICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNp
emVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91
dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVtcCk7CiAK
ICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3NmdWwgd2l0aG91dCBjb25z
dW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBR
dWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IDEp
IHsKQEAgLTEzMDcsOCArMTMyOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsKICAgICAgICAgICAgICAg
ICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24g
KyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAg
ICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVh
bnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkluZGV4KTsKLSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3Vi
cGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAg
ICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpLCBw
YXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKICAgICAgICAgICAgICAgICBqdW1wKG91dGVyTG9v
cCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXRjaGVzLmxpbmsodGhpcyk7CkBAIC0x
MzMxLDggKzEzNTIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIHN0b3JlVG9GcmFt
ZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0lu
Zm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAgICAgICAgICAgaWYgKHRl
cm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAgICAgICAgICAgICAg
ICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhD
b3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0
cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuSW5kZXgpOwot
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSAr
IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICBsb2FkU3ViUGF0
dGVybnMob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5U
ZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFtZSBmb3Ig
cmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVy
ZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM3Myw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3Vi
cGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAg
ICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSksIHBhdHRl
cm5JbmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBtYXRjaCBp
cyBzdWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAgICAgIEp1
bXAgemVyb0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIFRydXN0ZWRJbW0zMigtMSksIHBh
dHRlcm5JbmRleCk7CkBAIC0xNDA4LDggKzE0MjcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNr
SW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSwgbWF0Y2hBbW91bnQpOwogICAg
ICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBtYXRjaEFtb3VudCkp
OwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwg
MSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5TdGFydEluZGV4KTsKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQp
KSwgcGF0dGVybkVuZEluZGV4T3JMZW4pOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91
dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJ
bmRleE9yTGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJu
RW5kSW5kZXhPckxlbik7CiAgICAgICAgICAgICBzdWIzMihwYXR0ZXJuRW5kSW5kZXhPckxlbiwg
aW5kZXgpOwogCkBAIC00MDUwLDYgKzQwNjgsMTYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYK
ICAgICB9CiAKKyAgICB2b2lkIGxvYWRTdWJQYXR0ZXJucyhSZWdpc3RlcklEIG91dHB1dEdQUiwg
dW5zaWduZWQgc3VicGF0dGVybklkLCBSZWdpc3RlcklEIHN0YXJ0SW5kZXhHUFIsIFJlZ2lzdGVy
SUQgZW5kSW5kZXhPckxlbkdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBsb2Fk
UGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXpl
b2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4T3JMZW5HUFIpOworI2Vsc2UKKyAgICAg
ICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0R1BSLCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9m
KGludCkpLCBzdGFydEluZGV4R1BSKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0R1BS
LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBlbmRJbmRleE9yTGVu
R1BSKTsKKyNlbmRpZgorICAgIH0KKwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZt
LCBZYXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJs
b2NrJiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxl
TW9kZSkKICAgICAgICAgOiBtX3ZtKHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434717</attachid>
            <date>2021-08-01 04:47:16 -0700</date>
            <delta_ts>2021-08-01 04:50:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801044716.patch</filename>
            <type>text/plain</type>
            <size>18205</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li43MmE1OWRiYTQ3ZGYxNzg3
MjliNDc0ZDMwZmRlN2YyN2U3YmQ5YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6
CisKIDIwMjEtMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJ
VF9VTklDT0RFX0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGU2YmZiZWM2MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLjA3N2FjODQxYTk4MWM5
N2I0ZDRkYmI0MGM0YWU5NDc2NTFiMjU1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMs
MjkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQg
ZGVzdDIpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNl
dC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDwzMj4oZGVz
dDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZGVzdDEgPT0gZGVzdDIpIHsKKyAgICAgICAgICAgIC8vIE5v
dCBzdXJlIHdoYXQgaXMgdGhlIHJpZ2h0IGJlaGF2aW9yIGluIHRoaXMgY2FzZS4gTG9hZGluZyB0
aGUgc2Vjb25kIG9uZSB0byBkZXN0IGZvciBub3cuCisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfSBlbHNlIGlmIChz
cmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWlyNjQoc3JjLCBU
cnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDMsMjEgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1f
dmFsdWUpOworICAgICAgICBBU1NFUlQoIShkZXN0MSA9PSBkZXN0MiAmJiBkZXN0MSA9PSBzcmMp
KTsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+
PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwg
c3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGRlc3QxID09IGRlc3QyKSB7CisgICAgICAgICAgICAvLyBOb3Qgc3VyZSB3aGF0
IGlzIHRoZSByaWdodCBiZWhhdmlvciBpbiB0aGlzIGNhc2UuIExvYWRpbmcgdGhlIHNlY29uZCBv
bmUgdG8gZGVzdCBmb3Igbm93LgorICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjID09IGRlc3Qx
KSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCks
IGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUp
LCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhz
cmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
c3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICB2b2lkIGxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCkBAIC0xNDkwLDcgKzE1MjcsMjEgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
PEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNz
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVz
dDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCEoZGVzdDEg
PT0gZGVzdDIgJiYgZGVzdDEgPT0gc3JjKSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8
PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVzdDEgPT0gZGVzdDIpIHsKKyAg
ICAgICAgICAgIC8vIE5vdCBzdXJlIHdoYXQgaXMgdGhlIHJpZ2h0IGJlaGF2aW9yIGluIHRoaXMg
Y2FzZS4gTG9hZGluZyB0aGUgc2Vjb25kIG9uZSB0byBkZXN0IGZvciBub3cuCisgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNz
KHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDY0KEFk
ZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7Cisg
ICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3Qy
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVzdDIpCkBAIC0xNTAwLDcgKzE1
NTEsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBGUFJlZ2lzdGVySUQgZGVzdDEsIEZQUmVnaXN0ZXJJ
RCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3Qy
LCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUw
NCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbG9hZERvdWJsZShBZGRyZXNzKHNyYywgb2Zmc2V0
Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKICAgICB9CiAKICAgICB2b2lkIGFib3J0V2l0aFJlYXNv
bihBYm9ydFJlYXNvbiByZWFzb24pCkBAIC0xODI0LDYgKzE4ODAsMjEgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihS
ZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsK
KyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAg
ICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNldC5tX3ZhbHVlID49IC0yNTYp
IHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDwzMj4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0
b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9y
ZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAg
ICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3RvcmVQYWlyNjQoc3JjMSwgc3JjMiwgZGVz
dCwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTE4MzEsNyArMTkwMiwxMiBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMy
LCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEy
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBz
dG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3Rv
cmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NDEsNyArMTkxNywxMiBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNj
ZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0Pihz
cmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92
YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3RucDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVz
cyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3Mo
ZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2
NChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTE4NTEsNyArMTkzMiwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFp
cjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0
LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0
PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQu
bV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVEb3VibGUoc3JjMSwg
QWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMy
LCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQg
c3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGNjYTc0ODJjODkwOGUwMDEzOWQzMTZl
ODE3NmFkN2MyZWY1YzhhYWUuLjQxZmRjODEwNWJmODBmZjM4YWE3YTA0YzMyNTRlYjU4Mzc0YTVh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0yNzgsOCArMjc4
LDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgc3RydWN0IFBhcmVuQ29udGV4dCB7CiAgICAg
ICAgIHN0cnVjdCBQYXJlbkNvbnRleHQqIG5leHQ7Ci0gICAgICAgIHVpbnQzMl90IGJlZ2luOwot
ICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3VudDsKKyAgICAgICAgc3RydWN0IEJlZ2luQW5kTWF0
Y2hBbW91bnQgeworICAgICAgICAgICAgdWludDMyX3QgYmVnaW47CisgICAgICAgICAgICB1aW50
MzJfdCBtYXRjaEFtb3VudDsKKyAgICAgICAgfSBiZWdpbkFuZE1hdGNoQW1vdW50OwogICAgICAg
ICB1aW50cHRyX3QgcmV0dXJuQWRkcmVzczsKICAgICAgICAgc3RydWN0IFN1YnBhdHRlcm5zIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0OwpAQCAtMjk5LDEyICszMDEsMTIgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBiZWdpbk9mZnNldCgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luKTsK
KyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hB
bW91bnQpICsgb2Zmc2V0b2YoQmVnaW5BbmRNYXRjaEFtb3VudCwgYmVnaW4pOwogICAgICAgICB9
CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXRjaEFtb3VudE9mZnNldCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIG1hdGNoQW1vdW50
KTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0
Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5BbmRNYXRjaEFtb3VudCwgbWF0Y2hBbW91bnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCByZXR1cm5BZGRyZXNzT2Zmc2V0
KCkKQEAgLTM3NCwxNyArMzc2LDM5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBtb3ZlKGhl
YWRQdHJSZWdpc3RlciwgZnJlZWxpc3RSZWdpc3Rlcik7CiAgICAgfQogCisKKyAgICB2b2lkIHN0
b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgYmVnaW5HUFIs
IFJlZ2lzdGVySUQgbWF0Y2hBbW91bnRHUFIsIFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSKQor
ICAgIHsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIEFTU0VSVChQYXJlbkNvbnRleHQ6OmJlZ2lu
T2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQoKSk7CisgICAg
ICAgIHN0b3JlUGFpcjMyKGJlZ2luR1BSLCBtYXRjaEFtb3VudEdQUiwgcGFyZW5Db250ZXh0R1BS
LCBUcnVzdGVkSW1tMzIoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSk7CisjZWxzZQorICAg
ICAgICBzdG9yZTMyKGJlZ2luR1BSLCBBZGRyZXNzKHBhcmVuQ29udGV4dEdQUiwgUGFyZW5Db250
ZXh0OjpiZWdpbk9mZnNldCgpKSk7CisgICAgICAgIHN0b3JlMzIobWF0Y2hBbW91bnRHUFIsIEFk
ZHJlc3MocGFyZW5Db250ZXh0R1BSLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgbG9hZEJlZ2luQW5kTWF0Y2hBbW91bnRGcm9t
UGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSLCBSZWdpc3RlcklEIGJlZ2lu
R1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSKQorICAgIHsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgICAgIEFTU0VSVChQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29u
dGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQoKSk7CisgICAgICAgIGxvYWRQYWlyMzIocGFyZW5Db250
ZXh0R1BSLCBUcnVzdGVkSW1tMzIoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSwgYmVnaW5H
UFIsIG1hdGNoQW1vdW50R1BSKTsKKyNlbHNlCisgICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVu
Q29udGV4dEdQUiwgUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSwgYmVnaW5HUFIpOworICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6bWF0Y2hB
bW91bnRPZmZzZXQoKSksIG1hdGNoQW1vdW50R1BSKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZv
aWQgc2F2ZVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dFJlZywgUmVnaXN0ZXJJ
RCB0ZW1wUmVnLCB1bnNpZ25lZCBmaXJzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIGxhc3RTdWJwYXR0
ZXJuLCB1bnNpZ25lZCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24pCiAgICAgewotICAgICAg
ICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0Ojpi
ZWdpbk9mZnNldCgpKSk7CiAgICAgICAgIGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCks
IHRlbXBSZWcpOwotICAgICAgICBzdG9yZTMyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0
UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVC
ZWdpbkFuZE1hdGNoQW1vdW50VG9QYXJlbkNvbnRleHQoaW5kZXgsIHRlbXBSZWcsIHBhcmVuQ29u
dGV4dFJlZyk7CiAgICAgICAgIGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0
aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSwgdGVt
cFJlZyk7CiAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVn
LCBQYXJlbkNvbnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSkpOwogICAgICAgICBpZiAobV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIHN1YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBh
dHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2ln
bmVkKSksIHRlbXBSZWcpOwotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJl
c3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0
dGVybikpKTsKKyAgICAgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0
ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSksIHRlbXBSZWcpOworICAgICAgICAgICAgICAg
IHN0b3JlNjQodGVtcFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6
c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkpOwogICAgICAgICAgICAgICAgIGNsZWFyU3Vi
cGF0dGVyblN0YXJ0KHN1YnBhdHRlcm4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0z
OTcsMTYgKzQyMSwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHZvaWQgcmVzdG9yZVBhcmVu
Q29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1wUmVnLCB1
bnNpZ25lZCBmaXJzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24pCiAgICAgewotICAgICAgICBsb2FkMzIoQWRk
cmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGluZGV4
KTsKKyAgICAgICAgbG9hZEJlZ2luQW5kTWF0Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0KHBhcmVu
Q29udGV4dFJlZywgaW5kZXgsIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUoaW5kZXgs
IHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6
YmVnaW5JbmRleCgpKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQ
YXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAgc3Rv
cmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFj
a0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0
KCkpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBhdHRlcm5C
YXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVz
c0luZGV4KCkpOwogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6
SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1YnBhdHRl
cm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47IHN1YnBh
dHRlcm4rKykgewotICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRS
ZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRlbXBSZWcp
OwotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3Vi
cGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKKyAgICAgICAgICAgICAgICBsb2Fk
NjQoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNl
dChzdWJwYXR0ZXJuKSksIHRlbXBSZWcpOworICAgICAgICAgICAgICAgIHN0b3JlNjQodGVtcFJl
ZywgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN1YnBhdHRlcm5CYXNlRnJhbWVM
b2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKQEAg
LTEyNzUsOCArMTI5OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBKdW1wTGlzdCBtYXRj
aGVzOwogCiAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6
Ok5vbkdyZWVkeSkgewotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0
dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9m
KGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0
LCAoc3VicGF0dGVybklkIDw8IDEpLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAg
ICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNvbnN1bWlu
ZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50
aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gMSkgewpA
QCAtMTMwNyw4ICsxMzI5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCBjaGFyYWN0ZXJPclRlbXApOwogICAgICAgICAgICAgICAgIHN0
b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJh
Y2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAgICAgICAg
ICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5xdWFudGl0
eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICAgICAgbG9hZDMyKEFk
ZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJu
SW5kZXgpOwotICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0
ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAg
ICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSksIHBhdHRl
cm5JbmRleCwgcGF0dGVyblRlbXApOwogICAgICAgICAgICAgICAgIGp1bXAob3V0ZXJMb29wKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1hdGNoZXMubGluayh0aGlzKTsKQEAgLTEzMzEs
OCArMTM1Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNo
YXJhY3Rlck9yVGVtcCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0Jh
Y2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAgICBpZiAodGVybS0+
cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQogICAgICAgICAgICAgICAgIG1h
dGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50
KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQs
IChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkg
KiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJu
cyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSksIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXAp
OwogCiAgICAgICAgICAgICAvLyBTdG9yZSBjdXJyZW50IGluZGV4IGluIGZyYW1lIGZvciByZXN0
b3JpbmcgYWZ0ZXIgYSBwYXJ0aWFsIG1hdGNoCiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoaW5k
ZXgsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNl
OjpiZWdpbkluZGV4KCkpOwpAQCAtMTM1Myw4ICsxMzczLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAK
ICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7CiAKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0
ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAg
ICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVybklu
ZGV4LCBwYXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1
Y2Nlc3NmdWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgSnVtcCB6
ZXJvTGVuZ3RoTWF0Y2ggPSBicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVy
bkluZGV4KTsKQEAgLTE0MDgsOCArMTQyNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAg
ICAgbG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
QmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAg
ICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIG1hdGNoQW1vdW50KSk7CiAK
LSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAq
IHNpemVvZihpbnQpKSwgcGF0dGVyblN0YXJ0SW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFk
ZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBw
YXR0ZXJuRW5kSW5kZXhPckxlbik7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0
LCAoc3VicGF0dGVybklkIDw8IDEpLCBwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4
T3JMZW4pOwogICAgICAgICAgICAgc3ViMzIocGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJ
bmRleE9yTGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5FbmRJbmRleE9yTGVuLCBpbmRl
eCk7CiAKQEAgLTQwNTAsNiArNDA2OCwxNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgbG9hZFN1YlBhdHRlcm5zKFJlZ2lzdGVySUQgb3V0cHV0R1BSLCB1bnNp
Z25lZCBzdWJwYXR0ZXJuSWQsIFJlZ2lzdGVySUQgc3RhcnRJbmRleEdQUiwgUmVnaXN0ZXJJRCBl
bmRJbmRleE9yTGVuR1BSKQorICAgIHsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIGxvYWRQYWly
MzIob3V0cHV0R1BSLCBUcnVzdGVkSW1tMzIoKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihp
bnQpKSwgc3RhcnRJbmRleEdQUiwgZW5kSW5kZXhPckxlbkdQUik7CisjZWxzZQorICAgICAgICBs
b2FkMzIoQWRkcmVzcyhvdXRwdXRHUFIsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50
KSksIHN0YXJ0SW5kZXhHUFIpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXRHUFIsICgo
c3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIGVuZEluZGV4T3JMZW5HUFIp
OworI2VuZGlmCisgICAgfQorCiBwdWJsaWM6CiAgICAgWWFyckdlbmVyYXRvcihWTSogdm0sIFlh
cnJQYXR0ZXJuJiBwYXR0ZXJuLCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFlhcnJDb2RlQmxvY2sm
IGNvZGVCbG9jaywgQ2hhclNpemUgY2hhclNpemUsIEpJVENvbXBpbGVNb2RlIGNvbXBpbGVNb2Rl
KQogICAgICAgICA6IG1fdm0odm0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434718</attachid>
            <date>2021-08-01 04:50:56 -0700</date>
            <delta_ts>2021-08-01 05:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801045055.patch</filename>
            <type>text/plain</type>
            <size>18101</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li43MmE1OWRiYTQ3ZGYxNzg3
MjliNDc0ZDMwZmRlN2YyN2U3YmQ5YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6
CisKIDIwMjEtMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJ
VF9VTklDT0RFX0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IGU2YmZiZWM2MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLjMyY2I2OTU5OWFmM2Ux
Y2NhYjQ4Mjk1NjUzZWFiZjM3NWEwYTBhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMs
MjkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQg
ZGVzdDIpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNl
dC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDwzMj4oZGVz
dDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZGVzdDEgPT0gZGVzdDIpIHsKKyAgICAgICAgICAgIC8vIE5v
dCBzdXJlIHdoYXQgaXMgdGhlIHJpZ2h0IGJlaGF2aW9yIGluIHRoaXMgY2FzZS4gTG9hZGluZyB0
aGUgc2Vjb25kIG9uZSB0byBkZXN0IGZvciBub3cuCisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfSBlbHNlIGlmIChz
cmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWlyNjQoc3JjLCBU
cnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDMsMjAgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1f
dmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3Zh
bHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRl
c3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZGVzdDEgPT0gZGVzdDIpIHsKKyAgICAgICAgICAgIC8vIE5vdCBzdXJl
IHdoYXQgaXMgdGhlIHJpZ2h0IGJlaGF2aW9yIGluIHRoaXMgY2FzZS4gTG9hZGluZyB0aGUgc2Vj
b25kIG9uZSB0byBkZXN0IGZvciBub3cuCisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgfSBlbHNlIGlmIChzcmMgPT0g
ZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUg
KyA4KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkNjQoQWRk
cmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKQEAgLTE0OTAsNyArMTUyNiwy
MCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxB
Y2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVz
dDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZG5wPDY0
PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0
Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmxkbnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc3QxID09IGRl
c3QyKSB7CisgICAgICAgICAgICAvLyBOb3Qgc3VyZSB3aGF0IGlzIHRoZSByaWdodCBiZWhhdmlv
ciBpbiB0aGlzIGNhc2UuIExvYWRpbmcgdGhlIHNlY29uZCBvbmUgdG8gZGVzdCBmb3Igbm93Lgor
ICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0
Mik7CisgICAgICAgIH0gZWxzZSBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2Fk
NjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAg
IGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwg
ZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSAr
IDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQpAQCAt
MTUwMCw3ICsxNTQ5LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChS
ZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgRlBSZWdpc3RlcklEIGRlc3QxLCBG
UFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRl
c3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92
YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhz
cmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3Mo
c3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CiAgICAgfQogCiAgICAgdm9pZCBhYm9y
dFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQpAQCAtMTgyNCw2ICsxODc4LDIxIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgc3Rv
cmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0ZWRJ
bW0zMigwKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEs
IFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1
ZSA+PSAtMjU2KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8MzI+KHNyYzEsIHNyYzIs
IGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAg
ICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOwor
ICAgIH0KKwogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjY0KHNyYzEs
IHNyYzIsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CkBAIC0xODMxLDcgKzE5MDAsMTIgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lz
dGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92
YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFs
dWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMy
LCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgc3RvcmU2NChzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Cisg
ICAgICAgIHN0b3JlNjQoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsK
ICAgICB9CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lz
dGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODQxLDcg
KzE5MTUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25U
ZW1wb3JhbEFjY2VzcyhSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJ
RCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3RucDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAo
b2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNy
YzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMy
LCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQg
c3RvcmVQYWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCkBAIC0xODUxLDcgKzE5MzAsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02
NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9p
ZCBzdG9yZVBhaXI2NChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lz
dGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBp
ZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1f
dmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlRG91
YmxlKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmVE
b3VibGUoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBjY2E3NDgyYzg5MDhl
MDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4YWFlLi40MWZkYzgxMDViZjgwZmYzOGFhN2EwNGMzMjU0
ZWI1ODM3NGE1YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAt
Mjc4LDggKzI3OCwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHN0cnVjdCBQYXJlbkNvbnRl
eHQgewogICAgICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0KiBuZXh0OwotICAgICAgICB1aW50MzJf
dCBiZWdpbjsKLSAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIHN0cnVjdCBC
ZWdpbkFuZE1hdGNoQW1vdW50IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGJlZ2luOworICAgICAg
ICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIH0gYmVnaW5BbmRNYXRjaEFtb3Vu
dDsKICAgICAgICAgdWludHB0cl90IHJldHVybkFkZHJlc3M7CiAgICAgICAgIHN0cnVjdCBTdWJw
YXR0ZXJucyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydDsKQEAgLTI5OSwxMiArMzAxLDEy
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgYmVnaW5PZmZz
ZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0
LCBiZWdpbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdp
bkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIGJlZ2luKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF0Y2hBbW91bnRPZmZzZXQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBt
YXRjaEFtb3VudCk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBi
ZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIG1hdGNo
QW1vdW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuQWRk
cmVzc09mZnNldCgpCkBAIC0zNzQsMTcgKzM3NiwzOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgbW92ZShoZWFkUHRyUmVnaXN0ZXIsIGZyZWVsaXN0UmVnaXN0ZXIpOwogICAgIH0KIAorCisg
ICAgdm9pZCBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29udGV4dChSZWdpc3RlcklE
IGJlZ2luR1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSLCBSZWdpc3RlcklEIHBhcmVuQ29u
dGV4dEdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250
ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0
KCkpOworICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQUiwgbWF0Y2hBbW91bnRHUFIsIHBhcmVu
Q29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwor
I2Vsc2UKKyAgICAgICAgc3RvcmUzMihiZWdpbkdQUiwgQWRkcmVzcyhwYXJlbkNvbnRleHRHUFIs
IFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgICAgICBzdG9yZTMyKG1hdGNoQW1v
dW50R1BSLCBBZGRyZXNzKHBhcmVuQ29udGV4dEdQUiwgUGFyZW5Db250ZXh0OjptYXRjaEFtb3Vu
dE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNo
QW1vdW50RnJvbVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0
ZXJJRCBiZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9
PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBsb2FkUGFpcjMy
KHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQo
KSksIGJlZ2luR1BSLCBtYXRjaEFtb3VudEdQUik7CisjZWxzZQorICAgICAgICBsb2FkMzIoQWRk
cmVzcyhwYXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2lu
R1BSKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0R1BSLCBQYXJlbkNvbnRl
eHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpLCBtYXRjaEFtb3VudEdQUik7CisjZW5kaWYKKyAgICB9
CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcs
IFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBs
YXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAg
IHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRl
cm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91
bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1wUmVnLCBBZGRyZXNzKHBh
cmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7CisgICAg
ICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0KGluZGV4LCB0ZW1wUmVn
LCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5CYXNl
RnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0lu
ZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVu
Q29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpKTsKICAgICAg
ICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJu
cykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0
ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAg
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNp
emVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1w
UmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zm
c2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Mob3V0cHV0
LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKICAgICAgICAgICAgICAg
ICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzk3LDE2ICs0MjEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICB2b2lkIHJl
c3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQg
dGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVy
biwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAg
bG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0
KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29u
dGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0Zy
YW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVuQ29u
dGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSwgdGVtcFJlZyk7CiAg
ICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24g
KyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJuQWRk
cmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBz
dWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnJl
dHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29t
cGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0
ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocGFy
ZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikp
LCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKG91
dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CisgICAgICAgICAg
ICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBh
dHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9y
ZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1
bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdWJwYXR0ZXJu
QmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXM7CkBAIC0xMjc1LDggKzEyOTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgSnVt
cExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50
aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1
dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAx
KSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBhdHRl
cm5zKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVt
cCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3NmdWwgd2l0aG91
dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlw
ZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENvdW50
ICE9IDEpIHsKQEAgLTEzMDcsOCArMTMyOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAg
ICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsKICAgICAgICAg
ICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9j
YXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsK
ICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVy
bS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgICAg
IGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQp
KSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQs
ICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsK
KyAgICAgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCAoc3VicGF0dGVybklkIDw8
IDEpLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKICAgICAgICAgICAgICAgICBqdW1wKG91
dGVyTG9vcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXRjaGVzLmxpbmsodGhpcyk7
CkBAIC0xMzMxLDggKzEzNTIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIHN0b3Jl
VG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAgICAgICAg
ICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVybS0+cXVhbnRp
dHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuSW5k
ZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8
PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICBsb2Fk
U3ViUGF0dGVybnMob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpLCBwYXR0ZXJuSW5kZXgsIHBh
dHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFt
ZSBmb3IgcmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVU
b0ZyYW1lKGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFj
a1JlZmVyZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM3Myw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2Yo
aW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQs
ICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsK
KyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSks
IHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBt
YXRjaCBpcyBzdWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAg
ICAgIEp1bXAgemVyb0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIFRydXN0ZWRJbW0zMigt
MSksIHBhdHRlcm5JbmRleCk7CkBAIC0xNDA4LDggKzE0MjcsNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFj
a1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSwgbWF0Y2hBbW91bnQp
OwogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBtYXRjaEFt
b3VudCkpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJu
SWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5TdGFydEluZGV4KTsKLSAgICAgICAgICAg
IGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVv
ZihpbnQpKSwgcGF0dGVybkVuZEluZGV4T3JMZW4pOworICAgICAgICAgICAgbG9hZFN1YlBhdHRl
cm5zKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRl
cm5FbmRJbmRleE9yTGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5TdGFydEluZGV4LCBw
YXR0ZXJuRW5kSW5kZXhPckxlbik7CiAgICAgICAgICAgICBzdWIzMihwYXR0ZXJuRW5kSW5kZXhP
ckxlbiwgaW5kZXgpOwogCkBAIC00MDUwLDYgKzQwNjgsMTYgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAj
ZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIGxvYWRTdWJQYXR0ZXJucyhSZWdpc3RlcklEIG91dHB1
dEdQUiwgdW5zaWduZWQgc3VicGF0dGVybklkLCBSZWdpc3RlcklEIHN0YXJ0SW5kZXhHUFIsIFJl
Z2lzdGVySUQgZW5kSW5kZXhPckxlbkdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAg
ICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChzdWJwYXR0ZXJuSWQgPDwgMSkg
KiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4T3JMZW5HUFIpOworI2Vsc2UK
KyAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0R1BSLCAoc3VicGF0dGVybklkIDw8IDEpICog
c2l6ZW9mKGludCkpLCBzdGFydEluZGV4R1BSKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0
cHV0R1BSLCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBlbmRJbmRl
eE9yTGVuR1BSKTsKKyNlbmRpZgorICAgIH0KKwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3Io
Vk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJy
Q29kZUJsb2NrJiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBj
b21waWxlTW9kZSkKICAgICAgICAgOiBtX3ZtKHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434719</attachid>
            <date>2021-08-01 05:07:25 -0700</date>
            <delta_ts>2021-08-01 12:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801050724.patch</filename>
            <type>text/plain</type>
            <size>19541</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li5mMmU0YjgyZWE4ZTE1Mzk2
MTJiNjY2YzY2YjBkY2M4Y2NjYTA0M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFz
bS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCk6CisgICAgICAg
ICogeWFyci9ZYXJySklULmNwcDoKKwogMjAyMS0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1vdmUgSklUX1VOSUNPREVfRVhQUkVTU0lP
TlMgdG8gRU5BQkxFKFlBUlJfSklUX1VOSUNPREVfRVhQUkVTU0lPTlMpIGluIFBsYXRmb3JtRW5h
YmxlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggZTZiZmJlYzYwMDFjMTBjNjFlOWYyNjZlZmYyN2FkNmYxMGU4
OWY4Zi4uYWM4NjE3MjI2ZTNjMzJmYjk1YThiOWE3Mjk5YWViMGRmYjA0OTU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKQEAgLTE0NzMsNiArMTQ3MywyNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBs
YWJlbDsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMy
KHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQg
bG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIEFTU0VSVChkZXN0MSAh
PSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3Ry
dWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNldC5tX3Zh
bHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDwzMj4oZGVzdDEsIGRl
c3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0
Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewogICAgICAgICBs
b2FkUGFpcjY0KHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOwpAQCAtMTQ4MCw3
ICsxNTAxLDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3Qy
LCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUx
MikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zm
c2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKQEAgLTE0
OTAsNyArMTUyMiwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjRXaXRo
Tm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJl
Z2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5sZG5wPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAg
ICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29t
ZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUw
NCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZG5wPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAg
ICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAg
ICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgbG9hZFBh
aXI2NChSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVz
dDIpCkBAIC0xNTAwLDcgKzE1NDMsMTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2Fk
UGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBGUFJlZ2lzdGVySUQg
ZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
cDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJU
KGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVn
YWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zm
c2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0Pihk
ZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVl
KSwgZGVzdDEpOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1
ZSArIDgpLCBkZXN0Mik7CiAgICAgfQogCiAgICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRS
ZWFzb24gcmVhc29uKQpAQCAtMTgyNCw2ICsxODczLDIxIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAg
ICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQor
CisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYg
KG9mZnNldC5tX3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAtMjU2KSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdHA8MzI+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTMyKHNy
YzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMy
LCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIHZvaWQg
c3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjY0KHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0
ZWRJbW0zMigwKSk7CkBAIC0xODMxLDcgKzE4OTUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAg
dm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlm
IChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmU2NChz
cmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlNjQoc3Jj
MiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2b2lk
IHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0
ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODQxLDcgKzE5MTAsMTIgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhSZWdp
c3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1t
MzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2ND4oc3JjMSwgc3Jj
MiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0g
NTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwg
b2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9m
ZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQYWlyNjQoRlBSZWdp
c3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODUx
LDcgKzE5MjUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChGUFJl
Z2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3Rl
ZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwg
c3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUg
PD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlRG91YmxlKHNyYzEsIEFkZHJlc3Mo
ZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjMiwgQWRkcmVz
cyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIo
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxY2E2OTgzZWI3MGQ5NjQwYmU0
ZmIyZjExMGUyZjhlMDFmMzhmODM4Li40MjkyYzA3MjdjMjkxYmM1MWUzY2Y3M2JmZTUxMDAyZWRh
MTdhNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3Rt
YXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNw
cApAQCAtMzMyNSw2ICszMzI1LDMyIEBAIHZvaWQgdGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkK
ICAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFsdWUxKTsKICAgICBDSEVDS19FUShwYWlyLnZh
bHVlMiwgdmFsdWUyKTsKIAorICAgIC8vIFRlc3QgbG9hZFBhaXI2NCB1c2luZyBhIGJ1ZmZlciBy
ZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAgIGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZm
ZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZz
ZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgICAg
ICBqaXQubG9hZFBhaXI2NChidWZmZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9m
ZnNldCAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjphcmd1bWVudEdQUjAs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAwKSk7CisgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVp
bnQ2NF90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAg
IGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJl
Z2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24oaml0
LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKworICAgIGluaXRQYWlyKCk7Cisg
ICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0
aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCBpbml0
aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsg
NSk7CisKICAgICAvLyBUZXN0IHN0b3JlUGFpcjY0LgogICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgewogICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRl
eCBjY2E3NDgyYzg5MDhlMDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4YWFlLi40MWZkYzgxMDViZjgw
ZmYzOGFhN2EwNGMzMjU0ZWI1ODM3NGE1YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcApAQCAtMjc4LDggKzI3OCwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHN0
cnVjdCBQYXJlbkNvbnRleHQgewogICAgICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0KiBuZXh0Owot
ICAgICAgICB1aW50MzJfdCBiZWdpbjsKLSAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7Cisg
ICAgICAgIHN0cnVjdCBCZWdpbkFuZE1hdGNoQW1vdW50IHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGJlZ2luOworICAgICAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIH0gYmVn
aW5BbmRNYXRjaEFtb3VudDsKICAgICAgICAgdWludHB0cl90IHJldHVybkFkZHJlc3M7CiAgICAg
ICAgIHN0cnVjdCBTdWJwYXR0ZXJucyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydDsKQEAg
LTI5OSwxMiArMzAxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3QgYmVnaW5PZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0
b2YoUGFyZW5Db250ZXh0LCBiZWdpbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFy
ZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hB
bW91bnQsIGJlZ2luKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF0
Y2hBbW91bnRPZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2Yo
UGFyZW5Db250ZXh0LCBtYXRjaEFtb3VudCk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2Yo
UGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0
Y2hBbW91bnQsIG1hdGNoQW1vdW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3QgcmV0dXJuQWRkcmVzc09mZnNldCgpCkBAIC0zNzQsMTcgKzM3NiwzOSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgbW92ZShoZWFkUHRyUmVnaXN0ZXIsIGZyZWVsaXN0UmVnaXN0ZXIp
OwogICAgIH0KIAorCisgICAgdm9pZCBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29u
dGV4dChSZWdpc3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSLCBSZWdp
c3RlcklEIHBhcmVuQ29udGV4dEdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBB
U1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1h
dGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQUiwgbWF0Y2hB
bW91bnRHUFIsIHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVn
aW5PZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAgc3RvcmUzMihiZWdpbkdQUiwgQWRkcmVzcyhw
YXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgICAgICBz
dG9yZTMyKG1hdGNoQW1vdW50R1BSLCBBZGRyZXNzKHBhcmVuQ29udGV4dEdQUiwgUGFyZW5Db250
ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGxv
YWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29u
dGV4dEdQUiwgUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUikK
KyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdp
bk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAg
ICAgICBsb2FkUGFpcjMyKHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4
dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSLCBtYXRjaEFtb3VudEdQUik7CisjZWxzZQorICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5P
ZmZzZXQoKSksIGJlZ2luR1BSKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0
R1BSLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpLCBtYXRjaEFtb3VudEdQUik7
CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBw
YXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0
ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNv
bnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJv
bUZyYW1lKHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1w
UmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKSk7CisgICAgICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0
KGluZGV4LCB0ZW1wUmVnLCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1l
KHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6
cmV0dXJuQWRkcmVzc0luZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVn
LCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zm
c2V0KCkpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Oklu
Y2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJu
ID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0
ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0
dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAg
ICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0
OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0
KEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0
ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5D
b250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsK
ICAgICAgICAgICAgICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMzk3LDE2ICs0MjEsMTUgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAKICAgICB2b2lkIHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRS
ZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRl
eHQ6OmJlZ2luT2Zmc2V0KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1v
dW50RnJvbVBhcmVuQ29udGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAg
ICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihB
ZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgp
KSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFz
ZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5k
ZXgoKSk7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29u
dGV4dDo6cmV0dXJuQWRkcmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9G
cmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXM6OnJldHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGls
ZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJu
IDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZz
ZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1w
UmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQp
KSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8
PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM7CkBAIC0xMjc1LDggKzEyOTgsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgSnVtcExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0
ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAg
ICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVybklu
ZGV4LCBwYXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1
Y2Nlc3NmdWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgaWYgKHRl
cm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5x
dWFudGl0eU1heENvdW50ICE9IDEpIHsKQEAgLTEzMDcsOCArMTMyOSw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JU
ZW1wKTsKICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hB
bW91bnRJbmRleCgpKTsKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihF
cXVhbCwgSW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwot
ICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAx
KSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCAo
c3VicGF0dGVybklkIDw8IDEpLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKICAgICAgICAg
ICAgICAgICBqdW1wKG91dGVyTG9vcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXRj
aGVzLmxpbmsodGhpcyk7CkBAIC0xMzMxLDggKzEzNTIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVM
b2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkp
OwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZp
bml0ZSkKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1t
MzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGlu
dCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAo
KHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7Cisg
ICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpLCBw
YXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVu
dCBpbmRleCBpbiBmcmFtZSBmb3IgcmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAg
ICAgICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM3
Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJl
bCgpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQg
PDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIChzdWJw
YXR0ZXJuSWQgPDwgMSksIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAg
ICAvLyBBbiBlbXB0eSBtYXRjaCBpcyBzdWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJh
Y3RlcnMKICAgICAgICAgICAgIEp1bXAgemVyb0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWws
IFRydXN0ZWRJbW0zMigtMSksIHBhdHRlcm5JbmRleCk7CkBAIC0xNDA4LDggKzE0MjcsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFt
ZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgo
KSwgbWF0Y2hBbW91bnQpOwogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3Qz
MihaZXJvLCBtYXRjaEFtb3VudCkpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRw
dXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5TdGFydEluZGV4
KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwg
MSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkVuZEluZGV4T3JMZW4pOworICAgICAgICAg
ICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSwgcGF0dGVyblN0
YXJ0SW5kZXgsIHBhdHRlcm5FbmRJbmRleE9yTGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRl
cm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5kZXhPckxlbik7CiAgICAgICAgICAgICBzdWIzMihw
YXR0ZXJuRW5kSW5kZXhPckxlbiwgaW5kZXgpOwogCkBAIC00MDUwLDYgKzQwNjgsMTYgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIGxvYWRTdWJQYXR0ZXJucyhS
ZWdpc3RlcklEIG91dHB1dEdQUiwgdW5zaWduZWQgc3VicGF0dGVybklkLCBSZWdpc3RlcklEIHN0
YXJ0SW5kZXhHUFIsIFJlZ2lzdGVySUQgZW5kSW5kZXhPckxlbkdQUikKKyAgICB7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChzdWJw
YXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4T3JM
ZW5HUFIpOworI2Vsc2UKKyAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0R1BSLCAoc3VicGF0
dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBzdGFydEluZGV4R1BSKTsKKyAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0R1BSLCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9m
KGludCkpLCBlbmRJbmRleE9yTGVuR1BSKTsKKyNlbmRpZgorICAgIH0KKwogcHVibGljOgogICAg
IFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0
ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBK
SVRDb21waWxlTW9kZSBjb21waWxlTW9kZSkKICAgICAgICAgOiBtX3ZtKHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434725</attachid>
            <date>2021-08-01 12:41:09 -0700</date>
            <delta_ts>2021-08-01 21:20:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801124108.patch</filename>
            <type>text/plain</type>
            <size>19506</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li5mMmU0YjgyZWE4ZTE1Mzk2
MTJiNjY2YzY2YjBkY2M4Y2NjYTA0M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFz
bS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCk6CisgICAgICAg
ICogeWFyci9ZYXJySklULmNwcDoKKwogMjAyMS0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1vdmUgSklUX1VOSUNPREVfRVhQUkVTU0lP
TlMgdG8gRU5BQkxFKFlBUlJfSklUX1VOSUNPREVfRVhQUkVTU0lPTlMpIGluIFBsYXRmb3JtRW5h
YmxlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggZTZiZmJlYzYwMDFjMTBjNjFlOWYyNjZlZmYyN2FkNmYxMGU4
OWY4Zi4uYWM4NjE3MjI2ZTNjMzJmYjk1YThiOWE3Mjk5YWViMGRmYjA0OTU0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKQEAgLTE0NzMsNiArMTQ3MywyNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBs
YWJlbDsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMy
KHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQg
bG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIEFTU0VSVChkZXN0MSAh
PSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3Ry
dWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNldC5tX3Zh
bHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDwzMj4oZGVzdDEsIGRl
c3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0
Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewogICAgICAgICBs
b2FkUGFpcjY0KHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOwpAQCAtMTQ4MCw3
ICsxNTAxLDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3Qy
LCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUx
MikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zm
c2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKQEAgLTE0
OTAsNyArMTUyMiwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjRXaXRo
Tm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJl
Z2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5sZG5wPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAg
ICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29t
ZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUw
NCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZG5wPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAg
ICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAg
ICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgbG9hZFBh
aXI2NChSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVz
dDIpCkBAIC0xNTAwLDcgKzE1NDMsMTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2Fk
UGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBGUFJlZ2lzdGVySUQg
ZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
cDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJU
KGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVn
YWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zm
c2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0Pihk
ZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVl
KSwgZGVzdDEpOworICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1
ZSArIDgpLCBkZXN0Mik7CiAgICAgfQogCiAgICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRS
ZWFzb24gcmVhc29uKQpAQCAtMTgyNCw2ICsxODczLDIxIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAg
ICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQor
CisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYg
KG9mZnNldC5tX3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAtMjU2KSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdHA8MzI+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTMyKHNy
YzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMy
LCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIHZvaWQg
c3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjY0KHNyYzEsIHNyYzIsIGRlc3QsIFRydXN0
ZWRJbW0zMigwKSk7CkBAIC0xODMxLDcgKzE4OTUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAg
dm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlm
IChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmU2NChz
cmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlNjQoc3Jj
MiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2b2lk
IHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0
ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODQxLDcgKzE5MTAsMTIgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhSZWdp
c3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1t
MzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2ND4oc3JjMSwgc3Jj
MiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0g
NTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwg
b2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9m
ZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQYWlyNjQoRlBSZWdp
c3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xODUx
LDcgKzE5MjUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChGUFJl
Z2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3Rl
ZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwg
c3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUg
PD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlRG91YmxlKHNyYzEsIEFkZHJlc3Mo
ZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjMiwgQWRkcmVz
cyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIo
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCAxY2E2OTgzZWI3MGQ5NjQwYmU0
ZmIyZjExMGUyZjhlMDFmMzhmODM4Li40MjkyYzA3MjdjMjkxYmM1MWUzY2Y3M2JmZTUxMDAyZWRh
MTdhNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3Rt
YXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNw
cApAQCAtMzMyNSw2ICszMzI1LDMyIEBAIHZvaWQgdGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkK
ICAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFsdWUxKTsKICAgICBDSEVDS19FUShwYWlyLnZh
bHVlMiwgdmFsdWUyKTsKIAorICAgIC8vIFRlc3QgbG9hZFBhaXI2NCB1c2luZyBhIGJ1ZmZlciBy
ZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAgIGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZm
ZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZz
ZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgICAg
ICBqaXQubG9hZFBhaXI2NChidWZmZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9m
ZnNldCAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjphcmd1bWVudEdQUjAs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAwKSk7CisgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVp
bnQ2NF90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAg
IGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJl
Z2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
KyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24oaml0
LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKworICAgIGluaXRQYWlyKCk7Cisg
ICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0
aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCBpbml0
aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsg
NSk7CisKICAgICAvLyBUZXN0IHN0b3JlUGFpcjY0LgogICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgewogICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRl
eCBjY2E3NDgyYzg5MDhlMDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4YWFlLi4zOTgyMGZhZTg5YTEx
N2FiMzM0NjBjY2MwN2M4M2ZkMGFhM2RiODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcApAQCAtMjc4LDggKzI3OCwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHN0
cnVjdCBQYXJlbkNvbnRleHQgewogICAgICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0KiBuZXh0Owot
ICAgICAgICB1aW50MzJfdCBiZWdpbjsKLSAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7Cisg
ICAgICAgIHN0cnVjdCBCZWdpbkFuZE1hdGNoQW1vdW50IHsKKyAgICAgICAgICAgIHVpbnQzMl90
IGJlZ2luOworICAgICAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIH0gYmVn
aW5BbmRNYXRjaEFtb3VudDsKICAgICAgICAgdWludHB0cl90IHJldHVybkFkZHJlc3M7CiAgICAg
ICAgIHN0cnVjdCBTdWJwYXR0ZXJucyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydDsKQEAg
LTI5OSwxMiArMzAxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3QgYmVnaW5PZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0
b2YoUGFyZW5Db250ZXh0LCBiZWdpbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFy
ZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0Y2hB
bW91bnQsIGJlZ2luKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF0
Y2hBbW91bnRPZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2Yo
UGFyZW5Db250ZXh0LCBtYXRjaEFtb3VudCk7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2Yo
UGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0
Y2hBbW91bnQsIG1hdGNoQW1vdW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3QgcmV0dXJuQWRkcmVzc09mZnNldCgpCkBAIC0zNzQsMTcgKzM3NiwzOSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgbW92ZShoZWFkUHRyUmVnaXN0ZXIsIGZyZWVsaXN0UmVnaXN0ZXIp
OwogICAgIH0KIAorCisgICAgdm9pZCBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29u
dGV4dChSZWdpc3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSLCBSZWdp
c3RlcklEIHBhcmVuQ29udGV4dEdQUikKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBB
U1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1h
dGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQUiwgbWF0Y2hB
bW91bnRHUFIsIHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVn
aW5PZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAgc3RvcmUzMihiZWdpbkdQUiwgQWRkcmVzcyhw
YXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgICAgICBz
dG9yZTMyKG1hdGNoQW1vdW50R1BSLCBBZGRyZXNzKHBhcmVuQ29udGV4dEdQUiwgUGFyZW5Db250
ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGxv
YWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29u
dGV4dEdQUiwgUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUikK
KyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdp
bk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAg
ICAgICBsb2FkUGFpcjMyKHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29udGV4
dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSLCBtYXRjaEFtb3VudEdQUik7CisjZWxzZQorICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRHUFIsIFBhcmVuQ29udGV4dDo6YmVnaW5P
ZmZzZXQoKSksIGJlZ2luR1BSKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0
R1BSLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpLCBtYXRjaEFtb3VudEdQUik7
CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBw
YXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0
ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNv
bnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJv
bUZyYW1lKHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1w
UmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKSk7CisgICAgICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0
KGluZGV4LCB0ZW1wUmVnLCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1l
KHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6
cmV0dXJuQWRkcmVzc0luZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVn
LCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zm
c2V0KCkpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Oklu
Y2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJu
ID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0
ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0
dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAg
ICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0
OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0
KEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0
ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5D
b250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsK
ICAgICAgICAgICAgICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMzk3LDE2ICs0MjEsMTUgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAKICAgICB2b2lkIHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRS
ZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRl
eHQ6OmJlZ2luT2Zmc2V0KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1v
dW50RnJvbVBhcmVuQ29udGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAg
ICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihB
ZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgp
KSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFz
ZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5k
ZXgoKSk7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29u
dGV4dDo6cmV0dXJuQWRkcmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9G
cmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXM6OnJldHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGls
ZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJu
IDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZz
ZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1w
UmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQp
KSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8
PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM7CkBAIC0xMjc1LDggKzEyOTgsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgSnVtcExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0
ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAg
ICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBh
dHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1
bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5
TWF4Q291bnQgIT0gMSkgewpAQCAtMTMwNyw4ICsxMzI5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBjaGFyYWN0ZXJPclRlbXApOwog
ICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2Vz
RnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudElu
ZGV4KCkpOwogICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJ
bW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAg
ICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6
ZW9mKGludCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNz
KG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVy
blRlbXApOworICAgICAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRl
cm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChv
dXRlckxvb3ApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWF0Y2hlcy5saW5rKHRoaXMp
OwpAQCAtMTMzMSw4ICsxMzUyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBzdG9y
ZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNr
VHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAg
IGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCiAgICAgICAg
ICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50
aXR5TWF4Q291bnQpLCBjaGFyYWN0ZXJPclRlbXApKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybklu
ZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQg
PDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9h
ZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5U
ZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFtZSBmb3Ig
cmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVy
ZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM3Myw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3Vi
cGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAg
ICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4
LCBwYXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nl
c3NmdWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgSnVtcCB6ZXJv
TGVuZ3RoTWF0Y2ggPSBicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVybklu
ZGV4KTsKQEAgLTE0MDgsOCArMTQyNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
bG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFj
a1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIG1hdGNoQW1vdW50KSk7CiAKLSAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNp
emVvZihpbnQpKSwgcGF0dGVyblN0YXJ0SW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0
ZXJuRW5kSW5kZXhPckxlbik7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBz
dWJwYXR0ZXJuSWQsIHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5kZXhPckxlbik7CiAg
ICAgICAgICAgICBzdWIzMihwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4p
OwogICAgICAgICAgICAgc3ViMzIocGF0dGVybkVuZEluZGV4T3JMZW4sIGluZGV4KTsKIApAQCAt
NDA1MCw2ICs0MDY4LDE2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAg
dm9pZCBsb2FkU3ViUGF0dGVybnMoUmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2lnbmVkIHN1YnBh
dHRlcm5JZCwgUmVnaXN0ZXJJRCBzdGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVuZEluZGV4T3JM
ZW5HUFIpCisgICAgeworI2lmIENQVShBUk02NCkKKyAgICAgICAgbG9hZFBhaXIzMihvdXRwdXRH
UFIsIFRydXN0ZWRJbW0zMigoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBzdGFy
dEluZGV4R1BSLCBlbmRJbmRleE9yTGVuR1BSKTsKKyNlbHNlCisgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dEdQUiwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgc3RhcnRJ
bmRleEdQUik7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dEdQUiwgKChzdWJwYXR0ZXJu
SWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgZW5kSW5kZXhPckxlbkdQUik7CisjZW5kaWYK
KyAgICB9CisKIHB1YmxpYzoKICAgICBZYXJyR2VuZXJhdG9yKFZNKiB2bSwgWWFyclBhdHRlcm4m
IHBhdHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNvZGVCbG9jayYgY29kZUJsb2Nr
LCBDaGFyU2l6ZSBjaGFyU2l6ZSwgSklUQ29tcGlsZU1vZGUgY29tcGlsZU1vZGUpCiAgICAgICAg
IDogbV92bSh2bSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434734</attachid>
            <date>2021-08-01 21:20:57 -0700</date>
            <delta_ts>2021-08-01 21:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801212056.patch</filename>
            <type>text/plain</type>
            <size>34825</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li43ZTlhOTU0MjdkYmE5YzY5
MTllODY2YTY5YjkyYjI0MzQ4YTk3ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkZHMgbG9hZFBhaXIzMiBhbmQgc3RvcmVQYWlyMzIgdG8gYWxsIG1hY3Jv
IGFzc2VtYmxlciBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBjYWxsIGl0IHdpdGhvdXQgQ1BVKEFS
TTY0KS4gSW50ZXJuYWxseSwgdHdvIGxvYWRzIG9yIHN0b3JlcyBhcmUgY29tYmluZWQuCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6Cisg
ICAgICAgIChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TG9h
ZFN0b3JlUGFpcjY0SW50NjQpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisKIDIwMjEt
MDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJVF9VTklDT0RF
X0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGU2YmZiZWM2
MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLmFjODYxNzIyNmUzYzMyZmI5NWE4Yjlh
NzI5OWFlYjBkZmIwNDk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMsMjcgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBsb2Fk
UGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3Qy
KQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigwKSwgZGVzdDEs
IGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisg
ICAgeworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2Ft
ZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5t
X3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAtMjU2KSB7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHA8MzI+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkg
eworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBk
ZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwg
ZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICB9CisgICAgfQorCiAgICAg
dm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQogICAgIHsKICAgICAgICAgbG9hZFBhaXI2NChzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKQEAgLTE0ODAsNyArMTUwMSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAg
ICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVj
b21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0g
NTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAg
ICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAg
ICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dDEsIFJlZ2lzdGVySUQgZGVzdDIpCkBAIC0xNDkwLDcgKzE1MjIsMTggQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRl
c3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBz
cmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8g
SWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAg
ICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikg
eworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAg
bG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTUwMCw3ICsxNTQzLDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIG9mZnNldCwgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVzdDIpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZz
ZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlz
IHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAo
b2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkRG91Ymxl
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgbG9hZERvdWJs
ZShBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOwogICAgIH0KIAogICAg
IHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJlYXNvbikKQEAgLTE4MjQsNiArMTg3
MywyMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0
LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMy
IG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSAyNTIgJiYgb2Zm
c2V0Lm1fdmFsdWUgPj0gLTI1NikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDMyPihz
cmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3Zh
bHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1
ZSArIDQpKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBh
aXI2NChzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMTgzMSw3ICsxODk1
LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNl
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9m
ZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4o
c3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92
YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3JhbEFj
Y2VzcyhSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTg0MSw3ICsxOTEwLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWly
NjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEy
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBv
ZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3RvcmU2NChzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0
b3JlNjQoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTg1MSw3ICsxOTI1LDEyIEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
IAogICAgIHZvaWQgc3RvcmVQYWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAt
NTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3Qs
IG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzdG9yZURvdWJsZShzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAg
ICAgIHN0b3JlRG91YmxlKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7
CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZWY4Yzk5ZWY2M2FkMjZkNmIxYTdjYzRhYjcxNDU3
MDYxNGM4ZTk2OS4uM2Q2YWMxZjQ2OTJkNzBmZmI2YTQzZmY0NDEyZTE2ZmVjNmQ5NDYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKQEAgLTg2Nyw2ICs4NjcsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgewor
ICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOwor
ICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVj
b21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3Qy
KTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0
MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBv
ZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBEYXRh
TGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsMzIgbGFiZWwgPSBtb3ZlV2l0
aFBhdGNoKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGRhdGFUZW1wUmVnaXN0ZXIpOwpA
QCAtOTY1LDYgKzk4MiwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHN0b3JlMTYoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdp
c3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAg
ICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAg
c3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0K
KwogICAgIC8vIFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVj
dHVyZS4KICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAzMzNjZWUw
ODZhMDQwZWYxZDhlNDMwNGU2ZDkxYTcyZGM1ZjU3ZWFhLi4xNDQ1Yzc5MWIyOGNlZjVkZmMxNTZj
MzEyNGM2YTRlMjIyMWFjMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTEyOTMsNiArMTI5MywyMyBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAg
ICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAg
fQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zm
c2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVz
IGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOwor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0
Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJl
bDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNz
IGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpAQCAtMTU4Niw2
ICsxNjAzLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3Rl
ZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3Jj
MSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQp
CisgICAgeworICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVl
ICsgNCkpOworICAgIH0KKwogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM6CiAKICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmlu
ZGV4IDU0ZDQ1NjdkNGMxYzQ1ZGZlMGMzMjhjYTdiY2RiODRlOWViMmY5NzYuLjQzNTY4ODg4ZmJm
MDY1MDVjYWYxNzkwNzYxNTMzZTdhOTI5NjRlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTEz
MDAsNiArMTMwMCwyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5t
b3Zzd2xfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7CiAgICAgfQogCisg
ICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdp
c3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0z
MigwKSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVy
SUQgZGVzdDIpCisgICAgeworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBp
dCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAg
aWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAg
IGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgdm9pZCB6ZXJvRXh0ZW5kMTZUbzMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6d2xfcnIoc3Jj
LCBkZXN0KTsKQEAgLTEzNDksNiArMTM2NiwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShpbW04Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgIH0KIAorICAgIHZv
aWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3QsIFRy
dXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklE
IHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5t
X3ZhbHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92
YWx1ZSArIDQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
IGdldFVudXNlZFJlZ2lzdGVyKEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYg
KGFkZHJlc3MuYmFzZSAhPSBYODZSZWdpc3RlcnM6OmVheCAmJiBhZGRyZXNzLmluZGV4ICE9IFg4
NlJlZ2lzdGVyczo6ZWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3Rt
YXNtLmNwcAppbmRleCAxY2E2OTgzZWI3MGQ5NjQwYmU0ZmIyZjExMGUyZjhlMDFmMzhmODM4Li5h
MWM3NjdiNTljYmM5NDNhMDBhMzFlMzA0OTRjYjRjMzU0YTY1Y2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMzIzNiw2ICszMjM2LDI0NSBA
QCB2b2lkIHRlc3RBdG9taWNTdHJvbmdDQVNGaWxsMTYoKQogCiAjZW5kaWYgLy8gQ1BVKEFSTTY0
KQogCit2b2lkIHRlc3RMb2FkU3RvcmVQYWlyMzIoKQoreworICAgIGNvbnN0ZXhwciB1aW50MzJf
dCBpbml0aWFsVmFsdWUgPSAweDU1YWFiYjgwdTsKKyAgICBjb25zdGV4cHIgdWludDMyX3QgdmFs
dWUxID0gNDI7CisgICAgY29uc3RleHByIHVpbnQzMl90IHZhbHVlMiA9IDB4Y2ZiYjEzNTd1Owor
CisgICAgdWludDMyX3QgYnVmZmVyWzEwXTsKKworICAgIGF1dG8gaW5pdEJ1ZmZlciA9IFsmXSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICAgICAg
YnVmZmVyW2ldID0gaW5pdGlhbFZhbHVlICsgaTsKKyAgICB9OworCisgICAgc3RydWN0IFBhaXIg
eworICAgICAgICB1aW50MzJfdCB2YWx1ZTE7CisgICAgICAgIHVpbnQzMl90IHZhbHVlMjsKKyAg
ICB9OworCisgICAgUGFpciBwYWlyOworICAgIGF1dG8gaW5pdFBhaXIgPSBbJl0geworICAgICAg
ICBwYWlyID0geyAwLCAwIH07CisgICAgfTsKKworICAgIC8vIFRlc3QgbG9hZFBhaXIzMi4KKyAg
ICBhdXRvIHRlc3RMb2FkUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkg
eworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHBhaXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGpp
dC5sb2FkUGFpcjMyKGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0
ICogc2l6ZW9mKHVpbnQzMl90KSksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7CisK
KyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhwYWlyR1BSLCAwKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QzLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQzMl90KSkpOworCisgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9Owor
CisgICAgYXV0byB0ZXN0TG9hZFBhaXIwID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgIHRlc3RMb2FkUGFpcihqaXQsIDApOworICAgIH0pOworCisgICAgaW5pdEJ1
ZmZlcigpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWly
MCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFs
VmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7
CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1ZmZlcls0XSA9IHZhbHVlMTsKKyAgICBidWZmZXJb
NV0gPSB2YWx1ZTI7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpcjAsICZidWZmZXJbNF0s
ICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFsdWUxKTsKKyAgICBDSEVDS19F
UShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyTWludXMyID0g
Y29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpcihq
aXQsIC0yKTsKKyAgICB9KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRl
c3RMb2FkUGFpck1pbnVzMiwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIu
dmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0IC0gMik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IGluaXRpYWxWYWx1ZSArIDUgLSAyKTsKKworICAgIGluaXRQYWlyKCk7CisgICAgYnVmZmVyWzQg
LSAyXSA9IHZhbHVlMjsKKyAgICBidWZmZXJbNSAtIDJdID0gdmFsdWUxOworICAgIGludm9rZTx2
b2lkPih0ZXN0TG9hZFBhaXJNaW51czIsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19F
UShwYWlyLnZhbHVlMSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUx
KTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyUGx1czMgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGppdCwgMyk7CisgICAgfSk7CisKKyAg
ICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJQbHVzMywgJmJ1ZmZl
cls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0
ICsgMyk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1ZSArIDUgKyAzKTsK
KworICAgIGluaXRQYWlyKCk7CisgICAgYnVmZmVyWzQgKyAzXSA9IHZhbHVlMTsKKyAgICBidWZm
ZXJbNSArIDNdID0gdmFsdWUyOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJQbHVzMywg
JmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOwor
ICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOworCisgICAgLy8gVGVzdCBsb2FkUGFp
cjMyIHVzaW5nIGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24uCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9IFtdIChDQ2FsbEhl
bHBlcnMmIGppdCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShq
aXQpOworCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIwOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIgPSBHUFJJbmZvOjph
cmd1bWVudEdQUjE7CisgICAgICAgIGppdC5sb2FkUGFpcjMyKGJ1ZmZlckdQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90KSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGppdC5zdG9yZTMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIDApKTsKKyAg
ICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhw
YWlyR1BSLCBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRlc3RMb2Fk
UGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNvbXBpbGUoWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVy
QXNEZXN0aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworCisg
ICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEo
cGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUy
LCBpbml0aWFsVmFsdWUgKyA1KTsKKworICAgIC8vIFRlc3Qgc3RvcmVQYWlyMzIuCisgICAgYXV0
byB0ZXN0U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7Cisg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgICAgIGppdC5zdG9y
ZVBhaXIzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgYnVm
ZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodW5zaWdu
ZWQpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXIwID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXIoaml0LCAwKTsKKyAg
ICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFp
cjAsIHZhbHVlMSwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0s
IGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVl
ICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUgKyAyKTsKKyAgICBD
SEVDS19FUShidWZmZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENIRUNLX0VRKGJ1ZmZl
cls0XSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIHZhbHVlMik7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5pdGlhbFZh
bHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKwor
ICAgIGF1dG8gdGVzdFN0b3JlUGFpck1pbnVzMiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyKGppdCwgLTIpOworICAgIH0pOworCisgICAg
aW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyTWludXMyLCB2YWx1
ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFs
VmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbM10s
IHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCBpbml0
aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGluaXRpYWxWYWx1ZSArIDgp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICBhdXRv
IHRlc3RTdG9yZVBhaXJQbHVzMyA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICB0ZXN0U3RvcmVQYWlyKGppdCwgMyk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVy
KCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJQbHVzMywgdmFsdWUxLCB2YWx1ZTIs
ICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwg
aW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUg
KyA0KTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzddLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgdmFsdWUyKTsKKyAgICBDSEVD
S19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgLy8gVGVzdCBzdG9yZVBh
aXIzMiBmcm9tIDEgcmVnaXN0ZXIuCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQuc3RvcmVQYWlyMzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIGJ1ZmZlckdQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKHVuc2lnbmVkKSkpOworCisgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9Owor
CisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZzAgPSBjb21waWxlKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpckZyb21PbmVSZWcoaml0LCAwKTsK
KyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3Jl
UGFpckZyb21PbmVSZWcwLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZl
clswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFs
VmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzRdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgdmFsdWUyKTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls3XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0
aWFsVmFsdWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkp
OworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ01pbnVzMiA9IGNvbXBpbGUoWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhq
aXQsIC0yKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4o
dGVzdFN0b3JlUGFpckZyb21PbmVSZWdNaW51czIsIHZhbHVlMSwgJmJ1ZmZlcls0XSk7CisgICAg
Q0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgdmFsdWUx
KTsKKyAgICBDSEVDS19FUShidWZmZXJbM10sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIGluaXRpYWxW
YWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbOF0sIGluaXRpYWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5p
dGlhbFZhbHVlICsgOSk7CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnUGx1czMg
PSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFp
ckZyb21PbmVSZWcoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBp
bnZva2U8dm9pZD4odGVzdFN0b3JlUGFpckZyb21PbmVSZWdQbHVzMywgdmFsdWUyLCAmYnVmZmVy
WzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENI
RUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzJdLCBpbml0aWFsVmFsdWUgKyAyKTsKKyAgICBDSEVDS19FUShidWZmZXJbM10sIGluaXRpYWxW
YWx1ZSArIDMpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsgNCk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgdmFs
dWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKK30KKwogI2lmIENQVShBUk02NCkKIHZvaWQgdGVz
dExvYWRTdG9yZVBhaXI2NEludDY0KCkKIHsKQEAgLTMzMjUsNiArMzU2NCwzMiBAQCB2b2lkIHRl
c3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpCiAgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVl
MSk7CiAgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CiAKKyAgICAvLyBUZXN0IGxv
YWRQYWlyNjQgdXNpbmcgYSBidWZmZXIgcmVnaXN0ZXIgYXMgYSBkZXN0aW5hdGlvbi4KKyAgICBh
dXRvIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uID0gW10gKEND
YWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xv
Z3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjA7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LmxvYWRQYWlyNjQoYnVmZmVyR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgaml0LnN0b3Jl
NjQoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwg
MCkpOworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHBhaXJHUFIsIHNpemVvZih1aW50NjRfdCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rp
b25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfTsKKworICAgIGF1dG8g
dGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wID0gY29tcGlsZShb
Jl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVy
UmVnaXN0ZXJBc0Rlc3RpbmF0aW9uKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVy
KCk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJVc2lu
Z0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBD
SEVDS19FUShwYWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFp
ci52YWx1ZTIsIGluaXRpYWxWYWx1ZSArIDUpOworCiAgICAgLy8gVGVzdCBzdG9yZVBhaXI2NC4K
ICAgICBhdXRvIHRlc3RTdG9yZVBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZz
ZXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKQEAgLTQ4OTEsNiArNTE1
Niw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUwogICAgIEZPUl9FQUNIX0RPVUJMRV9DT05ESVRJT05fUlVOKHRlc3RDb21w
YXJlRG91YmxlU2FtZUFyZyk7CiAKICAgICBSVU4odGVzdE11bDMyV2l0aEltbWVkaWF0ZXMoKSk7
CisgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyMzIoKSk7CiAKICNpZiBDUFUoWDg2XzY0KQogICAg
IFJVTih0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAppbmRleCBjY2E3NDgyYzg5MDhlMDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4
YWFlLi5jODgxOTU3NTcxNTFmMTUxMzlkZjY3ZDdmZTI1OTA4MGE1YWZkMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMjc4LDggKzI3OCwxMCBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKIAogICAgIHN0cnVjdCBQYXJlbkNvbnRleHQgewogICAgICAgICBzdHJ1Y3QgUGFy
ZW5Db250ZXh0KiBuZXh0OwotICAgICAgICB1aW50MzJfdCBiZWdpbjsKLSAgICAgICAgdWludDMy
X3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIHN0cnVjdCBCZWdpbkFuZE1hdGNoQW1vdW50IHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IGJlZ2luOworICAgICAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91
bnQ7CisgICAgICAgIH0gYmVnaW5BbmRNYXRjaEFtb3VudDsKICAgICAgICAgdWludHB0cl90IHJl
dHVybkFkZHJlc3M7CiAgICAgICAgIHN0cnVjdCBTdWJwYXR0ZXJucyB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydDsKQEAgLTI5OSwxMiArMzAxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgYmVnaW5PZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbik7CisgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNl
dG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIGJlZ2luKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgbWF0Y2hBbW91bnRPZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBtYXRjaEFtb3VudCk7CisgICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9m
ZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIG1hdGNoQW1vdW50KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuQWRkcmVzc09mZnNldCgpCkBAIC0zNzQsMTcg
KzM3NiwyOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbW92ZShoZWFkUHRyUmVnaXN0ZXIs
IGZyZWVsaXN0UmVnaXN0ZXIpOwogICAgIH0KIAorCisgICAgdm9pZCBzdG9yZUJlZ2luQW5kTWF0
Y2hBbW91bnRUb1BhcmVuQ29udGV4dChSZWdpc3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1h
dGNoQW1vdW50R1BSLCBSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUikKKyAgICB7CisgICAgICAg
IEFTU0VSVChQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6
bWF0Y2hBbW91bnRPZmZzZXQoKSk7CisgICAgICAgIHN0b3JlUGFpcjMyKGJlZ2luR1BSLCBtYXRj
aEFtb3VudEdQUiwgcGFyZW5Db250ZXh0R1BSLCBUcnVzdGVkSW1tMzIoUGFyZW5Db250ZXh0Ojpi
ZWdpbk9mZnNldCgpKSk7CisgICAgfQorCisgICAgdm9pZCBsb2FkQmVnaW5BbmRNYXRjaEFtb3Vu
dEZyb21QYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRHUFIsIFJlZ2lzdGVySUQg
YmVnaW5HUFIsIFJlZ2lzdGVySUQgbWF0Y2hBbW91bnRHUFIpCisgICAgeworICAgICAgICBBU1NF
UlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNo
QW1vdW50T2Zmc2V0KCkpOworICAgICAgICBsb2FkUGFpcjMyKHBhcmVuQ29udGV4dEdQUiwgVHJ1
c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSLCBtYXRjaEFt
b3VudEdQUik7CisgICAgfQorCiAgICAgdm9pZCBzYXZlUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQg
cGFyZW5Db250ZXh0UmVnLCBSZWdpc3RlcklEIHRlbXBSZWcsIHVuc2lnbmVkIGZpcnN0U3VicGF0
dGVybiwgdW5zaWduZWQgbGFzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIHN1YnBhdHRlcm5CYXNlRnJh
bWVMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3MocGFyZW5D
b250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpKTsKICAgICAgICAgbG9hZEZy
b21GcmFtZShzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSwgdGVtcFJlZyk7Ci0gICAgICAgIHN0b3JlMzIodGVt
cFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRP
ZmZzZXQoKSkpOworICAgICAgICBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29udGV4
dChpbmRleCwgdGVtcFJlZywgcGFyZW5Db250ZXh0UmVnKTsKICAgICAgICAgbG9hZEZyb21GcmFt
ZShzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
OnJldHVybkFkZHJlc3NJbmRleCgpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVQdHIodGVtcFJl
ZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJuQWRkcmVzc09m
ZnNldCgpKSk7CiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVy
biA9IGZpcnN0U3VicGF0dGVybjsgc3VicGF0dGVybiA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0
dGVybisrKSB7Ci0gICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKG91dHB1dCwgKHN1YnBh
dHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICAg
ICAgc3RvcmVQdHIodGVtcFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4
dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkpOworICAgICAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwg
dGVtcFJlZyk7CisgICAgICAgICAgICAgICAgc3RvcmU2NCh0ZW1wUmVnLCBBZGRyZXNzKHBhcmVu
Q29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSk7
CiAgICAgICAgICAgICAgICAgY2xlYXJTdWJwYXR0ZXJuU3RhcnQoc3VicGF0dGVybik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM5NywxNiArNDExLDE1IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgdm9pZCByZXN0b3JlUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0
UmVnLCBSZWdpc3RlcklEIHRlbXBSZWcsIHVuc2lnbmVkIGZpcnN0U3VicGF0dGVybiwgdW5zaWdu
ZWQgbGFzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbikK
ICAgICB7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250
ZXh0OjpiZWdpbk9mZnNldCgpKSwgaW5kZXgpOworICAgICAgICBsb2FkQmVnaW5BbmRNYXRjaEFt
b3VudEZyb21QYXJlbkNvbnRleHQocGFyZW5Db250ZXh0UmVnLCBpbmRleCwgdGVtcFJlZyk7CiAg
ICAgICAgIHN0b3JlVG9GcmFtZShpbmRleCwgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsg
QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpiZWdpbkluZGV4KCkpOwotICAgICAgICBsb2FkMzIo
QWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQo
KSksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJh
c2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjptYXRjaEFtb3VudElu
ZGV4KCkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNv
bnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRv
RnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSk7CiAgICAgICAgIGlmIChtX2NvbXBp
bGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVybiA9IGZpcnN0U3VicGF0dGVybjsgc3VicGF0dGVy
biA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0dGVybisrKSB7Ci0gICAgICAgICAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zm
c2V0KHN1YnBhdHRlcm4pKSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICAgICAgc3RvcmVQdHIodGVt
cFJlZywgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVk
KSkpOworICAgICAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFy
ZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSwgdGVtcFJlZyk7CisgICAg
ICAgICAgICAgICAgc3RvcmU2NCh0ZW1wUmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4g
PDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICs9IFlhcnJTdGFja1NwYWNlRm9yQmFj
a1RyYWNrSW5mb1BhcmVudGhlc2VzOwpAQCAtMTI3NSw4ICsxMjg4LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIEp1bXBMaXN0IG1hdGNoZXM7CiAKICAgICAgICAgaWYgKHRlcm0tPnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KSB7Ci0gICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBh
dHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0
dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAg
ICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBw
YXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3Nm
dWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0
eU1heENvdW50ICE9IDEpIHsKQEAgLTEzMDcsOCArMTMxOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsK
ICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNl
c0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJ
bmRleCgpKTsKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwg
SW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNp
emVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRl
cm5UZW1wKTsKKyAgICAgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0
ZXJuSWQsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwogICAgICAgICAgICAgICAgIGp1bXAo
b3V0ZXJMb29wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1hdGNoZXMubGluayh0aGlz
KTsKQEAgLTEzMzEsOCArMTM0Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgc3Rv
cmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFj
a1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAg
ICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQogICAgICAg
ICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5xdWFu
dGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRk
cmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5J
bmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklk
IDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxv
YWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJu
VGVtcCk7CiAKICAgICAgICAgICAgIC8vIFN0b3JlIGN1cnJlbnQgaW5kZXggaW4gZnJhbWUgZm9y
IHJlc3RvcmluZyBhZnRlciBhIHBhcnRpYWwgbWF0Y2gKICAgICAgICAgICAgIHN0b3JlVG9GcmFt
ZShpbmRleCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZl
cmVuY2U6OmJlZ2luSW5kZXgoKSk7CkBAIC0xMzUzLDggKzEzNjMsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkp
LCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1
YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAg
ICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5JbmRl
eCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBtYXRjaCBpcyBzdWNj
ZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAgICAgIEp1bXAgemVy
b0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIFRydXN0ZWRJbW0zMigtMSksIHBhdHRlcm5J
bmRleCk7CkBAIC0xNDA4LDggKzE0MTcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
IGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0Jh
Y2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSwgbWF0Y2hBbW91bnQpOwogICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBtYXRjaEFtb3VudCkpOwogCi0g
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5TdGFydEluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkVuZEluZGV4T3JMZW4pOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwg
c3VicGF0dGVybklkLCBwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4pOwog
ICAgICAgICAgICAgc3ViMzIocGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJbmRleE9yTGVu
KTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5FbmRJbmRleE9yTGVuLCBpbmRleCk7CiAKQEAg
LTI0NDgsMTEgKzI0NTYsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKQogICAgICAgICAgICAgICAgICAg
ICAgICAgc3ViMzIoSW1tMzIocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJldHVy
blJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklU
Q29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0b3JlMzIocmV0dXJuUmVnaXN0ZXIsIG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVBhaXIzMihyZXR1cm5SZWdpc3RlciwgaW5k
ZXgsIG91dHB1dCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBnZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1
YnBhdHRlcm5zKQotICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91
dHB1dCwgNCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRD
b21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIyKTsKIAogICAgICAgICAg
ICAgICAgIGdlbmVyYXRlUmV0dXJuKCk7CkBAIC00MDUwLDYgKzQwNTksMTEgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIGxvYWRTdWJQYXR0ZXJucyhSZWdpc3Rl
cklEIG91dHB1dEdQUiwgdW5zaWduZWQgc3VicGF0dGVybklkLCBSZWdpc3RlcklEIHN0YXJ0SW5k
ZXhHUFIsIFJlZ2lzdGVySUQgZW5kSW5kZXhPckxlbkdQUikKKyAgICB7CisgICAgICAgIGxvYWRQ
YWlyMzIob3V0cHV0R1BSLCBUcnVzdGVkSW1tMzIoKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVv
ZihpbnQpKSwgc3RhcnRJbmRleEdQUiwgZW5kSW5kZXhPckxlbkdQUik7CisgICAgfQorCiBwdWJs
aWM6CiAgICAgWWFyckdlbmVyYXRvcihWTSogdm0sIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBTdHJp
bmcmIHBhdHRlcm5TdHJpbmcsIFlhcnJDb2RlQmxvY2smIGNvZGVCbG9jaywgQ2hhclNpemUgY2hh
clNpemUsIEpJVENvbXBpbGVNb2RlIGNvbXBpbGVNb2RlKQogICAgICAgICA6IG1fdm0odm0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434735</attachid>
            <date>2021-08-01 21:26:10 -0700</date>
            <delta_ts>2021-08-01 22:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801212609.patch</filename>
            <type>text/plain</type>
            <size>35003</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li43ZTlhOTU0MjdkYmE5YzY5
MTllODY2YTY5YjkyYjI0MzQ4YTk3ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkZHMgbG9hZFBhaXIzMiBhbmQgc3RvcmVQYWlyMzIgdG8gYWxsIG1hY3Jv
IGFzc2VtYmxlciBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBjYWxsIGl0IHdpdGhvdXQgQ1BVKEFS
TTY0KS4gSW50ZXJuYWxseSwgdHdvIGxvYWRzIG9yIHN0b3JlcyBhcmUgY29tYmluZWQuCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6Cisg
ICAgICAgIChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TG9h
ZFN0b3JlUGFpcjY0SW50NjQpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisKIDIwMjEt
MDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJVF9VTklDT0RF
X0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGU2YmZiZWM2
MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLmFjODYxNzIyNmUzYzMyZmI5NWE4Yjlh
NzI5OWFlYjBkZmIwNDk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMsMjcgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBsb2Fk
UGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3Qy
KQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigwKSwgZGVzdDEs
IGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisg
ICAgeworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2Ft
ZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5t
X3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAtMjU2KSB7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHA8MzI+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkg
eworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBk
ZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwg
ZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICB9CisgICAgfQorCiAgICAg
dm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQogICAgIHsKICAgICAgICAgbG9hZFBhaXI2NChzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKQEAgLTE0ODAsNyArMTUwMSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAg
ICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVj
b21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0g
NTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAg
ICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAg
ICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dDEsIFJlZ2lzdGVySUQgZGVzdDIpCkBAIC0xNDkwLDcgKzE1MjIsMTggQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRl
c3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBz
cmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8g
SWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAg
ICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikg
eworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAg
bG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTUwMCw3ICsxNTQzLDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIG9mZnNldCwgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVzdDIpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZz
ZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlz
IHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAo
b2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkRG91Ymxl
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgbG9hZERvdWJs
ZShBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOwogICAgIH0KIAogICAg
IHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJlYXNvbikKQEAgLTE4MjQsNiArMTg3
MywyMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0
LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMy
IG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSAyNTIgJiYgb2Zm
c2V0Lm1fdmFsdWUgPj0gLTI1NikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDMyPihz
cmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3Zh
bHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1
ZSArIDQpKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBh
aXI2NChzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMTgzMSw3ICsxODk1
LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNl
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9m
ZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4o
c3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92
YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3JhbEFj
Y2VzcyhSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTg0MSw3ICsxOTEwLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWly
NjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEy
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBv
ZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3RvcmU2NChzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0
b3JlNjQoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTg1MSw3ICsxOTI1LDEyIEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
IAogICAgIHZvaWQgc3RvcmVQYWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAt
NTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3Qs
IG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzdG9yZURvdWJsZShzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAg
ICAgIHN0b3JlRG91YmxlKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7
CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZWY4Yzk5ZWY2M2FkMjZkNmIxYTdjYzRhYjcxNDU3
MDYxNGM4ZTk2OS4uYjk1MTliYzc1YTc1ODRhMWEzZTlkNThiNjM5NzYzNTkyMTU0MmMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKQEAgLTg2Nyw2ICs4NjcsMjQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgewor
ICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOwor
ICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAg
ICAgIC8vIEZJWE1FOiBsZHJkIGNhbiBiZSB1c2VkIGlmIGRlc3QxIGFuZCBkZXN0MiBhcmUgY29u
c2VjdXRpdmUgcGFpciBvZiByZWdpc3RlcnMuCisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0
Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9u
LgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0
Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsMzIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW0zMihhZGRy
ZXNzLm9mZnNldCksIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtOTY1LDYgKzk4MywxOCBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQg
c3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwg
c3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFp
cjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICAvLyBGSVhNRTogc3RyZCBjYW4gYmUg
dXNlZCBpZiBzcmMxIGFuZCBzcmMyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4K
KyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDQpKTsK
KyAgICB9CisKICAgICAvLyBQb3NzaWJseSBjbG9iYmVycyBzcmMsIGJ1dCBub3Qgb24gdGhpcyBh
cmNoaXRlY3R1cmUuCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXgg
MzMzY2VlMDg2YTA0MGVmMWQ4ZTQzMDRlNmQ5MWE3MmRjNWY1N2VhYS4uMTQ0NWM3OTFiMjhjZWY1
ZGZjMTU2YzMxMjRjNmE0ZTIyMjFhYzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMjkzLDYgKzEyOTMsMjMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAg
eworICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIp
OworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZElt
bTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAg
YmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBk
ZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBE
YXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKQEAg
LTE1ODYsNiArMTYwMywxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3Qs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3Rl
cklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNl
dC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQu
bV92YWx1ZSArIDQpKTsKKyAgICB9CisKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25z
OgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCA1NGQ0NTY3ZDRjMWM0NWRmZTBjMzI4Y2E3YmNkYjg0ZTllYjJmOTc2Li40MzU2
ODg4OGZiZjA2NTA1Y2FmMTc5MDc2MTUzM2U3YTkyOTY0ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC0xMzAwLDYgKzEzMDAsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92c3dsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVz
dGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgemVyb0V4dGVuZDE2VG8zMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ends
X3JyKHNyYywgZGVzdCk7CkBAIC0xMzQ5LDYgKzEzNjYsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9pOG0oaW1tOC5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBk
ZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZElt
bTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBv
ZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVn
aXN0ZXJJRCBnZXRVbnVzZWRSZWdpc3RlcihCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXggJiYgYWRkcmVzcy5pbmRl
eCAhPSBYODZSZWdpc3RlcnM6OmVheCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKaW5kZXggMWNhNjk4M2ViNzBkOTY0MGJlNGZiMmYxMTBlMmY4ZTAxZjM4
ZjgzOC4uYTFjNzY3YjU5Y2JjOTQzYTAwYTMxZTMwNDk0Y2I0YzM1NGE2NWNhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTMyMzYsNiArMzIz
NiwyNDUgQEAgdm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTRmlsbDE2KCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NCkKIAordm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjMyKCkKK3sKKyAgICBjb25zdGV4cHIg
dWludDMyX3QgaW5pdGlhbFZhbHVlID0gMHg1NWFhYmI4MHU7CisgICAgY29uc3RleHByIHVpbnQz
Ml90IHZhbHVlMSA9IDQyOworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZTIgPSAweGNmYmIx
MzU3dTsKKworICAgIHVpbnQzMl90IGJ1ZmZlclsxMF07CisKKyAgICBhdXRvIGluaXRCdWZmZXIg
PSBbJl0geworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAg
ICAgICAgIGJ1ZmZlcltpXSA9IGluaXRpYWxWYWx1ZSArIGk7CisgICAgfTsKKworICAgIHN0cnVj
dCBQYWlyIHsKKyAgICAgICAgdWludDMyX3QgdmFsdWUxOworICAgICAgICB1aW50MzJfdCB2YWx1
ZTI7CisgICAgfTsKKworICAgIFBhaXIgcGFpcjsKKyAgICBhdXRvIGluaXRQYWlyID0gWyZdIHsK
KyAgICAgICAgcGFpciA9IHsgMCwgMCB9OworICAgIH07CisKKyAgICAvLyBUZXN0IGxvYWRQYWly
MzIuCisgICAgYXV0byB0ZXN0TG9hZFBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBv
ZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAg
ICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOworCisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdU
MywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIHNpemVvZih1aW50MzJfdCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAwKTsKKyAgICB9KTsKKworICAg
IGluaXRCdWZmZXIoKTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RM
b2FkUGFpcjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwg
aW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1
ZSArIDUpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNF0gPSB2YWx1ZTE7CisgICAg
YnVmZmVyWzVdID0gdmFsdWUyOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIwLCAmYnVm
ZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpck1p
bnVzMiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9h
ZFBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2
b2lkPih0ZXN0TG9hZFBhaXJNaW51czIsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19F
UShwYWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCAtIDIpOworICAgIENIRUNLX0VRKHBhaXIu
dmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1IC0gMik7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1
ZmZlcls0IC0gMl0gPSB2YWx1ZTI7CisgICAgYnVmZmVyWzUgLSAyXSA9IHZhbHVlMTsKKyAgICBp
bnZva2U8dm9pZD4odGVzdExvYWRQYWlyTWludXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IHZhbHVlMSk7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpclBsdXMzID0gY29tcGlsZShbJl0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpcihqaXQsIDMpOworICAgIH0p
OworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyUGx1czMs
ICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgaW5pdGlhbFZh
bHVlICsgNCArIDMpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1
ICsgMyk7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1ZmZlcls0ICsgM10gPSB2YWx1ZTE7Cisg
ICAgYnVmZmVyWzUgKyAzXSA9IHZhbHVlMjsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWly
UGx1czMsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFs
dWUxKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKKworICAgIC8vIFRlc3Qg
bG9hZFBhaXIzMiB1c2luZyBhIGJ1ZmZlciByZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAg
IGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmUz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAw
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQzMl90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24oaml0LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5n
QnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENI
RUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWly
LnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFpcjMyLgor
ICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNl
dCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgICAgICBq
aXQuc3RvcmVQYWlyMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9m
KHVuc2lnbmVkKSkpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyMCA9IGNvbXBp
bGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyKGppdCwg
MCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RT
dG9yZVBhaXIwLCB2YWx1ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRp
YWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19F
UShidWZmZXJbNF0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGlu
aXRpYWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsg
OSk7CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJNaW51czIgPSBjb21waWxlKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIC0yKTsKKyAgICB9KTsK
KworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFpck1pbnVz
MiwgdmFsdWUxLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwg
aW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUg
KyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzNdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsg
NCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVD
S19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3
XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFs
dWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisg
ICAgYXV0byB0ZXN0U3RvcmVQYWlyUGx1czMgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDMpOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyUGx1czMsIHZhbHVlMSwg
dmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1
ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAg
Q0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUgKyAyKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlh
bFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsK
KyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls3XSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIHZhbHVlMik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIC8vIFRlc3Qg
c3RvcmVQYWlyMzIgZnJvbSAxIHJlZ2lzdGVyLgorICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZl
ckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LnN0b3JlUGFpcjMyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25lZCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWcwID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGpp
dCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRl
c3RTdG9yZVBhaXJGcm9tT25lUmVnMCwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwg
aW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUg
KyAyKTsKKyAgICBDSEVDS19FUShidWZmZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls0XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIHZhbHVl
Mik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVD
S19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4
XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFs
dWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdNaW51czIgPSBjb21w
aWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tl
PHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyLCB2YWx1ZTEsICZidWZmZXJbNF0p
OworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tf
RVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0s
IHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCB2YWx1ZTEpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBp
bml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSAr
IDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFsdWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJb
OV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJl
Z1BsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RT
dG9yZVBhaXJGcm9tT25lUmVnKGppdCwgMyk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnUGx1czMsIHZhbHVlMiwg
JmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsK
KyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VR
KGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBp
bml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSAr
IDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNL
X0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7Cit9CisKICNpZiBDUFUoQVJNNjQpCiB2
b2lkIHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpCiB7CkBAIC0zMzI1LDYgKzM1NjQsMzIgQEAg
dm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKQogICAgIENIRUNLX0VRKHBhaXIudmFsdWUx
LCB2YWx1ZTEpOwogICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOwogCisgICAgLy8g
VGVzdCBsb2FkUGFpcjY0IHVzaW5nIGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24u
CisgICAgYXV0byB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGppdC5sb2FkUGFpcjY0KGJ1ZmZlckdQ
UiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKENQVVJlZ2lzdGVy
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBh
aXJHUFIsIDApKTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYWlyR1BSLCBzaXplb2YodWludDY0X3QpKSk7CisKKyAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAg
ICBhdXRvIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNv
bXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2lu
Z0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQ
YWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7
CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNL
X0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsKKwogICAgIC8vIFRlc3Qgc3RvcmVQ
YWlyNjQuCiAgICAgYXV0byB0ZXN0U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBp
bnQgb2Zmc2V0KSB7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CkBAIC00ODkx
LDYgKzUxNTYsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBGT1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTih0
ZXN0Q29tcGFyZURvdWJsZVNhbWVBcmcpOwogCiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlh
dGVzKCkpOworICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjMyKCkpOwogCiAjaWYgQ1BVKFg4Nl82
NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ1JlZygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggY2NhNzQ4MmM4OTA4ZTAwMTM5ZDMxNmU4MTc2YWQ3
YzJlZjVjOGFhZS4uYzg4MTk1NzU3MTUxZjE1MTM5ZGY2N2Q3ZmUyNTkwODBhNWFmZDExOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTI3OCw4ICsyNzgsMTAgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0IHsKICAgICAgICAgc3Ry
dWN0IFBhcmVuQ29udGV4dCogbmV4dDsKLSAgICAgICAgdWludDMyX3QgYmVnaW47Ci0gICAgICAg
IHVpbnQzMl90IG1hdGNoQW1vdW50OworICAgICAgICBzdHJ1Y3QgQmVnaW5BbmRNYXRjaEFtb3Vu
dCB7CisgICAgICAgICAgICB1aW50MzJfdCBiZWdpbjsKKyAgICAgICAgICAgIHVpbnQzMl90IG1h
dGNoQW1vdW50OworICAgICAgICB9IGJlZ2luQW5kTWF0Y2hBbW91bnQ7CiAgICAgICAgIHVpbnRw
dHJfdCByZXR1cm5BZGRyZXNzOwogICAgICAgICBzdHJ1Y3QgU3VicGF0dGVybnMgewogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQ7CkBAIC0yOTksMTIgKzMwMSwxMiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGJlZ2luT2Zmc2V0KCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW4pOworICAgICAg
ICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW5BbmRNYXRjaEFtb3VudCkg
KyBvZmZzZXRvZihCZWdpbkFuZE1hdGNoQW1vdW50LCBiZWdpbik7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IG1hdGNoQW1vdW50T2Zmc2V0KCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgbWF0Y2hBbW91bnQpOworICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW5BbmRNYXRjaEFtb3Vu
dCkgKyBvZmZzZXRvZihCZWdpbkFuZE1hdGNoQW1vdW50LCBtYXRjaEFtb3VudCk7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHJldHVybkFkZHJlc3NPZmZzZXQoKQpAQCAt
Mzc0LDE3ICszNzYsMjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1vdmUoaGVhZFB0clJl
Z2lzdGVyLCBmcmVlbGlzdFJlZ2lzdGVyKTsKICAgICB9CiAKKworICAgIHZvaWQgc3RvcmVCZWdp
bkFuZE1hdGNoQW1vdW50VG9QYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVnaXN0
ZXJJRCBtYXRjaEFtb3VudEdQUiwgUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRHUFIpCisgICAgewor
ICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNv
bnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQ
UiwgbWF0Y2hBbW91bnRHUFIsIHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29u
dGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgIH0KKworICAgIHZvaWQgbG9hZEJlZ2luQW5kTWF0
Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSLCBSZWdp
c3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0
OjptYXRjaEFtb3VudE9mZnNldCgpKTsKKyAgICAgICAgbG9hZFBhaXIzMihwYXJlbkNvbnRleHRH
UFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpLCBiZWdpbkdQUiwg
bWF0Y2hBbW91bnRHUFIpOworICAgIH0KKwogICAgIHZvaWQgc2F2ZVBhcmVuQ29udGV4dChSZWdp
c3RlcklEIHBhcmVuQ29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1wUmVnLCB1bnNpZ25lZCBmaXJz
dFN1YnBhdHRlcm4sIHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBzdWJwYXR0ZXJu
QmFzZUZyYW1lTG9jYXRpb24pCiAgICAgewotICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNz
KHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSk7CiAgICAgICAg
IGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCksIHRlbXBSZWcpOwotICAgICAgICBzdG9y
ZTMyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNo
QW1vdW50T2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVCZWdpbkFuZE1hdGNoQW1vdW50VG9QYXJl
bkNvbnRleHQoaW5kZXgsIHRlbXBSZWcsIHBhcmVuQ29udGV4dFJlZyk7CiAgICAgICAgIGxvYWRG
cm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlUHRy
KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnJldHVybkFk
ZHJlc3NPZmZzZXQoKSkpOwogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxl
TW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1
YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47
IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhvdXRwdXQs
IChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSksIHRlbXBSZWcpOwotICAgICAg
ICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKKyAgICAgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2ln
bmVkKSksIHRlbXBSZWcpOworICAgICAgICAgICAgICAgIHN0b3JlNjQodGVtcFJlZywgQWRkcmVz
cyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0
ZXJuKSkpOwogICAgICAgICAgICAgICAgIGNsZWFyU3VicGF0dGVyblN0YXJ0KHN1YnBhdHRlcm4p
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zOTcsMTYgKzQxMSwxNSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKIAogICAgIHZvaWQgcmVzdG9yZVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVu
Q29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1wUmVnLCB1bnNpZ25lZCBmaXJzdFN1YnBhdHRlcm4s
IHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9j
YXRpb24pCiAgICAgewotICAgICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBh
cmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGluZGV4KTsKKyAgICAgICAgbG9hZEJlZ2luQW5k
TWF0Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0KHBhcmVuQ29udGV4dFJlZywgaW5kZXgsIHRlbXBS
ZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUoaW5kZXgsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2Nh
dGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6YmVnaW5JbmRleCgpKTsKLSAgICAgICAg
bG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50
T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBh
dHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hB
bW91bnRJbmRleCgpKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywg
UGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAg
c3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0luZGV4KCkpOwogICAgICAgICBpZiAo
bV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1
YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0
dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRlbXBSZWcpOwotICAgICAgICAgICAgICAgIHN0b3Jl
UHRyKHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1
bnNpZ25lZCkpKTsKKyAgICAgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhwYXJlbkNvbnRleHRS
ZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRlbXBSZWcp
OworICAgICAgICAgICAgICAgIHN0b3JlNjQodGVtcFJlZywgQWRkcmVzcyhvdXRwdXQsIChzdWJw
YXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKQEAgLTEyNzUsOCArMTI4OCw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICBKdW1wTGlzdCBtYXRjaGVzOwogCiAgICAgICAgIGlmICh0ZXJt
LT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeSkgewotICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGlu
dCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAo
KHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7Cisg
ICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5J
bmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBtYXRjaCBpcyBz
dWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAgICAgIGlmICh0
ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS0+
cXVhbnRpdHlNYXhDb3VudCAhPSAxKSB7CkBAIC0xMzA3LDggKzEzMTksNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIGNoYXJhY3Rlck9y
VGVtcCk7CiAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFy
ZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNo
QW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIo
RXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQpLCBjaGFyYWN0ZXJPclRlbXApKTsK
LSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwg
MSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkp
LCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwg
c3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKICAgICAgICAgICAgICAg
ICBqdW1wKG91dGVyTG9vcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXRjaGVzLmxp
bmsodGhpcyk7CkBAIC0xMzMxLDggKzEzNDIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAg
ICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkK
ICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVy
bS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBw
YXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBh
dHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAg
ICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5JbmRleCwg
cGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBTdG9yZSBjdXJyZW50IGluZGV4IGluIGZy
YW1lIGZvciByZXN0b3JpbmcgYWZ0ZXIgYSBwYXJ0aWFsIG1hdGNoCiAgICAgICAgICAgICBzdG9y
ZVRvRnJhbWUoaW5kZXgsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9C
YWNrUmVmZXJlbmNlOjpiZWdpbkluZGV4KCkpOwpAQCAtMTM1Myw4ICsxMzYzLDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7CiAKLSAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVv
ZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1
dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXAp
OworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0
ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2gg
aXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBK
dW1wIHplcm9MZW5ndGhNYXRjaCA9IGJyYW5jaDMyKEVxdWFsLCBUcnVzdGVkSW1tMzIoLTEpLCBw
YXR0ZXJuSW5kZXgpOwpAQCAtMTQwOCw4ICsxNDE3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFj
a0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCksIG1hdGNoQW1vdW50KTsKICAg
ICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgbWF0Y2hBbW91bnQp
KTsKIAotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8
IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuU3RhcnRJbmRleCk7Ci0gICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50
KSksIHBhdHRlcm5FbmRJbmRleE9yTGVuKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhv
dXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJbmRleE9y
TGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5k
ZXhPckxlbik7CiAgICAgICAgICAgICBzdWIzMihwYXR0ZXJuRW5kSW5kZXhPckxlbiwgaW5kZXgp
OwogCkBAIC0yNDQ4LDExICsyNDU2LDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgICAgICBpZiAocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1YjMyKEltbTMyKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUp
LCByZXR1cm5SZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2NvbXBpbGVNb2Rl
ID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZTMyKHJldHVyblJlZ2lzdGVyLCBvdXRwdXQpOwotICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVQYWlyMzIocmV0dXJuUmVnaXN0
ZXIsIGluZGV4LCBvdXRwdXQsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgZ2V0TWF0Y2hTdGFydChyZXR1cm5SZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Oklu
Y2x1ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRk
cmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUg
PT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0cHV0LCA0KSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lzdGVyMik7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZVJldHVybigpOwpAQCAtNDA1MCw2ICs0MDU5LDExIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBsb2FkU3ViUGF0dGVybnMo
UmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCwgUmVnaXN0ZXJJRCBz
dGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVuZEluZGV4T3JMZW5HUFIpCisgICAgeworICAgICAg
ICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChzdWJwYXR0ZXJuSWQgPDwgMSkg
KiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4T3JMZW5HUFIpOworICAgIH0K
KwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0dGVy
biwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENoYXJT
aXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZSkKICAgICAgICAgOiBtX3Zt
KHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434738</attachid>
            <date>2021-08-01 22:18:35 -0700</date>
            <delta_ts>2021-08-01 22:23:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801221834.patch</filename>
            <type>text/plain</type>
            <size>42899</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li4xYWFkZTAxMzkxOTdkYzIz
OTI2YjBjODZjYWU3YWY5YWYwN2ViZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGxvYWRQYWlyMzIgYW5kIHN0b3JlUGFpcjMyIHRvIGFsbCBtYWNybyBhc3Nl
bWJsZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gY2FsbCBpdCB3aXRob3V0IENQVShBUk02NCku
IEludGVybmFsbHksIHR3byBsb2FkcyBvciBzdG9yZXMgYXJlIGNvbWJpbmVkLgorCisgICAgICAg
IFdlIGFsc28gYWRkIHN1YjMyKFJlZ2lzdGVySUQsIFRydXN0ZWRJbW0zMiwgUmVnaXN0ZXJJRCkg
dG8gYWxsIHBsYXRmb3JtcyBzbyB0aGF0CisgICAgICAgIHdlIGNhbiByZW1vdmUgc29tZSB1bm5l
Y2Vzc2FyeSBtb3ZlcyBvbiBBUk02NCAvIEFSTXY3IC8gTUlQUy4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZFBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVQYWlyNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkUGFpcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TG9hZFN0b3JlUGFpcjMyKToK
KyAgICAgICAgKEpTQzo6dGVzdExvYWRTdG9yZVBhaXI2NEludDY0KToKKyAgICAgICAgKiB5YXJy
L1lhcnJKSVQuY3BwOgorCiAyMDIxLTA3LTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gTW92ZSBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUyB0byBF
TkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9FWFBSRVNTSU9OUykgaW4gUGxhdGZvcm1FbmFibGUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAppbmRleCBlNmJmYmVjNjAwMWMxMGM2MWU5ZjI2NmVmZjI3YWQ2ZjEwZTg5ZjhmLi5h
Yzg2MTcyMjZlM2MzMmZiOTVhOGI5YTcyOTlhZWIwZGZiMDQ5NTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
MTQ3Myw2ICsxNDczLDI3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwog
ICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBU
cnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFp
cjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3Qx
LCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3Qy
KTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24u
CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSAyNTIgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0g
LTI1NikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDMyPihkZXN0MSwgZGVzdDIsIHNy
Yywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mo
c3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWly
NjQoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDEs
MTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3Jj
LCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3Qy
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBp
dCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAg
aWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQu
bV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNy
YyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTQ5MCw3ICsx
NTIyLDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1w
b3JhbEFjY2VzcyhSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
bnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VS
VChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxl
Z2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9m
ZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+
KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9h
ZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSks
IGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUg
KyA4KSwgZGVzdDIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKQEAg
LTE1MDAsNyArMTU0MywxMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjQo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIEZQUmVnaXN0ZXJJRCBkZXN0MSwg
RlBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0Pihk
ZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEg
IT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0
cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92
YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBk
ZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbG9hZERvdWJsZShBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0
MSk7CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCks
IGRlc3QyKTsKICAgICB9CiAKICAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiBy
ZWFzb24pCkBAIC0xODI0LDYgKzE4NzMsMjEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1
cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEs
IFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQ
YWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0
Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNldC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cDwzMj4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRk
cmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJl
c3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVBh
aXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgc3RvcmVQYWlyNjQoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMy
KDApKTsKQEAgLTE4MzEsNyArMTg5NSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDog
cHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0
b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdHA8
NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNl
dC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFk
ZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRy
ZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNy
YzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NDEsNyArMTkxMCwxMiBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZz
ZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0
LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYg
b2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2
ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQu
bV92YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1f
dmFsdWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChGUFJlZ2lzdGVySUQg
c3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NTEsNyArMTky
NSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJ
RCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIg
b2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBk
ZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQg
JiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Rw
PDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVEb3VibGUoc3JjMSwgQWRkcmVzcyhkZXN0LCBv
ZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMyLCBBZGRyZXNzKGRlc3Qs
IG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3Rl
cklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGVmOGM5OWVm
NjNhZDI2ZDZiMWE3Y2M0YWI3MTQ1NzA2MTRjOGU5NjkuLjc2NjVmZmVmNWM0NWUzNzQ4ZTk5NmJk
ZDU0MjM1MDM1MjgxNTk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01NDAsNiArNTQwLDE3IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3ViKGRlc3QsIGxlZnQsIHJpZ2h0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1J
bW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShyaWdodC5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWIoZGVzdCwgbGVmdCwgYXJtSW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlKHJpZ2h0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YihkZXN0LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1h
a2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwpAQCAtODY3LDYgKzg3OCwyNCBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0K
IAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwg
UmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVk
SW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdp
c3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGxkcmQgY2FuIGJlIHVzZWQg
aWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAg
ICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBi
ZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVz
dDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRl
c3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIERh
dGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7
CkBAIC05NjUsNiArOTk0LDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmUxNihkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJl
Z2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKKyAgICB7CisgICAg
ICAgIC8vIEZJWE1FOiBzdHJkIGNhbiBiZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNl
Y3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgorICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3Mo
ZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRl
c3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8vIFBvc3NpYmx5IGNsb2Ji
ZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KICAgICB2b2lkIG1vdmVEb3Vi
bGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBk
ZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAzMzNjZWUwODZhMDQwZWYxZDhlNDMwNGU2ZDkxYTcy
ZGM1ZjU3ZWFhLi4xNDQ1Yzc5MWIyOGNlZjVkZmMxNTZjMzEyNGM2YTRlMjIyMWFjMWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKQEAgLTEyOTMsNiArMTI5MywyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVz
dGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpAQCAtMTU4Niw2ICsxNjAzLDE3IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNy
YzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZTMy
KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihz
cmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8v
IEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM6CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDU0ZDQ1NjdkNGMxYzQ1ZGZlMGMz
MjhjYTdiY2RiODRlOWViMmY5NzYuLjlhZmIzMjY0ZGUzMjc2ODQyN2M0YzY0Y2M4MTMwODBiNzU2
NDczMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTgyNSw2ICs4MjUsMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgc3ViMzIocmlnaHQsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
c3ViMzIoUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUobGVmdCwgZGVzdCk7CisgICAgICAgIHN1YjMyKHJpZ2h0
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpAQCAtMTMw
MCw2ICsxMzA2LDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnN3bF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lz
dGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMy
KDApLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKKyAgICB7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0
IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBp
ZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIHplcm9FeHRlbmQxNlRvMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnp3bF9ycihzcmMs
IGRlc3QpOwpAQCAtMTM0OSw2ICsxMzcyLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmJfaThtKGltbTgubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9p
ZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1
c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZz
ZXQpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1f
dmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3Zh
bHVlICsgNCkpOworICAgIH0KKwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQg
Z2V0VW51c2VkUmVnaXN0ZXIoQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAo
YWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWF4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2
UmVnaXN0ZXJzOjplYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCmluZGV4IDFjYTY5ODNlYjcwZDk2NDBiZTRmYjJmMTEwZTJmOGUwMWYzOGY4MzguLmEx
Yzc2N2I1OWNiYzk0M2EwMGEzMWUzMDQ5NGNiNGMzNTRhNjVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0zMjM2LDYgKzMyMzYsMjQ1IEBA
IHZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBU0ZpbGwxNigpCiAKICNlbmRpZiAvLyBDUFUoQVJNNjQp
CiAKK3ZvaWQgdGVzdExvYWRTdG9yZVBhaXIzMigpCit7CisgICAgY29uc3RleHByIHVpbnQzMl90
IGluaXRpYWxWYWx1ZSA9IDB4NTVhYWJiODB1OworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1
ZTEgPSA0MjsKKyAgICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUyID0gMHhjZmJiMTM1N3U7CisK
KyAgICB1aW50MzJfdCBidWZmZXJbMTBdOworCisgICAgYXV0byBpbml0QnVmZmVyID0gWyZdIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgICAgICBi
dWZmZXJbaV0gPSBpbml0aWFsVmFsdWUgKyBpOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFpciB7
CisgICAgICAgIHVpbnQzMl90IHZhbHVlMTsKKyAgICAgICAgdWludDMyX3QgdmFsdWUyOworICAg
IH07CisKKyAgICBQYWlyIHBhaXI7CisgICAgYXV0byBpbml0UGFpciA9IFsmXSB7CisgICAgICAg
IHBhaXIgPSB7IDAsIDAgfTsKKyAgICB9OworCisgICAgLy8gVGVzdCBsb2FkUGFpcjMyLgorICAg
IGF1dG8gdGVzdExvYWRQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7
CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0
LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQg
KiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKKwor
ICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHBhaXJHUFIsIDApKTsKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisK
KyAgICBhdXRvIHRlc3RMb2FkUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVm
ZmVyKCk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIw
LCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxW
YWx1ZSArIDQpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsK
KworICAgIGluaXRQYWlyKCk7CisgICAgYnVmZmVyWzRdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1
XSA9IHZhbHVlMjsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyMCwgJmJ1ZmZlcls0XSwg
JnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOworICAgIENIRUNLX0VR
KHBhaXIudmFsdWUyLCB2YWx1ZTIpOworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJNaW51czIgPSBj
b21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGpp
dCwgLTIpOworICAgIH0pOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVz
dExvYWRQYWlyTWludXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52
YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQgLSAyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwg
aW5pdGlhbFZhbHVlICsgNSAtIDIpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCAt
IDJdID0gdmFsdWUyOworICAgIGJ1ZmZlcls1IC0gMl0gPSB2YWx1ZTE7CisgICAgaW52b2tlPHZv
aWQ+KHRlc3RMb2FkUGFpck1pbnVzMiwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VR
KHBhaXIudmFsdWUxLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTEp
OworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJQbHVzMyA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAg
IGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVy
WzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQg
KyAzKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSArIDMpOwor
CisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCArIDNdID0gdmFsdWUxOworICAgIGJ1ZmZl
cls1ICsgM10gPSB2YWx1ZTI7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAm
YnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7Cisg
ICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICAvLyBUZXN0IGxvYWRQYWly
MzIgdXNpbmcgYSBidWZmZXIgcmVnaXN0ZXIgYXMgYSBkZXN0aW5hdGlvbi4KKyAgICBhdXRvIHRl
c3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uID0gW10gKENDYWxsSGVs
cGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjA7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFy
Z3VtZW50R1BSMTsKKyAgICAgICAgaml0LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAg
ICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBh
aXJHUFIsIHNpemVvZih1aW50MzJfdCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1
ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQ
YWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wID0gY29tcGlsZShbJl0gKENDYWxs
SGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJB
c0Rlc3RpbmF0aW9uKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAg
ICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJl
Z2lzdGVyQXNEZXN0aW5hdGlvbjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShw
YWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IGluaXRpYWxWYWx1ZSArIDUpOworCisgICAgLy8gVGVzdCBzdG9yZVBhaXIzMi4KKyAgICBhdXRv
IHRlc3RTdG9yZVBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAgICAgaml0LnN0b3Jl
UGFpcjMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBidWZm
ZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25l
ZCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpcjAgPSBjb21waWxlKFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDApOworICAg
IH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWly
MCwgdmFsdWUxLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwg
aW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUg
KyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENI
RUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzRdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgdmFsdWUyKTsKKyAgICBDSEVD
S19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3
XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFs
dWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisg
ICAgYXV0byB0ZXN0U3RvcmVQYWlyTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBp
bml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJNaW51czIsIHZhbHVl
MSwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxW
YWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwg
dmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAg
IENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIGluaXRp
YWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8g
dGVzdFN0b3JlUGFpclBsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgIHRlc3RTdG9yZVBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFpclBsdXMzLCB2YWx1ZTEsIHZhbHVlMiwg
JmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsK
KyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VR
KGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBp
bml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSAr
IDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNL
X0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFp
cjMyIGZyb20gMSByZWdpc3Rlci4KKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnID0g
W10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGppdC5zdG9yZVBhaXIzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgYnVmZmVyR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodW5zaWduZWQpKSk7CisKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisK
KyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhqaXQsIDApOwor
ICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQ
YWlyRnJvbU9uZVJlZzAsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxW
YWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShi
dWZmZXJbNF0sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOworICAg
IENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGluaXRp
YWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7
CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGpp
dCwgLTIpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0
ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ01pbnVzMiwgdmFsdWUxLCAmYnVmZmVyWzRdKTsKKyAgICBD
SEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZl
clsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEp
OworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJb
NF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZh
bHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0
aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdQbHVzMyA9
IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWly
RnJvbU9uZVJlZyhqaXQsIDMpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGlu
dm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ1BsdXMzLCB2YWx1ZTIsICZidWZmZXJb
NF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJb
Ml0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZh
bHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCB2YWx1
ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworfQorCiAjaWYgQ1BVKEFSTTY0KQogdm9pZCB0ZXN0
TG9hZFN0b3JlUGFpcjY0SW50NjQoKQogewpAQCAtMzMyNSw2ICszNTY0LDMyIEBAIHZvaWQgdGVz
dExvYWRTdG9yZVBhaXI2NEludDY0KCkKICAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFsdWUx
KTsKICAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKIAorICAgIC8vIFRlc3QgbG9h
ZFBhaXI2NCB1c2luZyBhIGJ1ZmZlciByZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAgIGF1
dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86
OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQubG9hZFBhaXI2NChidWZmZXJHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAw
KSk7CisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQ2NF90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24oaml0LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5n
QnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENI
RUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWly
LnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7CisKICAgICAvLyBUZXN0IHN0b3JlUGFpcjY0Lgog
ICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNl
dCkgewogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwpAQCAtNDg5MSw2ICs1MTU2
LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTCiAgICAgRk9SX0VBQ0hfRE9VQkxFX0NPTkRJVElPTl9SVU4odGVzdENvbXBh
cmVEb3VibGVTYW1lQXJnKTsKIAogICAgIFJVTih0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpKTsK
KyAgICBSVU4odGVzdExvYWRTdG9yZVBhaXIzMigpKTsKIAogI2lmIENQVShYODZfNjQpCiAgICAg
UlVOKHRlc3RCcmFuY2hUZXN0Qml0MzJSZWdSZWcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCmluZGV4IGNjYTc0ODJjODkwOGUwMDEzOWQzMTZlODE3NmFkN2MyZWY1Yzhh
YWUuLjM2NmNjNzY4ZGFhODJmNzIxNjlhOGIxZmMxYWYyYzlmN2Y3MDQ5YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0yNzgsOCArMjc4LDEwIEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogCiAgICAgc3RydWN0IFBhcmVuQ29udGV4dCB7CiAgICAgICAgIHN0cnVjdCBQYXJl
bkNvbnRleHQqIG5leHQ7Ci0gICAgICAgIHVpbnQzMl90IGJlZ2luOwotICAgICAgICB1aW50MzJf
dCBtYXRjaEFtb3VudDsKKyAgICAgICAgc3RydWN0IEJlZ2luQW5kTWF0Y2hBbW91bnQgeworICAg
ICAgICAgICAgdWludDMyX3QgYmVnaW47CisgICAgICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3Vu
dDsKKyAgICAgICAgfSBiZWdpbkFuZE1hdGNoQW1vdW50OwogICAgICAgICB1aW50cHRyX3QgcmV0
dXJuQWRkcmVzczsKICAgICAgICAgc3RydWN0IFN1YnBhdHRlcm5zIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0OwpAQCAtMjk5LDEyICszMDEsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAg
ICAgICAgc3RhdGljIHB0cmRpZmZfdCBiZWdpbk9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luKTsKKyAgICAgICAgICAgIHJl
dHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0
b2YoQmVnaW5BbmRNYXRjaEFtb3VudCwgYmVnaW4pOwogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBtYXRjaEFtb3VudE9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIG1hdGNoQW1vdW50KTsKKyAgICAgICAgICAg
IHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zm
c2V0b2YoQmVnaW5BbmRNYXRjaEFtb3VudCwgbWF0Y2hBbW91bnQpOwogICAgICAgICB9CiAKICAg
ICAgICAgc3RhdGljIHB0cmRpZmZfdCByZXR1cm5BZGRyZXNzT2Zmc2V0KCkKQEAgLTM3NCwxNyAr
Mzc2LDI5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBtb3ZlKGhlYWRQdHJSZWdpc3Rlciwg
ZnJlZWxpc3RSZWdpc3Rlcik7CiAgICAgfQogCisKKyAgICB2b2lkIHN0b3JlQmVnaW5BbmRNYXRj
aEFtb3VudFRvUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgYmVnaW5HUFIsIFJlZ2lzdGVySUQgbWF0
Y2hBbW91bnRHUFIsIFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0Ojpt
YXRjaEFtb3VudE9mZnNldCgpKTsKKyAgICAgICAgc3RvcmVQYWlyMzIoYmVnaW5HUFIsIG1hdGNo
QW1vdW50R1BSLCBwYXJlbkNvbnRleHRHUFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJl
Z2luT2Zmc2V0KCkpKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50
RnJvbVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0ZXJJRCBi
ZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisgICAgICAgIEFTU0VS
VChQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6bWF0Y2hB
bW91bnRPZmZzZXQoKSk7CisgICAgICAgIGxvYWRQYWlyMzIocGFyZW5Db250ZXh0R1BSLCBUcnVz
dGVkSW1tMzIoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSwgYmVnaW5HUFIsIG1hdGNoQW1v
dW50R1BSKTsKKyAgICB9CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBw
YXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0
ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNv
bnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJv
bUZyYW1lKHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1w
UmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKSk7CisgICAgICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0
KGluZGV4LCB0ZW1wUmVnLCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1l
KHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6
cmV0dXJuQWRkcmVzc0luZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVn
LCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zm
c2V0KCkpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Oklu
Y2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJu
ID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0
ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0
dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAg
ICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0
OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0
KEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0
ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5D
b250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsK
ICAgICAgICAgICAgICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMzk3LDE2ICs0MTEsMTUgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAKICAgICB2b2lkIHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRS
ZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRl
eHQ6OmJlZ2luT2Zmc2V0KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1v
dW50RnJvbVBhcmVuQ29udGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAg
ICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihB
ZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgp
KSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFz
ZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5k
ZXgoKSk7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29u
dGV4dDo6cmV0dXJuQWRkcmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9G
cmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXM6OnJldHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGls
ZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJu
IDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZz
ZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1w
UmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQp
KSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8
PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM7CkBAIC0xMjc1LDggKzEyODgsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgSnVtcExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQz
MihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0
ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAg
ICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBh
dHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1
bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5
TWF4Q291bnQgIT0gMSkgewpAQCAtMTMwNyw4ICsxMzE5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBjaGFyYWN0ZXJPclRlbXApOwog
ICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2Vz
RnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudElu
ZGV4KCkpOwogICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJ
bW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAg
ICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6
ZW9mKGludCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNz
KG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVy
blRlbXApOworICAgICAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRl
cm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChv
dXRlckxvb3ApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWF0Y2hlcy5saW5rKHRoaXMp
OwpAQCAtMTMzMSw4ICsxMzQyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBzdG9y
ZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNr
VHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAg
IGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCiAgICAgICAg
ICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50
aXR5TWF4Q291bnQpLCBjaGFyYWN0ZXJPclRlbXApKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybklu
ZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQg
PDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9h
ZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5U
ZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFtZSBmb3Ig
cmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVy
ZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM2Myw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3Vi
cGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAg
ICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4
LCBwYXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nl
c3NmdWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgSnVtcCB6ZXJv
TGVuZ3RoTWF0Y2ggPSBicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVybklu
ZGV4KTsKQEAgLTE0MDgsOCArMTQxNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
bG9hZEZyb21GcmFtZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFj
a1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIG1hdGNoQW1vdW50KSk7CiAKLSAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNp
emVvZihpbnQpKSwgcGF0dGVyblN0YXJ0SW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0
ZXJuRW5kSW5kZXhPckxlbik7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBz
dWJwYXR0ZXJuSWQsIHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5kZXhPckxlbik7CiAg
ICAgICAgICAgICBzdWIzMihwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4p
OwogICAgICAgICAgICAgc3ViMzIocGF0dGVybkVuZEluZGV4T3JMZW4sIGluZGV4KTsKIApAQCAt
MTY2MSwxMCArMTY2OSw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVT
dXJyb2dhdGVQYWlycykKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQoKSk7CiAKLSAgICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7CiAg
ICAgICAgIENoZWNrZWQ8dW5zaWduZWQ+IHNjYWxlZE1heENvdW50ID0gdGVybS0+cXVhbnRpdHlN
YXhDb3VudDsKICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0gVV9JU19CTVAoY2gpID8gMSA6IDI7
Ci0gICAgICAgIHN1YjMyKEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRSZWdpc3Rlcik7Cisg
ICAgICAgIHN1YjMyKGluZGV4LCBUcnVzdGVkSW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJl
Z2lzdGVyKTsKIAogICAgICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICByZWFkQ2hhcmFj
dGVyKG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3Vu
dCwgY2hhcmFjdGVyLCBjb3VudFJlZ2lzdGVyKTsKQEAgLTE4NjgsMTUgKzE4NzUsMTIgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQogICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgpKTsKIAotICAg
ICAgICBtb3ZlKGluZGV4LCBjb3VudFJlZ2lzdGVyKTsKLQogICAgICAgICBDaGVja2VkPHVuc2ln
bmVkPiBzY2FsZWRNYXhDb3VudCA9IHRlcm0tPnF1YW50aXR5TWF4Q291bnQ7Ci0KICNpZiBFTkFC
TEUoWUFSUl9KSVRfVU5JQ09ERV9FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vy
cm9nYXRlUGFpcnMgJiYgdGVybS0+Y2hhcmFjdGVyQ2xhc3MtPmhhc09ubHlOb25CTVBDaGFyYWN0
ZXJzKCkgJiYgIXRlcm0tPmludmVydCgpKQogICAgICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0g
MjsKICNlbmRpZgotICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudCksIGNvdW50UmVn
aXN0ZXIpOworICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHNjYWxlZE1heENvdW50
KSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAg
SnVtcExpc3QgbWF0Y2hEZXN0OwpAQCAtMjQxOSw4ICsyNDIzLDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBm
aXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNp
emUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwg
cmVnVDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVt
U2l6ZSksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hT
dGFydChyZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwpAQCAtMjQ0NCwx
NSArMjQ0NywxNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBub3QgaGF2
ZSB5ZXQgc2V0IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgCiAgICAgICAgICAgICAgICAgQVNTRVJU
KGluZGV4ICE9IHJldHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJu
Lm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRl
eCwgcmV0dXJuUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpb3JBbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMy
KHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHByaW9yQWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lz
dGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGls
ZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
MzIocmV0dXJuUmVnaXN0ZXIsIG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBzdG9yZVBhaXIzMihyZXR1cm5SZWdpc3RlciwgaW5kZXgsIG91
dHB1dCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBnZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRl
cm5zKQotICAgICAgICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCwg
NCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxl
TW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUz
MihpbmRleCwgQWRkcmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIyKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRlUmV0dXJuKCk7CkBAIC0yNjM2LDggKzI2NDEsNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVy
VHlwZTo6Rml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9
IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1v
dmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMy
KEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9y
YXJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFydChpbmRleFRl
bXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQo
aW5kZXgsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CkBAIC0yNjY0LDggKzI2Njgs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgp
ICYmIG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykg
ewogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9m
ZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1
dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1w
b3JhcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQp
LCBpbmRleFRlbXBvcmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihpbmRleCwg
VHJ1c3RlZEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50
aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNl
cy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjc3Myw4ICsyNzc2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6OkZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCArPSB0
ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
KGluZGV4LCBpbmRleFRlbXBvcmFyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJ
bW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YjMyKGluZGV4LCBUcnVzdGVkSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFy
eSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhUZW1w
b3JhcnksIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0KGlu
ZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjgxMyw4ICsyODE1LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0
UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKGlucHV0
T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Vi
cGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklk
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdWJwYXR0ZXJuRW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpA
QCAtMjk4OCwxMSArMjk4OSwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vdmUoaW5kZXgsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVn
VDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgsIFRy
dXN0ZWRJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleCwgcmVn
VDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1Qw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0zMTA2LDggKzMxMDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgs
IHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihtX3BhdHRl
cm4ubV9ib2R5LT5tX21pbmltdW1TaXplKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YjMyKGluZGV4LCBUcnVzdGVkSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9taW5p
bXVtU2l6ZSksIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0
YXJ0KHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtNDA1MCw2ICs0MDQ5LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAg
fQogCisgICAgdm9pZCBsb2FkU3ViUGF0dGVybnMoUmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2ln
bmVkIHN1YnBhdHRlcm5JZCwgUmVnaXN0ZXJJRCBzdGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVu
ZEluZGV4T3JMZW5HUFIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1
c3RlZEltbTMyKChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhH
UFIsIGVuZEluZGV4T3JMZW5HUFIpOworICAgIH0KKwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0
b3IoVk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZ
YXJyQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9k
ZSBjb21waWxlTW9kZSkKICAgICAgICAgOiBtX3ZtKHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434739</attachid>
            <date>2021-08-01 22:23:18 -0700</date>
            <delta_ts>2021-08-01 22:28:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801222317.patch</filename>
            <type>text/plain</type>
            <size>43185</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li4xYWFkZTAxMzkxOTdkYzIz
OTI2YjBjODZjYWU3YWY5YWYwN2ViZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGxvYWRQYWlyMzIgYW5kIHN0b3JlUGFpcjMyIHRvIGFsbCBtYWNybyBhc3Nl
bWJsZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gY2FsbCBpdCB3aXRob3V0IENQVShBUk02NCku
IEludGVybmFsbHksIHR3byBsb2FkcyBvciBzdG9yZXMgYXJlIGNvbWJpbmVkLgorCisgICAgICAg
IFdlIGFsc28gYWRkIHN1YjMyKFJlZ2lzdGVySUQsIFRydXN0ZWRJbW0zMiwgUmVnaXN0ZXJJRCkg
dG8gYWxsIHBsYXRmb3JtcyBzbyB0aGF0CisgICAgICAgIHdlIGNhbiByZW1vdmUgc29tZSB1bm5l
Y2Vzc2FyeSBtb3ZlcyBvbiBBUk02NCAvIEFSTXY3IC8gTUlQUy4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZFBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVQYWlyNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkUGFpcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TG9hZFN0b3JlUGFpcjMyKToK
KyAgICAgICAgKEpTQzo6dGVzdExvYWRTdG9yZVBhaXI2NEludDY0KToKKyAgICAgICAgKiB5YXJy
L1lhcnJKSVQuY3BwOgorCiAyMDIxLTA3LTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gTW92ZSBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUyB0byBF
TkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9FWFBSRVNTSU9OUykgaW4gUGxhdGZvcm1FbmFibGUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAppbmRleCBlNmJmYmVjNjAwMWMxMGM2MWU5ZjI2NmVmZjI3YWQ2ZjEwZTg5ZjhmLi5h
Yzg2MTcyMjZlM2MzMmZiOTVhOGI5YTcyOTlhZWIwZGZiMDQ5NTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
MTQ3Myw2ICsxNDczLDI3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwog
ICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBU
cnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFp
cjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3Qx
LCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3Qy
KTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24u
CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSAyNTIgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0g
LTI1NikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDMyPihkZXN0MSwgZGVzdDIsIHNy
Yywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mo
c3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWly
NjQoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDEs
MTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3Jj
LCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3Qy
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBp
dCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAg
aWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQu
bV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNy
YyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTQ5MCw3ICsx
NTIyLDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1w
b3JhbEFjY2VzcyhSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
bnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VS
VChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxl
Z2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9m
ZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+
KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9h
ZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSks
IGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUg
KyA4KSwgZGVzdDIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKQEAg
LTE1MDAsNyArMTU0MywxMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjQo
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQsIEZQUmVnaXN0ZXJJRCBkZXN0MSwg
RlBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0Pihk
ZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEg
IT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0
cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92
YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBk
ZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbG9hZERvdWJsZShBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0
MSk7CisgICAgICAgIGxvYWREb3VibGUoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCks
IGRlc3QyKTsKICAgICB9CiAKICAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiBy
ZWFzb24pCkBAIC0xODI0LDYgKzE4NzMsMjEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1
cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEs
IFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQ
YWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0
Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNldC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cDwzMj4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRk
cmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJl
c3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVBh
aXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgc3RvcmVQYWlyNjQoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMy
KDApKTsKQEAgLTE4MzEsNyArMTg5NSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDog
cHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0
b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdHA8
NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNl
dC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFk
ZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRy
ZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNy
YzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NDEsNyArMTkxMCwxMiBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZz
ZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0
LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYg
b2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2
ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQu
bV92YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1f
dmFsdWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChGUFJlZ2lzdGVySUQg
c3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NTEsNyArMTky
NSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJ
RCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIg
b2Zmc2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBk
ZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQg
JiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Rw
PDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVEb3VibGUoc3JjMSwgQWRkcmVzcyhkZXN0LCBv
ZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMyLCBBZGRyZXNzKGRlc3Qs
IG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3Rl
cklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGVmOGM5OWVm
NjNhZDI2ZDZiMWE3Y2M0YWI3MTQ1NzA2MTRjOGU5NjkuLjc2NjVmZmVmNWM0NWUzNzQ4ZTk5NmJk
ZDU0MjM1MDM1MjgxNTk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01NDAsNiArNTQwLDE3IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3ViKGRlc3QsIGxlZnQsIHJpZ2h0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1J
bW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMk9yRW5jb2RlZEltbShyaWdodC5tX3Zh
bHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWIoZGVzdCwgbGVmdCwgYXJtSW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlKHJpZ2h0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YihkZXN0LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1h
a2VVSW50MTJPckVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwpAQCAtODY3LDYgKzg3OCwyNCBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0K
IAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwg
UmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVk
SW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdp
c3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGxkcmQgY2FuIGJlIHVzZWQg
aWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAg
ICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBi
ZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVz
dDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRl
c3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIERh
dGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7
CkBAIC05NjUsNiArOTk0LDE4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmUxNihkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJl
Z2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKKyAgICB7CisgICAg
ICAgIC8vIEZJWE1FOiBzdHJkIGNhbiBiZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNl
Y3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJzLgorICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3Mo
ZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRl
c3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8vIFBvc3NpYmx5IGNsb2Ji
ZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlzIGFyY2hpdGVjdHVyZS4KICAgICB2b2lkIG1vdmVEb3Vi
bGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBk
ZXN0MikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAzMzNjZWUwODZhMDQwZWYxZDhlNDMwNGU2ZDkxYTcy
ZGM1ZjU3ZWFhLi4xNDQ1Yzc5MWIyOGNlZjVkZmMxNTZjMzEyNGM2YTRlMjIyMWFjMWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKQEAgLTEyOTMsNiArMTI5MywyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVz
dGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpAQCAtMTU4Niw2ICsxNjAzLDE3IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNy
YzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Rv
cmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZTMy
KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihz
cmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8v
IEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM6CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDU0ZDQ1NjdkNGMxYzQ1ZGZlMGMz
MjhjYTdiY2RiODRlOWViMmY5NzYuLjlhZmIzMjY0ZGUzMjc2ODQyN2M0YzY0Y2M4MTMwODBiNzU2
NDczMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTgyNSw2ICs4MjUsMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgc3ViMzIocmlnaHQsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQg
c3ViMzIoUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUobGVmdCwgZGVzdCk7CisgICAgICAgIHN1YjMyKHJpZ2h0
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpAQCAtMTMw
MCw2ICsxMzA2LDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnN3bF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAg
ICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lz
dGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMy
KDApLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKKyAgICB7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0
IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBp
ZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICB2b2lkIHplcm9FeHRlbmQxNlRvMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnp3bF9ycihzcmMs
IGRlc3QpOwpAQCAtMTM0OSw2ICsxMzcyLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmJfaThtKGltbTgubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9p
ZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1
c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZz
ZXQpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1f
dmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3Zh
bHVlICsgNCkpOworICAgIH0KKwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQg
Z2V0VW51c2VkUmVnaXN0ZXIoQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAo
YWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWF4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2
UmVnaXN0ZXJzOjplYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCmluZGV4IDFjYTY5ODNlYjcwZDk2NDBiZTRmYjJmMTEwZTJmOGUwMWYzOGY4MzguLjc1
MTlhMWEyNTVkOWJkYzRhYWY0OTA3ZTM3OTM4MTVlY2ZiM2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0zMjM2LDYgKzMyMzYsMjQ1IEBA
IHZvaWQgdGVzdEF0b21pY1N0cm9uZ0NBU0ZpbGwxNigpCiAKICNlbmRpZiAvLyBDUFUoQVJNNjQp
CiAKK3ZvaWQgdGVzdExvYWRTdG9yZVBhaXIzMigpCit7CisgICAgY29uc3RleHByIHVpbnQzMl90
IGluaXRpYWxWYWx1ZSA9IDB4NTVhYWJiODB1OworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1
ZTEgPSA0MjsKKyAgICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUyID0gMHhjZmJiMTM1N3U7CisK
KyAgICB1aW50MzJfdCBidWZmZXJbMTBdOworCisgICAgYXV0byBpbml0QnVmZmVyID0gWyZdIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgICAgICBi
dWZmZXJbaV0gPSBpbml0aWFsVmFsdWUgKyBpOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFpciB7
CisgICAgICAgIHVpbnQzMl90IHZhbHVlMTsKKyAgICAgICAgdWludDMyX3QgdmFsdWUyOworICAg
IH07CisKKyAgICBQYWlyIHBhaXI7CisgICAgYXV0byBpbml0UGFpciA9IFsmXSB7CisgICAgICAg
IHBhaXIgPSB7IDAsIDAgfTsKKyAgICB9OworCisgICAgLy8gVGVzdCBsb2FkUGFpcjMyLgorICAg
IGF1dG8gdGVzdExvYWRQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7
CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0
LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQg
KiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKKwor
ICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHBhaXJHUFIsIDApKTsKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisK
KyAgICBhdXRvIHRlc3RMb2FkUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQp
IHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVm
ZmVyKCk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIw
LCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxW
YWx1ZSArIDQpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsK
KworICAgIGluaXRQYWlyKCk7CisgICAgYnVmZmVyWzRdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1
XSA9IHZhbHVlMjsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyMCwgJmJ1ZmZlcls0XSwg
JnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOworICAgIENIRUNLX0VR
KHBhaXIudmFsdWUyLCB2YWx1ZTIpOworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJNaW51czIgPSBj
b21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGpp
dCwgLTIpOworICAgIH0pOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVz
dExvYWRQYWlyTWludXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52
YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQgLSAyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwg
aW5pdGlhbFZhbHVlICsgNSAtIDIpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCAt
IDJdID0gdmFsdWUyOworICAgIGJ1ZmZlcls1IC0gMl0gPSB2YWx1ZTE7CisgICAgaW52b2tlPHZv
aWQ+KHRlc3RMb2FkUGFpck1pbnVzMiwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VR
KHBhaXIudmFsdWUxLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTEp
OworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJQbHVzMyA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAg
IGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVy
WzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQg
KyAzKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSArIDMpOwor
CisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCArIDNdID0gdmFsdWUxOworICAgIGJ1ZmZl
cls1ICsgM10gPSB2YWx1ZTI7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAm
YnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7Cisg
ICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICAvLyBUZXN0IGxvYWRQYWly
MzIgdXNpbmcgYSBidWZmZXIgcmVnaXN0ZXIgYXMgYSBkZXN0aW5hdGlvbi4KKyAgICBhdXRvIHRl
c3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uID0gW10gKENDYWxsSGVs
cGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjA7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFy
Z3VtZW50R1BSMTsKKyAgICAgICAgaml0LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAg
ICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBh
aXJHUFIsIHNpemVvZih1aW50MzJfdCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1
ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQ
YWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wID0gY29tcGlsZShbJl0gKENDYWxs
SGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJB
c0Rlc3RpbmF0aW9uKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAg
ICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJl
Z2lzdGVyQXNEZXN0aW5hdGlvbjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShw
YWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IGluaXRpYWxWYWx1ZSArIDUpOworCisgICAgLy8gVGVzdCBzdG9yZVBhaXIzMi4KKyAgICBhdXRv
IHRlc3RTdG9yZVBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAg
ICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAgICAgaml0LnN0b3Jl
UGFpcjMyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBidWZm
ZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25l
ZCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpcjAgPSBjb21waWxlKFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDApOworICAg
IH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWly
MCwgdmFsdWUxLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwg
aW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUg
KyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENI
RUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzRdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgdmFsdWUyKTsKKyAgICBDSEVD
S19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3
XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFs
dWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisg
ICAgYXV0byB0ZXN0U3RvcmVQYWlyTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYg
aml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBp
bml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJNaW51czIsIHZhbHVl
MSwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxW
YWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwg
dmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAg
IENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIGluaXRp
YWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8g
dGVzdFN0b3JlUGFpclBsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgIHRlc3RTdG9yZVBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFpclBsdXMzLCB2YWx1ZTEsIHZhbHVlMiwg
JmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsK
KyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VR
KGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBp
bml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSAr
IDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNL
X0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFp
cjMyIGZyb20gMSByZWdpc3Rlci4KKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnID0g
W10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlv
blByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGppdC5zdG9yZVBhaXIzMihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgYnVmZmVyR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodW5zaWduZWQpKSk7CisKKyAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisK
KyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhqaXQsIDApOwor
ICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQ
YWlyRnJvbU9uZVJlZzAsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxW
YWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShi
dWZmZXJbNF0sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOworICAg
IENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGluaXRp
YWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7
CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGpp
dCwgLTIpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0
ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ01pbnVzMiwgdmFsdWUxLCAmYnVmZmVyWzRdKTsKKyAgICBD
SEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZl
clsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEp
OworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJb
NF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZh
bHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0
aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdQbHVzMyA9
IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWly
RnJvbU9uZVJlZyhqaXQsIDMpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGlu
dm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ1BsdXMzLCB2YWx1ZTIsICZidWZmZXJb
NF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJb
Ml0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZh
bHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCB2YWx1
ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworfQorCiAjaWYgQ1BVKEFSTTY0KQogdm9pZCB0ZXN0
TG9hZFN0b3JlUGFpcjY0SW50NjQoKQogewpAQCAtMzMyNSw2ICszNTY0LDMyIEBAIHZvaWQgdGVz
dExvYWRTdG9yZVBhaXI2NEludDY0KCkKICAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFsdWUx
KTsKICAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKIAorICAgIC8vIFRlc3QgbG9h
ZFBhaXI2NCB1c2luZyBhIGJ1ZmZlciByZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAgIGF1
dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86
OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQubG9hZFBhaXI2NChidWZmZXJHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAw
KSk7CisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQ2NF90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24oaml0LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5n
QnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENI
RUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWly
LnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7CisKICAgICAvLyBUZXN0IHN0b3JlUGFpcjY0Lgog
ICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNl
dCkgewogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwpAQCAtNDg5MSw2ICs1MTU2
LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTCiAgICAgRk9SX0VBQ0hfRE9VQkxFX0NPTkRJVElPTl9SVU4odGVzdENvbXBh
cmVEb3VibGVTYW1lQXJnKTsKIAogICAgIFJVTih0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpKTsK
KyAgICBSVU4odGVzdExvYWRTdG9yZVBhaXIzMigpKTsKKyAgICBSVU4odGVzdFN1YjMyQXJnSW1t
KCkpOwogCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ1Jl
ZygpKTsKQEAgLTQ5MTgsNyArNTE4NSw2IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikg
V1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogCiAgICAgUlVOKHRlc3RTdWIzMkFy
Z3MoKSk7CiAgICAgUlVOKHRlc3RTdWIzMkltbSgpKTsKLSAgICBSVU4odGVzdFN1YjMyQXJnSW1t
KCkpOwogICAgIFJVTih0ZXN0U3ViNjRJbW0zMigpKTsKICAgICBSVU4odGVzdFN1YjY0QXJnSW1t
MzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAppbmRleCBjY2E3NDgyYzg5MDhlMDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4
YWFlLi4zNjZjYzc2OGRhYTgyZjcyMTY5YThiMWZjMWFmMmM5ZjdmNzA0OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMjc4LDggKzI3OCwxMCBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKIAogICAgIHN0cnVjdCBQYXJlbkNvbnRleHQgewogICAgICAgICBzdHJ1Y3QgUGFy
ZW5Db250ZXh0KiBuZXh0OwotICAgICAgICB1aW50MzJfdCBiZWdpbjsKLSAgICAgICAgdWludDMy
X3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIHN0cnVjdCBCZWdpbkFuZE1hdGNoQW1vdW50IHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IGJlZ2luOworICAgICAgICAgICAgdWludDMyX3QgbWF0Y2hBbW91
bnQ7CisgICAgICAgIH0gYmVnaW5BbmRNYXRjaEFtb3VudDsKICAgICAgICAgdWludHB0cl90IHJl
dHVybkFkZHJlc3M7CiAgICAgICAgIHN0cnVjdCBTdWJwYXR0ZXJucyB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydDsKQEAgLTI5OSwxMiArMzAxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgYmVnaW5PZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbik7CisgICAgICAgICAgICBy
ZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNl
dG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIGJlZ2luKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgbWF0Y2hBbW91bnRPZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBtYXRjaEFtb3VudCk7CisgICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9m
ZnNldG9mKEJlZ2luQW5kTWF0Y2hBbW91bnQsIG1hdGNoQW1vdW50KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuQWRkcmVzc09mZnNldCgpCkBAIC0zNzQsMTcg
KzM3NiwyOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbW92ZShoZWFkUHRyUmVnaXN0ZXIs
IGZyZWVsaXN0UmVnaXN0ZXIpOwogICAgIH0KIAorCisgICAgdm9pZCBzdG9yZUJlZ2luQW5kTWF0
Y2hBbW91bnRUb1BhcmVuQ29udGV4dChSZWdpc3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1h
dGNoQW1vdW50R1BSLCBSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUikKKyAgICB7CisgICAgICAg
IEFTU0VSVChQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6
bWF0Y2hBbW91bnRPZmZzZXQoKSk7CisgICAgICAgIHN0b3JlUGFpcjMyKGJlZ2luR1BSLCBtYXRj
aEFtb3VudEdQUiwgcGFyZW5Db250ZXh0R1BSLCBUcnVzdGVkSW1tMzIoUGFyZW5Db250ZXh0Ojpi
ZWdpbk9mZnNldCgpKSk7CisgICAgfQorCisgICAgdm9pZCBsb2FkQmVnaW5BbmRNYXRjaEFtb3Vu
dEZyb21QYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRHUFIsIFJlZ2lzdGVySUQg
YmVnaW5HUFIsIFJlZ2lzdGVySUQgbWF0Y2hBbW91bnRHUFIpCisgICAgeworICAgICAgICBBU1NF
UlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNo
QW1vdW50T2Zmc2V0KCkpOworICAgICAgICBsb2FkUGFpcjMyKHBhcmVuQ29udGV4dEdQUiwgVHJ1
c3RlZEltbTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSLCBtYXRjaEFt
b3VudEdQUik7CisgICAgfQorCiAgICAgdm9pZCBzYXZlUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQg
cGFyZW5Db250ZXh0UmVnLCBSZWdpc3RlcklEIHRlbXBSZWcsIHVuc2lnbmVkIGZpcnN0U3VicGF0
dGVybiwgdW5zaWduZWQgbGFzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIHN1YnBhdHRlcm5CYXNlRnJh
bWVMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3MocGFyZW5D
b250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpKTsKICAgICAgICAgbG9hZEZy
b21GcmFtZShzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSwgdGVtcFJlZyk7Ci0gICAgICAgIHN0b3JlMzIodGVt
cFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRP
ZmZzZXQoKSkpOworICAgICAgICBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29udGV4
dChpbmRleCwgdGVtcFJlZywgcGFyZW5Db250ZXh0UmVnKTsKICAgICAgICAgbG9hZEZyb21GcmFt
ZShzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
OnJldHVybkFkZHJlc3NJbmRleCgpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVQdHIodGVtcFJl
ZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJuQWRkcmVzc09m
ZnNldCgpKSk7CiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVy
biA9IGZpcnN0U3VicGF0dGVybjsgc3VicGF0dGVybiA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0
dGVybisrKSB7Ci0gICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKG91dHB1dCwgKHN1YnBh
dHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICAg
ICAgc3RvcmVQdHIodGVtcFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4
dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkpOworICAgICAgICAgICAgICAgIGxvYWQ2
NChBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwg
dGVtcFJlZyk7CisgICAgICAgICAgICAgICAgc3RvcmU2NCh0ZW1wUmVnLCBBZGRyZXNzKHBhcmVu
Q29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSk7
CiAgICAgICAgICAgICAgICAgY2xlYXJTdWJwYXR0ZXJuU3RhcnQoc3VicGF0dGVybik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM5NywxNiArNDExLDE1IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogCiAgICAgdm9pZCByZXN0b3JlUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0
UmVnLCBSZWdpc3RlcklEIHRlbXBSZWcsIHVuc2lnbmVkIGZpcnN0U3VicGF0dGVybiwgdW5zaWdu
ZWQgbGFzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbikK
ICAgICB7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250
ZXh0OjpiZWdpbk9mZnNldCgpKSwgaW5kZXgpOworICAgICAgICBsb2FkQmVnaW5BbmRNYXRjaEFt
b3VudEZyb21QYXJlbkNvbnRleHQocGFyZW5Db250ZXh0UmVnLCBpbmRleCwgdGVtcFJlZyk7CiAg
ICAgICAgIHN0b3JlVG9GcmFtZShpbmRleCwgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsg
QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpiZWdpbkluZGV4KCkpOwotICAgICAgICBsb2FkMzIo
QWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQo
KSksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJh
c2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjptYXRjaEFtb3VudElu
ZGV4KCkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNv
bnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRv
RnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSk7CiAgICAgICAgIGlmIChtX2NvbXBp
bGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVybiA9IGZpcnN0U3VicGF0dGVybjsgc3VicGF0dGVy
biA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0dGVybisrKSB7Ci0gICAgICAgICAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zm
c2V0KHN1YnBhdHRlcm4pKSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICAgICAgc3RvcmVQdHIodGVt
cFJlZywgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVk
KSkpOworICAgICAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFy
ZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSwgdGVtcFJlZyk7CisgICAg
ICAgICAgICAgICAgc3RvcmU2NCh0ZW1wUmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4g
PDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICs9IFlhcnJTdGFja1NwYWNlRm9yQmFj
a1RyYWNrSW5mb1BhcmVudGhlc2VzOwpAQCAtMTI3NSw4ICsxMjg4LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIEp1bXBMaXN0IG1hdGNoZXM7CiAKICAgICAgICAgaWYgKHRlcm0tPnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KSB7Ci0gICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBh
dHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0
dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAg
ICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBw
YXR0ZXJuVGVtcCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3Nm
dWwgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0
eU1heENvdW50ICE9IDEpIHsKQEAgLTEzMDcsOCArMTMxOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgY2hhcmFjdGVyT3JUZW1wKTsK
ICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hhcmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNl
c0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJ
bmRleCgpKTsKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwg
SW1tMzIodGVybS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAg
ICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNp
emVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRl
cm5UZW1wKTsKKyAgICAgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0
ZXJuSWQsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwogICAgICAgICAgICAgICAgIGp1bXAo
b3V0ZXJMb29wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1hdGNoZXMubGluayh0aGlz
KTsKQEAgLTEzMzEsOCArMTM0Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgc3Rv
cmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFj
a1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAg
ICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQogICAgICAg
ICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5xdWFu
dGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRk
cmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5J
bmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklk
IDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxv
YWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJu
VGVtcCk7CiAKICAgICAgICAgICAgIC8vIFN0b3JlIGN1cnJlbnQgaW5kZXggaW4gZnJhbWUgZm9y
IHJlc3RvcmluZyBhZnRlciBhIHBhcnRpYWwgbWF0Y2gKICAgICAgICAgICAgIHN0b3JlVG9GcmFt
ZShpbmRleCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZl
cmVuY2U6OmJlZ2luSW5kZXgoKSk7CkBAIC0xMzUzLDggKzEzNjMsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKIAotICAgICAgICAgICAg
bG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkp
LCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1
YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAg
ICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5JbmRl
eCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBtYXRjaCBpcyBzdWNj
ZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAgICAgIEp1bXAgemVy
b0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIFRydXN0ZWRJbW0zMigtMSksIHBhdHRlcm5J
bmRleCk7CkBAIC0xNDA4LDggKzE0MTcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
IGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0Jh
Y2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSwgbWF0Y2hBbW91bnQpOwogICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBtYXRjaEFtb3VudCkpOwogCi0g
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5TdGFydEluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0
dGVybkVuZEluZGV4T3JMZW4pOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwg
c3VicGF0dGVybklkLCBwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4pOwog
ICAgICAgICAgICAgc3ViMzIocGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJbmRleE9yTGVu
KTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5FbmRJbmRleE9yTGVuLCBpbmRleCk7CiAKQEAg
LTE2NjEsMTAgKzE2NjksOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgaWYgKG1fZGVjb2Rl
U3Vycm9nYXRlUGFpcnMpCiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2
YWlsYWJsZUlucHV0KCkpOwogCi0gICAgICAgIG1vdmUoaW5kZXgsIGNvdW50UmVnaXN0ZXIpOwog
ICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzY2FsZWRNYXhDb3VudCA9IHRlcm0tPnF1YW50aXR5
TWF4Q291bnQ7CiAgICAgICAgIHNjYWxlZE1heENvdW50ICo9IFVfSVNfQk1QKGNoKSA/IDEgOiAy
OwotICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudCksIGNvdW50UmVnaXN0ZXIpOwor
ICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRS
ZWdpc3Rlcik7CiAKICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAgcmVhZENoYXJh
Y3RlcihtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uIC0gc2NhbGVkTWF4Q291
bnQsIGNoYXJhY3RlciwgY291bnRSZWdpc3Rlcik7CkBAIC0xODY4LDE1ICsxODc1LDEyIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKICAgICAg
ICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoKSk7CiAKLSAg
ICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7Ci0KICAgICAgICAgQ2hlY2tlZDx1bnNp
Z25lZD4gc2NhbGVkTWF4Q291bnQgPSB0ZXJtLT5xdWFudGl0eU1heENvdW50OwotCiAjaWYgRU5B
QkxFKFlBUlJfSklUX1VOSUNPREVfRVhQUkVTU0lPTlMpCiAgICAgICAgIGlmIChtX2RlY29kZVN1
cnJvZ2F0ZVBhaXJzICYmIHRlcm0tPmNoYXJhY3RlckNsYXNzLT5oYXNPbmx5Tm9uQk1QQ2hhcmFj
dGVycygpICYmICF0ZXJtLT5pbnZlcnQoKSkKICAgICAgICAgICAgIHNjYWxlZE1heENvdW50ICo9
IDI7CiAjZW5kaWYKLSAgICAgICAgc3ViMzIoSW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJl
Z2lzdGVyKTsKKyAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihzY2FsZWRNYXhDb3Vu
dCksIGNvdW50UmVnaXN0ZXIpOwogCiAgICAgICAgIExhYmVsIGxvb3AodGhpcyk7CiAgICAgICAg
IEp1bXBMaXN0IG1hdGNoRGVzdDsKQEAgLTI0MTksOCArMjQyMyw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3Qg
Zml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRT
aXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgs
IHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YjMyKGluZGV4LCBUcnVzdGVkSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11
bVNpemUpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNo
U3RhcnQocmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKQEAgLTI0NDQs
MTUgKzI0NDcsMTcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gbm90IGhh
dmUgeWV0IHNldCB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IAogICAgICAgICAgICAgICAgIEFTU0VS
VChpbmRleCAhPSByZXR1cm5SZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVy
bi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoaW5k
ZXgsIHJldHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW9yQWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0z
MihwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmV0dXJuUmVnaXN0ZXIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihwcmlvckFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCByZXR1cm5SZWdp
c3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBp
bGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdG9y
ZTMyKHJldHVyblJlZ2lzdGVyLCBvdXRwdXQpOwotICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RvcmVQYWlyMzIocmV0dXJuUmVnaXN0ZXIsIGluZGV4LCBv
dXRwdXQsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgZ2V0TWF0Y2hTdGFydChyZXR1cm5SZWdpc3Rlcik7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0
ZXJucykKLSAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQs
IDQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGls
ZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Jl
MzIoaW5kZXgsIEFkZHJlc3Mob3V0cHV0LCA0KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lzdGVyMik7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0ZVJldHVybigpOwpAQCAtMjYzNiw4ICsyNjQxLDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
clR5cGU6OkZpeGVkQ291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCAr
PSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlucHV0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
b3ZlKGluZGV4LCBpbmRleFRlbXBvcmFyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWIz
MihJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YjMyKGluZGV4LCBUcnVzdGVkSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBv
cmFyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhU
ZW1wb3JhcnksIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0
KGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjY2NCw4ICsyNjY4
LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUo
KSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMp
IHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRP
ZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5w
dXRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVt
cG9yYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGlucHV0T2Zmc2V0
KSwgaW5kZXhUZW1wb3JhcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgs
IFRydXN0ZWRJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5FbmQoaW5kZXhUZW1wb3JhcnksIHRlcm0tPnBhcmVu
dGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChpbmRleCwgdGVybS0+cGFyZW50aGVz
ZXMuc3VicGF0dGVybklkKTsKQEAgLTI3NzMsOCArMjc3Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0g
dGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbW92
ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIo
SW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3Jh
cnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0KGluZGV4VGVt
cG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFydChp
bmRleCwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKQEAgLTI4MTMsOCArMjgxNSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1
dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3Jhcnkp
OworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihpbnB1
dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1
YnBhdHRlcm5FbmQoaW5kZXhUZW1wb3JhcnksIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5J
ZCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3VicGF0dGVybkVuZChpbmRleCwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsK
QEAgLTI5ODgsMTEgKzI5ODksMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplID09IDEpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb3ZlKGluZGV4LCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YjMyKEltbTMyKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplIC0gMSksIHJl
Z1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKGluZGV4LCBU
cnVzdGVkSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXgsIHJl
Z1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdU
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtMzEwNiw4ICszMTA2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1fbWluaW11bVNpemUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4
LCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIobV9wYXR0
ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKG1fcGF0dGVybi5tX2JvZHktPm1fbWlu
aW11bVNpemUpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hT
dGFydChyZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTQwNTAsNiArNDA0OSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgbG9hZFN1YlBhdHRlcm5zKFJlZ2lzdGVySUQgb3V0cHV0R1BSLCB1bnNp
Z25lZCBzdWJwYXR0ZXJuSWQsIFJlZ2lzdGVySUQgc3RhcnRJbmRleEdQUiwgUmVnaXN0ZXJJRCBl
bmRJbmRleE9yTGVuR1BSKQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihvdXRwdXRHUFIsIFRy
dXN0ZWRJbW0zMigoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBzdGFydEluZGV4
R1BSLCBlbmRJbmRleE9yTGVuR1BSKTsKKyAgICB9CisKIHB1YmxpYzoKICAgICBZYXJyR2VuZXJh
dG9yKFZNKiB2bSwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywg
WWFyckNvZGVCbG9jayYgY29kZUJsb2NrLCBDaGFyU2l6ZSBjaGFyU2l6ZSwgSklUQ29tcGlsZU1v
ZGUgY29tcGlsZU1vZGUpCiAgICAgICAgIDogbV92bSh2bSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434740</attachid>
            <date>2021-08-01 22:28:33 -0700</date>
            <delta_ts>2021-08-02 00:26:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210801222832.patch</filename>
            <type>text/plain</type>
            <size>44369</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li4yOWQ4YmMxOTJhYjk0MjA1
ODNmNTk0Mjk0MDBlMzU5NWU3ZjVhNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAyMS0wOC0wMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGxvYWRQYWlyMzIgYW5kIHN0b3JlUGFpcjMyIHRvIGFsbCBtYWNybyBhc3Nl
bWJsZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gY2FsbCBpdCB3aXRob3V0IENQVShBUk02NCku
IEludGVybmFsbHksIHR3byBsb2FkcyBvciBzdG9yZXMgYXJlIGNvbWJpbmVkLgorCisgICAgICAg
IFdlIGFsc28gYWRkIHN1YjMyKFJlZ2lzdGVySUQsIFRydXN0ZWRJbW0zMiwgUmVnaXN0ZXJJRCkg
dG8gYWxsIHBsYXRmb3JtcyBzbyB0aGF0CisgICAgICAgIHdlIGNhbiByZW1vdmUgc29tZSB1bm5l
Y2Vzc2FyeSBtb3ZlcyBvbiBBUk02NCAvIEFSTXY3IC8gTUlQUy4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZFBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVQYWlyNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkUGFpcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TG9hZFN0b3JlUGFpcjMyKToK
KyAgICAgICAgKEpTQzo6dGVzdFN1YjMyQXJnSW1tKToKKyAgICAgICAgKEpTQzo6dGVzdExvYWRT
dG9yZVBhaXI2NEludDY0KToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorCiAyMDIxLTA3
LTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TW92ZSBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUyB0byBFTkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9F
WFBSRVNTSU9OUykgaW4gUGxhdGZvcm1FbmFibGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBlNmJmYmVjNjAw
MWMxMGM2MWU5ZjI2NmVmZjI3YWQ2ZjEwZTg5ZjhmLi5hYzg2MTcyMjZlM2MzMmZiOTVhOGI5YTcy
OTlhZWIwZGZiMDQ5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ3Myw2ICsxNDczLDI3IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgbG9hZFBh
aXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikK
KyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBk
ZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUs
IGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChvZmZzZXQubV92
YWx1ZSA8PSAyNTIgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTI1NikgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRwPDMyPihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVz
dDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRl
c3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZv
aWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWlyNjQoc3JjLCBUcnVzdGVkSW1tMzIoMCks
IGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAg
ICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBS
ZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAg
ICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29t
ZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUw
NCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAg
ICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAg
ICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFp
cjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qx
LCBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTQ5MCw3ICsxNTIyLDE4IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
IAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0
MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3Jj
LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElm
IGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAg
ICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZz
ZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9h
ZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxv
YWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKQEAgLTE1MDAsNyArMTU0MywxMyBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBvZmZzZXQsIEZQUmVnaXN0ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0
Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0
aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9m
ZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbG9hZERvdWJsZShB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGxvYWREb3VibGUo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKICAgICB9CiAKICAgICB2
b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24pCkBAIC0xODI0LDYgKzE4NzMs
MjEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwg
VHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBv
ZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNl
dC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDwzMj4oc3Jj
MSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1
ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUg
KyA0KSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJl
Z2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3RvcmVQYWly
NjQoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTE4MzEsNyArMTg5NSwx
MiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3Jj
MSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZz
ZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNy
YzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVl
ICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nl
c3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAg
LTE4NDEsNyArMTkxMCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0
V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAg
ICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikg
eworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0
b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9y
ZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7CiAgICAgfQogCiAg
ICAgdm9pZCBzdG9yZVBhaXI2NChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NTEsNyArMTkyNSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUx
MikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBv
ZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3RvcmVEb3VibGUoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAg
ICBzdG9yZURvdWJsZShzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGVmOGM5OWVmNjNhZDI2ZDZiMWE3Y2M0YWI3MTQ1NzA2
MTRjOGU5NjkuLjc2NjVmZmVmNWM0NWUzNzQ4ZTk5NmJkZDU0MjM1MDM1MjgxNTk1NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCkBAIC01NDAsNiArNTQwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViKGRlc3QsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKFJl
Z2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6
bWFrZVVJbnQxMk9yRW5jb2RlZEltbShyaWdodC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUlt
bS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWIoZGVzdCwgbGVmdCwgYXJt
SW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YihkZXN0LCBsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1lZGlh
dGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1t
Lm1fdmFsdWUpOwpAQCAtODY3LDYgKzg3OCwyNCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7
CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7
CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1t
MzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IGxkcmQgY2FuIGJlIHVzZWQgaWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBj
b25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRl
c3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rp
b24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRk
cmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFk
ZHJlc3Mub2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC05NjUsNiArOTk0LDE4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMx
LCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQ
YWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwg
VHJ1c3RlZEltbTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBzdHJkIGNhbiBi
ZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNlY3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJz
LgorICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsK
KyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkp
OworICAgIH0KKwogICAgIC8vIFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlz
IGFyY2hpdGVjdHVyZS4KICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRl
eCAzMzNjZWUwODZhMDQwZWYxZDhlNDMwNGU2ZDkxYTcyZGM1ZjU3ZWFhLi4xNDQ1Yzc5MWIyOGNl
ZjVkZmMxNTZjMzEyNGM2YTRlMjIyMWFjMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTEyOTMsNiArMTI5Mywy
MyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAg
ICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0
Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxk
cCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEp
IHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwg
ZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSks
IGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhz
cmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpA
QCAtMTU4Niw2ICsxNjAzLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICB9CiAgICAgfQogCisg
ICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVz
dCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lz
dGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0z
MiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNl
dC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlv
bnM6CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCmluZGV4IDU0ZDQ1NjdkNGMxYzQ1ZGZlMGMzMjhjYTdiY2RiODRlOWViMmY5NzYuLjlh
ZmIzMjY0ZGUzMjc2ODQyN2M0YzY0Y2M4MTMwODBiNzU2NDczMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgKQEAgLTgyNSw2ICs4MjUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3ViMzIo
cmlnaHQsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUo
bGVmdCwgZGVzdCk7CisgICAgICAgIHN1YjMyKHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpAQCAtMTMwMCw2ICsxMzA2LDIzIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnN3bF9tcihhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAg
ICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOworICAg
IH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9m
ZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAg
IEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21l
cyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIHpl
cm9FeHRlbmQxNlRvMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnp3bF9ycihzcmMsIGRlc3QpOwpAQCAtMTM0OSw2ICsxMzcy
LDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfaThtKGlt
bTgubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklE
IHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9y
ZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUz
MihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQgZ2V0VW51c2VkUmVnaXN0ZXIoQmFzZUlu
ZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lz
dGVyczo6ZWF4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2UmVnaXN0ZXJzOjplYXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDFjYTY5ODNlYjcw
ZDk2NDBiZTRmYjJmMTEwZTJmOGUwMWYzOGY4MzguLjUxYjBkMjc1N2RjY2NiYTc5OTg2OGQwMjEy
YTIxNDUxZWZkMjI0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCkBAIC0xMDA1LDIzICsxMDA1LDYgQEAgdm9pZCB0ZXN0U3ViMzJJbW0oKQogICAg
IH0KIH0KIAotdm9pZCB0ZXN0U3ViMzJBcmdJbW0oKQotewotICAgIGZvciAoYXV0byBpbW1lZGlh
dGUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7Ci0KLSAgICAgICAgICAgIGppdC5zdWIzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGltbWVkaWF0ZSksIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKLQotICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKLSAgICAgICAgICAg
IGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50
MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90PihzdWIs
IHZhbHVlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gaW1tZWRpYXRlKSk7Ci0gICAg
fQotfQotCiB2b2lkIHRlc3RTdWI2NEltbTMyKCkKIHsKICAgICBmb3IgKGF1dG8gaW1tZWRpYXRl
IDogaW50NjRPcGVyYW5kcygpKSB7CkBAIC0zMjM2LDYgKzMyMTksMjYyIEBAIHZvaWQgdGVzdEF0
b21pY1N0cm9uZ0NBU0ZpbGwxNigpCiAKICNlbmRpZiAvLyBDUFUoQVJNNjQpCiAKK3ZvaWQgdGVz
dExvYWRTdG9yZVBhaXIzMigpCit7CisgICAgY29uc3RleHByIHVpbnQzMl90IGluaXRpYWxWYWx1
ZSA9IDB4NTVhYWJiODB1OworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZTEgPSA0MjsKKyAg
ICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUyID0gMHhjZmJiMTM1N3U7CisKKyAgICB1aW50MzJf
dCBidWZmZXJbMTBdOworCisgICAgYXV0byBpbml0QnVmZmVyID0gWyZdIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgICAgICBidWZmZXJbaV0gPSBp
bml0aWFsVmFsdWUgKyBpOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFpciB7CisgICAgICAgIHVp
bnQzMl90IHZhbHVlMTsKKyAgICAgICAgdWludDMyX3QgdmFsdWUyOworICAgIH07CisKKyAgICBQ
YWlyIHBhaXI7CisgICAgYXV0byBpbml0UGFpciA9IFsmXSB7CisgICAgICAgIHBhaXIgPSB7IDAs
IDAgfTsKKyAgICB9OworCisgICAgLy8gVGVzdCBsb2FkUGFpcjMyLgorICAgIGF1dG8gdGVzdExv
YWRQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZm
ZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
cGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LmxvYWRQYWlyMzIo
YnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodWlu
dDMyX3QpKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKKworICAgICAgICBqaXQu
c3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIDAp
KTsKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhwYWlyR1BSLCBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRl
c3RMb2FkUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
dGVzdExvYWRQYWlyKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAg
ICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIwLCAmYnVmZmVyWzRd
LCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOwor
ICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsKKworICAgIGluaXRQ
YWlyKCk7CisgICAgYnVmZmVyWzRdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1XSA9IHZhbHVlMjsK
KyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAg
IENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUy
LCB2YWx1ZTIpOworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJNaW51czIgPSBjb21waWxlKFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGppdCwgLTIpOworICAg
IH0pOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyTWlu
dXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRp
YWxWYWx1ZSArIDQgLSAyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVl
ICsgNSAtIDIpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCAtIDJdID0gdmFsdWUy
OworICAgIGJ1ZmZlcls1IC0gMl0gPSB2YWx1ZTE7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2Fk
UGFpck1pbnVzMiwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUx
LCB2YWx1ZTIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTEpOworCisgICAgYXV0
byB0ZXN0TG9hZFBhaXJQbHVzMyA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRQYWlyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVyWzRdLCAmcGFpcik7
CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQgKyAzKTsKKyAgICBD
SEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSArIDMpOworCisgICAgaW5pdFBh
aXIoKTsKKyAgICBidWZmZXJbNCArIDNdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1ICsgM10gPSB2
YWx1ZTI7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVyWzRdLCAm
cGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEo
cGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICAvLyBUZXN0IGxvYWRQYWlyMzIgdXNpbmcgYSBi
dWZmZXIgcmVnaXN0ZXIgYXMgYSBkZXN0aW5hdGlvbi4KKyAgICBhdXRvIHRlc3RMb2FkUGFpclVz
aW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uID0gW10gKENDYWxsSGVscGVycyYgaml0LCBp
bnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsK
KyAgICAgICAgaml0LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihvZmZzZXQgKiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAgICAgICBqaXQuc3Rv
cmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIHNpemVv
Zih1aW50MzJfdCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICBqaXQucmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZm
ZXJSZWdpc3RlckFzRGVzdGluYXRpb24wID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9u
KGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAgICBpbml0UGFpcigp
OworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0
aW5hdGlvbjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwg
aW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1
ZSArIDUpOworCisgICAgLy8gVGVzdCBzdG9yZVBhaXIzMi4KKyAgICBhdXRvIHRlc3RTdG9yZVBh
aXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQ
UiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAgICAgaml0LnN0b3JlUGFpcjMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBidWZmZXJHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25lZCkpKTsKKworICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAg
fTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDApOworICAgIH0pOworCisgICAg
aW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyMCwgdmFsdWUxLCB2
YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVl
ICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBD
SEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZl
clszXSwgaW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCB2YWx1ZTEp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJb
Nl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgaW5pdGlhbFZh
bHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFsdWUgKyA4KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgYXV0byB0ZXN0
U3RvcmVQYWlyTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgIHRlc3RTdG9yZVBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJNaW51czIsIHZhbHVlMSwgdmFsdWUyLCAm
YnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgdmFsdWUyKTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0
aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tf
RVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFp
clBsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RT
dG9yZVBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZv
a2U8dm9pZD4odGVzdFN0b3JlUGFpclBsdXMzLCB2YWx1ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwg
aW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUg
KyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIHZhbHVlMSk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5
XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFpcjMyIGZyb20gMSBy
ZWdpc3Rlci4KKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnID0gW10gKENDYWxsSGVs
cGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjE7CisgICAgICAgIGppdC5zdG9yZVBhaXIzMihHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihvZmZzZXQgKiBzaXplb2YodW5zaWduZWQpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRl
c3RTdG9yZVBhaXJGcm9tT25lUmVnMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkg
eworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhqaXQsIDApOworICAgIH0pOworCisg
ICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyRnJvbU9uZVJl
ZzAsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFs
VmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIHZh
bHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCBpbml0
aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGluaXRpYWxWYWx1ZSArIDgp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICBhdXRv
IHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGppdCwgLTIpOworICAg
IH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWly
RnJvbU9uZVJlZ01pbnVzMiwgdmFsdWUxLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlh
bFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNL
X0VRKGJ1ZmZlclszXSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxW
YWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5p
dGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5
KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdQbHVzMyA9IGNvbXBpbGUoWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhq
aXQsIDMpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0
ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ1BsdXMzLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENI
RUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxW
YWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZhbHVlICsgMyk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5p
dGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCB2YWx1ZTIpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls4XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRp
YWxWYWx1ZSArIDkpOworfQorCit2b2lkIHRlc3RTdWIzMkFyZ0ltbSgpCit7CisgICAgZm9yIChh
dXRvIGltbWVkaWF0ZSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBhdXRvIHN1YiA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgaml0LnN1YjMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW1tZWRpYXRlKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGF1dG8g
dmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWlu
dDMyX3Q+KHN1YiwgdmFsdWUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLSBpbW1lZGlh
dGUpKTsKKyAgICB9Cit9CisKICNpZiBDUFUoQVJNNjQpCiB2b2lkIHRlc3RMb2FkU3RvcmVQYWly
NjRJbnQ2NCgpCiB7CkBAIC0zMzI1LDYgKzM1NjQsMzIgQEAgdm9pZCB0ZXN0TG9hZFN0b3JlUGFp
cjY0SW50NjQoKQogICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOwogICAgIENIRUNL
X0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOwogCisgICAgLy8gVGVzdCBsb2FkUGFpcjY0IHVzaW5n
IGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24uCisgICAgYXV0byB0ZXN0TG9hZFBh
aXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9IFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjE7CisgICAgICAgIGppdC5sb2FkUGFpcjY0KGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIDApKTsKKyAgICAgICAg
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BS
LCBzaXplb2YodWludDY0X3QpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpclVz
aW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0
aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworCisgICAgaW5p
dFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3Rl
ckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52
YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0
aWFsVmFsdWUgKyA1KTsKKwogICAgIC8vIFRlc3Qgc3RvcmVQYWlyNjQuCiAgICAgYXV0byB0ZXN0
U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CiAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CkBAIC00ODkxLDYgKzUxNTYsOCBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
ICAgICBGT1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTih0ZXN0Q29tcGFyZURvdWJsZVNhbWVB
cmcpOwogCiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlhdGVzKCkpOworICAgIFJVTih0ZXN0
TG9hZFN0b3JlUGFpcjMyKCkpOworICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CiAKICNpZiBD
UFUoWDg2XzY0KQogICAgIFJVTih0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkpOwpAQCAtNDkx
OCw3ICs1MTg1LDYgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBS
VU4odGVzdFN1YjMySW1tKCkpOwotICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CiAgICAgUlVO
KHRlc3RTdWI2NEltbTMyKCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW0zMigpKTsKICAgICBS
VU4odGVzdFN1YjY0SW1tNjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IGNjYTc0ODJjODkwOGUwMDEzOWQzMTZlODE3NmFkN2MyZWY1YzhhYWUuLjM2NmNjNzY4
ZGFhODJmNzIxNjlhOGIxZmMxYWYyYzlmN2Y3MDQ5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC0yNzgsOCArMjc4LDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAg
ICAgc3RydWN0IFBhcmVuQ29udGV4dCB7CiAgICAgICAgIHN0cnVjdCBQYXJlbkNvbnRleHQqIG5l
eHQ7Ci0gICAgICAgIHVpbnQzMl90IGJlZ2luOwotICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3Vu
dDsKKyAgICAgICAgc3RydWN0IEJlZ2luQW5kTWF0Y2hBbW91bnQgeworICAgICAgICAgICAgdWlu
dDMyX3QgYmVnaW47CisgICAgICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3VudDsKKyAgICAgICAg
fSBiZWdpbkFuZE1hdGNoQW1vdW50OwogICAgICAgICB1aW50cHRyX3QgcmV0dXJuQWRkcmVzczsK
ICAgICAgICAgc3RydWN0IFN1YnBhdHRlcm5zIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0
OwpAQCAtMjk5LDEyICszMDEsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBiZWdpbk9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBv
ZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRv
ZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5BbmRN
YXRjaEFtb3VudCwgYmVnaW4pOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXRjaEFtb3VudE9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXRvZihQYXJlbkNvbnRleHQsIG1hdGNoQW1vdW50KTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5B
bmRNYXRjaEFtb3VudCwgbWF0Y2hBbW91bnQpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCByZXR1cm5BZGRyZXNzT2Zmc2V0KCkKQEAgLTM3NCwxNyArMzc2LDI5IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICBtb3ZlKGhlYWRQdHJSZWdpc3RlciwgZnJlZWxpc3RSZWdp
c3Rlcik7CiAgICAgfQogCisKKyAgICB2b2lkIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFy
ZW5Db250ZXh0KFJlZ2lzdGVySUQgYmVnaW5HUFIsIFJlZ2lzdGVySUQgbWF0Y2hBbW91bnRHUFIs
IFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKTsKKyAgICAgICAgc3RvcmVQYWlyMzIoYmVnaW5HUFIsIG1hdGNoQW1vdW50R1BSLCBw
YXJlbkNvbnRleHRHUFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkp
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29u
dGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVn
aXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVChQYXJlbkNvbnRl
eHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQo
KSk7CisgICAgICAgIGxvYWRQYWlyMzIocGFyZW5Db250ZXh0R1BSLCBUcnVzdGVkSW1tMzIoUGFy
ZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSwgYmVnaW5HUFIsIG1hdGNoQW1vdW50R1BSKTsKKyAg
ICB9CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRS
ZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBh
cmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBh
dHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hB
bW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1wUmVnLCBBZGRyZXNz
KHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7Cisg
ICAgICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0KGluZGV4LCB0ZW1w
UmVnLCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5C
YXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVz
c0luZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBh
cmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpKTsKICAg
ICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0
ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJw
YXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAg
ICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAq
IHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0
ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJu
T2Zmc2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Mob3V0
cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKKyAg
ICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQ
YXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKICAgICAgICAgICAg
ICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMzk3LDE2ICs0MTEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICB2b2lk
IHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVy
SUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0
dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAgIHsKLSAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zm
c2V0KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVu
Q29udGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVU
b0ZyYW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVu
Q29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSwgdGVtcFJlZyk7
CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRp
b24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJu
QWRkcmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVn
LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
OnJldHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklU
Q29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJw
YXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVy
bikpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNz
KG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CisgICAgICAg
ICAgICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1
YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBz
dG9yZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVv
Zih1bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdWJwYXR0
ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXM7CkBAIC0xMjc1LDggKzEyODgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
SnVtcExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1
YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91
dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsK
LSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkg
KyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBh
dHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsK
IAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNv
bnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9
IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0g
MSkgewpAQCAtMTMwNyw4ICsxMzE5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBjaGFyYWN0ZXJPclRlbXApOwogICAgICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAg
ICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5x
dWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBw
YXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChz
dWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAg
ICAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVy
bkluZGV4LCBwYXR0ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChvdXRlckxvb3ApOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWF0Y2hlcy5saW5rKHRoaXMpOwpAQCAtMTMzMSw4
ICsxMzQyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hh
cmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFj
a1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5x
dWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCiAgICAgICAgICAgICAgICAgbWF0
Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQp
LCBjaGFyYWN0ZXJPclRlbXApKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwg
KHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAq
IHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5z
KG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAg
ICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFtZSBmb3IgcmVzdG9yaW5nIGFm
dGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6YmVnaW5J
bmRleCgpKTsKQEAgLTEzNTMsOCArMTM2Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAg
ICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRl
eCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8
IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxvYWRT
dWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVt
cCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3NmdWwgd2l0aG91
dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgSnVtcCB6ZXJvTGVuZ3RoTWF0Y2gg
PSBicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVybkluZGV4KTsKQEAgLTE0
MDgsOCArMTQxNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgbG9hZEZyb21GcmFt
ZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6
bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIG1hdGNoQW1vdW50KSk7CiAKLSAgICAgICAgICAgIGxv
YWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwg
cGF0dGVyblN0YXJ0SW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAo
KHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuRW5kSW5kZXhP
ckxlbik7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQs
IHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5kZXhPckxlbik7CiAgICAgICAgICAgICBz
dWIzMihwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4pOwogICAgICAgICAg
ICAgc3ViMzIocGF0dGVybkVuZEluZGV4T3JMZW4sIGluZGV4KTsKIApAQCAtMTY2MSwxMCArMTY2
OSw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWly
cykKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
KSk7CiAKLSAgICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7CiAgICAgICAgIENoZWNr
ZWQ8dW5zaWduZWQ+IHNjYWxlZE1heENvdW50ID0gdGVybS0+cXVhbnRpdHlNYXhDb3VudDsKICAg
ICAgICAgc2NhbGVkTWF4Q291bnQgKj0gVV9JU19CTVAoY2gpID8gMSA6IDI7Ci0gICAgICAgIHN1
YjMyKEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRSZWdpc3Rlcik7CisgICAgICAgIHN1YjMy
KGluZGV4LCBUcnVzdGVkSW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJlZ2lzdGVyKTsKIAog
ICAgICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tl
ZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwgY2hhcmFjdGVy
LCBjb3VudFJlZ2lzdGVyKTsKQEAgLTE4NjgsMTUgKzE4NzUsMTIgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQogICAgICAgICAgICAgb3AubV9q
dW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgpKTsKIAotICAgICAgICBtb3ZlKGlu
ZGV4LCBjb3VudFJlZ2lzdGVyKTsKLQogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzY2FsZWRN
YXhDb3VudCA9IHRlcm0tPnF1YW50aXR5TWF4Q291bnQ7Ci0KICNpZiBFTkFCTEUoWUFSUl9KSVRf
VU5JQ09ERV9FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMg
JiYgdGVybS0+Y2hhcmFjdGVyQ2xhc3MtPmhhc09ubHlOb25CTVBDaGFyYWN0ZXJzKCkgJiYgIXRl
cm0tPmludmVydCgpKQogICAgICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0gMjsKICNlbmRpZgot
ICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudCksIGNvdW50UmVnaXN0ZXIpOworICAg
ICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRSZWdp
c3Rlcik7CiAKICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAgSnVtcExpc3QgbWF0
Y2hEZXN0OwpAQCAtMjQxOSw4ICsyNDIzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBz
dG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
MzIoaW5kZXgsIFRydXN0ZWRJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1Qw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwpAQCAtMjQ0NCwxNSArMjQ0NywxNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBub3QgaGF2ZSB5ZXQgc2V0IHRo
ZSB2YWx1ZSBpbiB0aGUgZmlyc3QgCiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9IHJl
dHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9o
YXNGaXhlZFNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVn
aXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKHByaW9yQWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1
ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmV0dXJuUmVn
aXN0ZXIsIG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZVBhaXIzMihyZXR1cm5SZWdpc3RlciwgaW5kZXgsIG91dHB1dCwgVHJ1c3Rl
ZEltbTMyKDApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBnZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQotICAgICAg
ICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCwgNCkpOworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVk
ZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRk
cmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbW92
ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIyKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRlUmV0
dXJuKCk7CkBAIC0yNjM2LDggKzI2NDEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVu
dGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5wdXRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGlu
ZGV4VGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGlucHV0
T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIo
aW5kZXgsIFRydXN0ZWRJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFydChpbmRleFRlbXBvcmFyeSwgdGVy
bS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXgsIHRlcm0t
PnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CkBAIC0yNjY0LDggKzI2NjgsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYmIG1fY29tcGls
ZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0t
PmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBv
cmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMy
KGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3VicGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0
dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdWJwYXR0ZXJuRW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJu
SWQpOwpAQCAtMjc3Myw4ICsyNzc2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291
bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCArPSB0ZXJtLT5wYXJlbnRo
ZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRl
eFRlbXBvcmFyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihpbnB1dE9m
ZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKGlu
ZGV4LCBUcnVzdGVkSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhUZW1wb3JhcnksIHRlcm0t
PnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0KGluZGV4LCB0ZXJtLT5w
YXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjgxMyw4ICsyODE1LDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKGlucHV0T2Zmc2V0KSwgaW5k
ZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChp
bmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJu
RW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjk4OCwxMSAr
Mjk4OSwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgs
IHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
MzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleCwgcmVnVDApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0zMTA2
LDggKzMxMDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihtX3BhdHRlcm4ubV9ib2R5LT5t
X21pbmltdW1TaXplKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMy
KGluZGV4LCBUcnVzdGVkSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSksIHJl
Z1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDA1
MCw2ICs0MDQ5LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9p
ZCBsb2FkU3ViUGF0dGVybnMoUmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2lnbmVkIHN1YnBhdHRl
cm5JZCwgUmVnaXN0ZXJJRCBzdGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVuZEluZGV4T3JMZW5H
UFIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChz
dWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4
T3JMZW5HUFIpOworICAgIH0KKwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZ
YXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2Nr
JiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxlTW9k
ZSkKICAgICAgICAgOiBtX3ZtKHZtKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434741</attachid>
            <date>2021-08-02 00:26:40 -0700</date>
            <delta_ts>2021-08-02 00:37:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210802002639.patch</filename>
            <type>text/plain</type>
            <size>45789</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li5hMjFmNTZhYTNjYzBjOTVl
YmY1ZmI1YWM5MjQ4MzdkNzExMGZmZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGxvYWRQYWlyMzIgYW5kIHN0b3JlUGFpcjMyIHRvIGFsbCBtYWNybyBhc3Nl
bWJsZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gY2FsbCBpdCB3aXRob3V0IENQVShBUk02NCku
IEludGVybmFsbHksIHR3byBsb2FkcyBvciBzdG9yZXMgYXJlIGNvbWJpbmVkLgorCisgICAgICAg
IFdlIGFsc28gYWRkIHN1YjMyKFJlZ2lzdGVySUQsIFRydXN0ZWRJbW0zMiwgUmVnaXN0ZXJJRCkg
dG8gYWxsIHBsYXRmb3JtcyBzbyB0aGF0CisgICAgICAgIHdlIGNhbiByZW1vdmUgc29tZSB1bm5l
Y2Vzc2FyeSBtb3ZlcyBvbiBBUk02NCAvIEFSTXY3IC8gTUlQUy4KKworICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZFBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVQYWlyNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXI2
NFdpdGhOb25UZW1wb3JhbEFjY2Vzcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3ViMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpsb2FkUGFpcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpzdWIzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TG9hZFN0b3JlUGFpcjMyKToK
KyAgICAgICAgKEpTQzo6dGVzdFN1YjMyQXJnSW1tKToKKyAgICAgICAgKEpTQzo6dGVzdExvYWRT
dG9yZVBhaXI2NEludDY0KToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorCiAyMDIxLTA3
LTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TW92ZSBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUyB0byBFTkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9F
WFBSRVNTSU9OUykgaW4gUGxhdGZvcm1FbmFibGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBlNmJmYmVjNjAw
MWMxMGM2MWU5ZjI2NmVmZjI3YWQ2ZjEwZTg5ZjhmLi5hYzg2MTcyMjZlM2MzMmZiOTVhOGI5YTcy
OTlhZWIwZGZiMDQ5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTQ3Myw2ICsxNDczLDI3IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgIH0KIAorICAgIHZvaWQgbG9hZFBh
aXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikK
KyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBk
ZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUs
IGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChvZmZzZXQubV92
YWx1ZSA8PSAyNTIgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTI1NikgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRwPDMyPihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVz
dDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRl
c3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZv
aWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKICAgICB7CiAgICAgICAgIGxvYWRQYWlyNjQoc3JjLCBUcnVzdGVkSW1tMzIoMCks
IGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgwLDcgKzE1MDEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAg
ICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBS
ZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAg
ICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29t
ZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUw
NCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkgeworICAgICAgICAg
ICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAg
ICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92
YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1f
dmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFp
cjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qx
LCBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTQ5MCw3ICsxNTIyLDE4IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
IAogICAgIHZvaWQgbG9hZFBhaXI2NFdpdGhOb25UZW1wb3JhbEFjY2VzcyhSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0
MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3Jj
LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElm
IGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAg
ICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkbnA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZz
ZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHNyYyA9PSBkZXN0MSkgeworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9h
ZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxv
YWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKQEAgLTE1MDAsNyArMTU0MywxMyBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBvZmZzZXQsIEZQUmVnaXN0ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0
Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0
aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9m
ZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbG9hZERvdWJsZShB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIGxvYWREb3VibGUo
QWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKICAgICB9CiAKICAgICB2
b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24pCkBAIC0xODI0LDYgKzE4NzMs
MjEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAg
dm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwg
VHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBv
ZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gMjUyICYmIG9mZnNl
dC5tX3ZhbHVlID49IC0yNTYpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDwzMj4oc3Jj
MSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1
ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUg
KyA0KSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJl
Z2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3RvcmVQYWly
NjQoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTE4MzEsNyArMTg5NSwx
MiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3Jj
MSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZz
ZXQubV92YWx1ZSA+PSAtNTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNy
YzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBzdG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUpKTsKKyAgICAgICAgc3RvcmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVl
ICsgOCkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nl
c3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAg
LTE4NDEsNyArMTkxMCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0
V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAg
ICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikg
eworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RucDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0
b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9y
ZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7CiAgICAgfQogCiAg
ICAgdm9pZCBzdG9yZVBhaXI2NChGUFJlZ2lzdGVySUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NTEsNyArMTkyNSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUx
MikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBv
ZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3RvcmVEb3VibGUoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAg
ICBzdG9yZURvdWJsZShzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGVmOGM5OWVmNjNhZDI2ZDZiMWE3Y2M0YWI3MTQ1NzA2
MTRjOGU5NjkuLjc2NjVmZmVmNWM0NWUzNzQ4ZTk5NmJkZDU0MjM1MDM1MjgxNTk1NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCkBAIC01NDAsNiArNTQwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViKGRlc3QsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKFJl
Z2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6
bWFrZVVJbnQxMk9yRW5jb2RlZEltbShyaWdodC5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUlt
bS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWIoZGVzdCwgbGVmdCwgYXJt
SW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YihkZXN0LCBsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1lZGlh
dGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTJPckVuY29kZWRJbW0oaW1t
Lm1fdmFsdWUpOwpAQCAtODY3LDYgKzg3OCwyNCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7
CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7
CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1t
MzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IGxkcmQgY2FuIGJlIHVzZWQgaWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBj
b25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRl
c3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rp
b24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRk
cmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFk
ZHJlc3Mub2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC05NjUsNiArOTk0LDE4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMx
LCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQ
YWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwg
VHJ1c3RlZEltbTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBzdHJkIGNhbiBi
ZSB1c2VkIGlmIHNyYzEgYW5kIHNyYzIgYXJlIGNvbnNlY3V0aXZlIHBhaXIgb2YgcmVnaXN0ZXJz
LgorICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsK
KyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkp
OworICAgIH0KKwogICAgIC8vIFBvc3NpYmx5IGNsb2JiZXJzIHNyYywgYnV0IG5vdCBvbiB0aGlz
IGFyY2hpdGVjdHVyZS4KICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRl
eCAzMzNjZWUwODZhMDQwZWYxZDhlNDMwNGU2ZDkxYTcyZGM1ZjU3ZWFhLi4xNDQ1Yzc5MWIyOGNl
ZjVkZmMxNTZjMzEyNGM2YTRlMjIyMWFjMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTEyOTMsNiArMTI5Mywy
MyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgbG9hZFBhaXIz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAg
ICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0
Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxk
cCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEp
IHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwg
ZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSks
IGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhz
cmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpA
QCAtMTU4Niw2ICsxNjAzLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICB9CiAgICAgfQogCisg
ICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVz
dCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lz
dGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0z
MiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNl
dC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlv
bnM6CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCmluZGV4IDU0ZDQ1NjdkNGMxYzQ1ZGZlMGMzMjhjYTdiY2RiODRlOWViMmY5NzYuLjlh
ZmIzMjY0ZGUzMjc2ODQyN2M0YzY0Y2M4MTMwODBiNzU2NDczMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgKQEAgLTgyNSw2ICs4MjUsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3ViMzIo
cmlnaHQsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUo
bGVmdCwgZGVzdCk7CisgICAgICAgIHN1YjMyKHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2
b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpAQCAtMTMwMCw2ICsxMzA2LDIzIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnN3bF9tcihhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAg
ICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOworICAg
IH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9m
ZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAg
IEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21l
cyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIHpl
cm9FeHRlbmQxNlRvMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnp3bF9ycihzcmMsIGRlc3QpOwpAQCAtMTM0OSw2ICsxMzcy
LDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfaThtKGlt
bTgubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklE
IHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICBzdG9y
ZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAgc3RvcmUz
MihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0KKwogICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQgZ2V0VW51c2VkUmVnaXN0ZXIoQmFzZUlu
ZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lz
dGVyczo6ZWF4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2UmVnaXN0ZXJzOjplYXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDFjYTY5ODNlYjcw
ZDk2NDBiZTRmYjJmMTEwZTJmOGUwMWYzOGY4MzguLjUxYjBkMjc1N2RjY2NiYTc5OTg2OGQwMjEy
YTIxNDUxZWZkMjI0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCkBAIC0xMDA1LDIzICsxMDA1LDYgQEAgdm9pZCB0ZXN0U3ViMzJJbW0oKQogICAg
IH0KIH0KIAotdm9pZCB0ZXN0U3ViMzJBcmdJbW0oKQotewotICAgIGZvciAoYXV0byBpbW1lZGlh
dGUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKLSAgICAgICAgYXV0byBzdWIgPSBjb21waWxlKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKLSAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7Ci0KLSAgICAgICAgICAgIGppdC5zdWIzMihHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGltbWVkaWF0ZSksIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKLQotICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKLSAgICAgICAgICAg
IGppdC5yZXQoKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50
MzJPcGVyYW5kcygpKQotICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90PihzdWIs
IHZhbHVlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC0gaW1tZWRpYXRlKSk7Ci0gICAg
fQotfQotCiB2b2lkIHRlc3RTdWI2NEltbTMyKCkKIHsKICAgICBmb3IgKGF1dG8gaW1tZWRpYXRl
IDogaW50NjRPcGVyYW5kcygpKSB7CkBAIC0zMjM2LDYgKzMyMTksMjYyIEBAIHZvaWQgdGVzdEF0
b21pY1N0cm9uZ0NBU0ZpbGwxNigpCiAKICNlbmRpZiAvLyBDUFUoQVJNNjQpCiAKK3ZvaWQgdGVz
dExvYWRTdG9yZVBhaXIzMigpCit7CisgICAgY29uc3RleHByIHVpbnQzMl90IGluaXRpYWxWYWx1
ZSA9IDB4NTVhYWJiODB1OworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZTEgPSA0MjsKKyAg
ICBjb25zdGV4cHIgdWludDMyX3QgdmFsdWUyID0gMHhjZmJiMTM1N3U7CisKKyAgICB1aW50MzJf
dCBidWZmZXJbMTBdOworCisgICAgYXV0byBpbml0QnVmZmVyID0gWyZdIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgICAgICBidWZmZXJbaV0gPSBp
bml0aWFsVmFsdWUgKyBpOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFpciB7CisgICAgICAgIHVp
bnQzMl90IHZhbHVlMTsKKyAgICAgICAgdWludDMyX3QgdmFsdWUyOworICAgIH07CisKKyAgICBQ
YWlyIHBhaXI7CisgICAgYXV0byBpbml0UGFpciA9IFsmXSB7CisgICAgICAgIHBhaXIgPSB7IDAs
IDAgfTsKKyAgICB9OworCisgICAgLy8gVGVzdCBsb2FkUGFpcjMyLgorICAgIGF1dG8gdGVzdExv
YWRQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZm
ZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
cGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LmxvYWRQYWlyMzIo
YnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQgKiBzaXplb2YodWlu
dDMyX3QpKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKTsKKworICAgICAgICBqaXQu
c3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIDAp
KTsKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDMsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhwYWlyR1BSLCBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRl
c3RMb2FkUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
dGVzdExvYWRQYWlyKGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAg
ICBpbml0UGFpcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIwLCAmYnVmZmVyWzRd
LCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOwor
ICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsKKworICAgIGluaXRQ
YWlyKCk7CisgICAgYnVmZmVyWzRdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1XSA9IHZhbHVlMjsK
KyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAg
IENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUy
LCB2YWx1ZTIpOworCisgICAgYXV0byB0ZXN0TG9hZFBhaXJNaW51czIgPSBjb21waWxlKFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyKGppdCwgLTIpOworICAg
IH0pOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyTWlu
dXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRp
YWxWYWx1ZSArIDQgLSAyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVl
ICsgNSAtIDIpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNCAtIDJdID0gdmFsdWUy
OworICAgIGJ1ZmZlcls1IC0gMl0gPSB2YWx1ZTE7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2Fk
UGFpck1pbnVzMiwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUx
LCB2YWx1ZTIpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTEpOworCisgICAgYXV0
byB0ZXN0TG9hZFBhaXJQbHVzMyA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRQYWlyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVyWzRdLCAmcGFpcik7
CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQgKyAzKTsKKyAgICBD
SEVDS19FUShwYWlyLnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSArIDMpOworCisgICAgaW5pdFBh
aXIoKTsKKyAgICBidWZmZXJbNCArIDNdID0gdmFsdWUxOworICAgIGJ1ZmZlcls1ICsgM10gPSB2
YWx1ZTI7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclBsdXMzLCAmYnVmZmVyWzRdLCAm
cGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEo
cGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICAvLyBUZXN0IGxvYWRQYWlyMzIgdXNpbmcgYSBi
dWZmZXIgcmVnaXN0ZXIgYXMgYSBkZXN0aW5hdGlvbi4KKyAgICBhdXRvIHRlc3RMb2FkUGFpclVz
aW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uID0gW10gKENDYWxsSGVscGVycyYgaml0LCBp
bnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcGFpckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsK
KyAgICAgICAgaml0LmxvYWRQYWlyMzIoYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihvZmZzZXQgKiBzaXplb2YodWludDMyX3QpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAgICAgICBqaXQuc3Rv
cmUzMihHUFJJbmZvOjpyZWdUMiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIHNpemVv
Zih1aW50MzJfdCkpKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
ICAgICBqaXQucmV0KCk7CisgICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZm
ZXJSZWdpc3RlckFzRGVzdGluYXRpb24wID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9u
KGppdCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisKKyAgICBpbml0UGFpcigp
OworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0
aW5hdGlvbjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwg
aW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1
ZSArIDUpOworCisgICAgLy8gVGVzdCBzdG9yZVBhaXIzMi4KKyAgICBhdXRvIHRlc3RTdG9yZVBh
aXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQ
UiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICAgICAgaml0LnN0b3JlUGFpcjMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBidWZmZXJHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25lZCkpKTsKKworICAg
ICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAg
fTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpcjAgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDApOworICAgIH0pOworCisgICAg
aW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyMCwgdmFsdWUxLCB2
YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVl
ICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBD
SEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxWYWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZl
clszXSwgaW5pdGlhbFZhbHVlICsgMyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCB2YWx1ZTEp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJb
Nl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgaW5pdGlhbFZh
bHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFsdWUgKyA4KTsKKyAg
ICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgYXV0byB0ZXN0
U3RvcmVQYWlyTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAg
ICAgIHRlc3RTdG9yZVBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJNaW51czIsIHZhbHVlMSwgdmFsdWUyLCAm
YnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgdmFsdWUyKTsKKyAg
ICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0
aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tf
RVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFp
clBsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RT
dG9yZVBhaXIoaml0LCAzKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZv
a2U8dm9pZD4odGVzdFN0b3JlUGFpclBsdXMzLCB2YWx1ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwg
aW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUg
KyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJbN10sIHZhbHVlMSk7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5
XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFpcjMyIGZyb20gMSBy
ZWdpc3Rlci4KKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnID0gW10gKENDYWxsSGVs
cGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBidWZmZXJHUFIgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjE7CisgICAgICAgIGppdC5zdG9yZVBhaXIzMihHUFJJbmZvOjphcmd1bWVudEdQUjAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgYnVmZmVyR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihvZmZzZXQgKiBzaXplb2YodW5zaWduZWQpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRl
c3RTdG9yZVBhaXJGcm9tT25lUmVnMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkg
eworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhqaXQsIDApOworICAgIH0pOworCisg
ICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyRnJvbU9uZVJl
ZzAsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFs
VmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIHZh
bHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1
ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCBpbml0
aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGluaXRpYWxWYWx1ZSArIDgp
OworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7CisKKyAgICBhdXRv
IHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGppdCwgLTIpOworICAg
IH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWly
RnJvbU9uZVJlZ01pbnVzMiwgdmFsdWUxLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlh
bFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCB2YWx1ZTEpOworICAgIENIRUNL
X0VRKGJ1ZmZlclszXSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxW
YWx1ZSArIDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4XSwgaW5p
dGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5
KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdQbHVzMyA9IGNvbXBpbGUoWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZyhq
aXQsIDMpOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0
ZXN0U3RvcmVQYWlyRnJvbU9uZVJlZ1BsdXMzLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENI
RUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVy
WzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIGluaXRpYWxW
YWx1ZSArIDIpOworICAgIENIRUNLX0VRKGJ1ZmZlclszXSwgaW5pdGlhbFZhbHVlICsgMyk7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzRdLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShi
dWZmZXJbNV0sIGluaXRpYWxWYWx1ZSArIDUpOworICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5p
dGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzddLCB2YWx1ZTIpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls4XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRp
YWxWYWx1ZSArIDkpOworfQorCit2b2lkIHRlc3RTdWIzMkFyZ0ltbSgpCit7CisgICAgZm9yIChh
dXRvIGltbWVkaWF0ZSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBhdXRvIHN1YiA9IGNv
bXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgaml0LnN1YjMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW1tZWRpYXRlKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGF1dG8g
dmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWlu
dDMyX3Q+KHN1YiwgdmFsdWUpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgLSBpbW1lZGlh
dGUpKTsKKyAgICB9Cit9CisKICNpZiBDUFUoQVJNNjQpCiB2b2lkIHRlc3RMb2FkU3RvcmVQYWly
NjRJbnQ2NCgpCiB7CkBAIC0zMzI1LDYgKzM1NjQsMzIgQEAgdm9pZCB0ZXN0TG9hZFN0b3JlUGFp
cjY0SW50NjQoKQogICAgIENIRUNLX0VRKHBhaXIudmFsdWUxLCB2YWx1ZTEpOwogICAgIENIRUNL
X0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOwogCisgICAgLy8gVGVzdCBsb2FkUGFpcjY0IHVzaW5n
IGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24uCisgICAgYXV0byB0ZXN0TG9hZFBh
aXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9IFtdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjE7CisgICAgICAgIGppdC5sb2FkUGFpcjY0KGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIDApKTsKKyAgICAgICAg
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BS
LCBzaXplb2YodWludDY0X3QpKSk7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpclVz
aW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0
aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5pdEJ1ZmZlcigpOworCisgICAgaW5p
dFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3Rl
ckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52
YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0
aWFsVmFsdWUgKyA1KTsKKwogICAgIC8vIFRlc3Qgc3RvcmVQYWlyNjQuCiAgICAgYXV0byB0ZXN0
U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBpbnQgb2Zmc2V0KSB7CiAgICAgICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CkBAIC00ODkxLDYgKzUxNTYsOCBAQCB2b2lkIHJ1
bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
ICAgICBGT1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTih0ZXN0Q29tcGFyZURvdWJsZVNhbWVB
cmcpOwogCiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlhdGVzKCkpOworICAgIFJVTih0ZXN0
TG9hZFN0b3JlUGFpcjMyKCkpOworICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CiAKICNpZiBD
UFUoWDg2XzY0KQogICAgIFJVTih0ZXN0QnJhbmNoVGVzdEJpdDMyUmVnUmVnKCkpOwpAQCAtNDkx
OCw3ICs1MTg1LDYgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBS
VU4odGVzdFN1YjMySW1tKCkpOwotICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CiAgICAgUlVO
KHRlc3RTdWI2NEltbTMyKCkpOwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW0zMigpKTsKICAgICBS
VU4odGVzdFN1YjY0SW1tNjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IGNjYTc0ODJjODkwOGUwMDEzOWQzMTZlODE3NmFkN2MyZWY1YzhhYWUuLjBkMmVlODRk
M2U3ZDYyZjBjODExZGVkMmU4Mjc2MjFhMmVjYjdiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC0yNzgsOCArMjc4LDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAg
ICAgc3RydWN0IFBhcmVuQ29udGV4dCB7CiAgICAgICAgIHN0cnVjdCBQYXJlbkNvbnRleHQqIG5l
eHQ7Ci0gICAgICAgIHVpbnQzMl90IGJlZ2luOwotICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3Vu
dDsKKyAgICAgICAgc3RydWN0IEJlZ2luQW5kTWF0Y2hBbW91bnQgeworICAgICAgICAgICAgdWlu
dDMyX3QgYmVnaW47CisgICAgICAgICAgICB1aW50MzJfdCBtYXRjaEFtb3VudDsKKyAgICAgICAg
fSBiZWdpbkFuZE1hdGNoQW1vdW50OwogICAgICAgICB1aW50cHRyX3QgcmV0dXJuQWRkcmVzczsK
ICAgICAgICAgc3RydWN0IFN1YnBhdHRlcm5zIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0
OwpAQCAtMjk5LDEyICszMDEsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBiZWdpbk9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBv
ZmZzZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRv
ZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5BbmRN
YXRjaEFtb3VudCwgYmVnaW4pOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBtYXRjaEFtb3VudE9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvZmZz
ZXRvZihQYXJlbkNvbnRleHQsIG1hdGNoQW1vdW50KTsKKyAgICAgICAgICAgIHJldHVybiBvZmZz
ZXRvZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5B
bmRNYXRjaEFtb3VudCwgbWF0Y2hBbW91bnQpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCByZXR1cm5BZGRyZXNzT2Zmc2V0KCkKQEAgLTM3NCwxNyArMzc2LDI5IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICBtb3ZlKGhlYWRQdHJSZWdpc3RlciwgZnJlZWxpc3RSZWdp
c3Rlcik7CiAgICAgfQogCisKKyAgICB2b2lkIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFy
ZW5Db250ZXh0KFJlZ2lzdGVySUQgYmVnaW5HUFIsIFJlZ2lzdGVySUQgbWF0Y2hBbW91bnRHUFIs
IFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKTsKKyAgICAgICAgc3RvcmVQYWlyMzIoYmVnaW5HUFIsIG1hdGNoQW1vdW50R1BSLCBw
YXJlbkNvbnRleHRHUFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkp
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29u
dGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVn
aXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVChQYXJlbkNvbnRl
eHQ6OmJlZ2luT2Zmc2V0KCkgKyA0ID09IFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQo
KSk7CisgICAgICAgIGxvYWRQYWlyMzIocGFyZW5Db250ZXh0R1BSLCBUcnVzdGVkSW1tMzIoUGFy
ZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSwgYmVnaW5HUFIsIG1hdGNoQW1vdW50R1BSKTsKKyAg
ICB9CisKICAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRS
ZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25l
ZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBh
cmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBh
dHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hB
bW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKLSAgICAgICAgc3RvcmUzMih0ZW1wUmVnLCBBZGRyZXNz
KHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSk7Cisg
ICAgICAgIHN0b3JlQmVnaW5BbmRNYXRjaEFtb3VudFRvUGFyZW5Db250ZXh0KGluZGV4LCB0ZW1w
UmVnLCBwYXJlbkNvbnRleHRSZWcpOwogICAgICAgICBsb2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5C
YXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVz
c0luZGV4KCksIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBh
cmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpKTsKICAg
ICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0
ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJw
YXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAg
ICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAq
IHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0
ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJu
T2Zmc2V0KHN1YnBhdHRlcm4pKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Mob3V0
cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpLCB0ZW1wUmVnKTsKKyAg
ICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQ
YXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKICAgICAgICAgICAg
ICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMzk3LDE2ICs0MTEsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICB2b2lk
IHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVy
SUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0
dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQogICAgIHsKLSAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zm
c2V0KCkpLCBpbmRleCk7CisgICAgICAgIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVu
Q29udGV4dChwYXJlbkNvbnRleHRSZWcsIGluZGV4LCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVU
b0ZyYW1lKGluZGV4LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZv
UGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKHBhcmVu
Q29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9mZnNldCgpKSwgdGVtcFJlZyk7
CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVnLCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRp
b24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJu
QWRkcmVzc09mZnNldCgpKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlVG9GcmFtZSh0ZW1wUmVn
LCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
OnJldHVybkFkZHJlc3NJbmRleCgpKTsKICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklU
Q29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJw
YXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKLSAgICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVy
bikpLCB0ZW1wUmVnKTsKLSAgICAgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNz
KG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSk7CisgICAgICAg
ICAgICAgICAgbG9hZDY0KEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1
YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBz
dG9yZTY0KHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVv
Zih1bnNpZ25lZCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdWJwYXR0
ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXM7CkBAIC0xMjc1LDggKzEyODgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
SnVtcExpc3QgbWF0Y2hlczsKIAogICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1
YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91
dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsK
LSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkg
KyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBh
dHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsK
IAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNv
bnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9
IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0g
MSkgewpAQCAtMTMwNyw4ICsxMzE5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBjaGFyYWN0ZXJPclRlbXApOwogICAgICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAg
ICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBJbW0zMih0ZXJtLT5x
dWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0gICAgICAgICAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBw
YXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChz
dWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAg
ICAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVy
bkluZGV4LCBwYXR0ZXJuVGVtcCk7CiAgICAgICAgICAgICAgICAganVtcChvdXRlckxvb3ApOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWF0Y2hlcy5saW5rKHRoaXMpOwpAQCAtMTMzMSw4
ICsxMzQyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY2hh
cmFjdGVyT3JUZW1wLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFj
a1JlZmVyZW5jZTo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5x
dWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCiAgICAgICAgICAgICAgICAgbWF0
Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQp
LCBjaGFyYWN0ZXJPclRlbXApKTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwg
KHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAq
IHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5z
KG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAg
ICAgICAgICAgLy8gU3RvcmUgY3VycmVudCBpbmRleCBpbiBmcmFtZSBmb3IgcmVzdG9yaW5nIGFm
dGVyIGEgcGFydGlhbCBtYXRjaAogICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6YmVnaW5J
bmRleCgpKTsKQEAgLTEzNTMsOCArMTM2Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAg
ICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRl
eCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8
IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxvYWRT
dWJQYXR0ZXJucyhvdXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVybkluZGV4LCBwYXR0ZXJuVGVt
cCk7CiAKICAgICAgICAgICAgIC8vIEFuIGVtcHR5IG1hdGNoIGlzIHN1Y2Nlc3NmdWwgd2l0aG91
dCBjb25zdW1pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgSnVtcCB6ZXJvTGVuZ3RoTWF0Y2gg
PSBicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVybkluZGV4KTsKQEAgLTE0
MDgsOCArMTQxNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgbG9hZEZyb21GcmFt
ZShwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6
bWF0Y2hBbW91bnRJbmRleCgpLCBtYXRjaEFtb3VudCk7CiAgICAgICAgICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIG1hdGNoQW1vdW50KSk7CiAKLSAgICAgICAgICAgIGxv
YWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSwg
cGF0dGVyblN0YXJ0SW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAo
KHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuRW5kSW5kZXhP
ckxlbik7CisgICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQs
IHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5kZXhPckxlbik7CiAgICAgICAgICAgICBz
dWIzMihwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVybkVuZEluZGV4T3JMZW4pOwogICAgICAgICAg
ICAgc3ViMzIocGF0dGVybkVuZEluZGV4T3JMZW4sIGluZGV4KTsKIApAQCAtMTY2MSwxMCArMTY2
OSw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWly
cykKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
KSk7CiAKLSAgICAgICAgbW92ZShpbmRleCwgY291bnRSZWdpc3Rlcik7CiAgICAgICAgIENoZWNr
ZWQ8dW5zaWduZWQ+IHNjYWxlZE1heENvdW50ID0gdGVybS0+cXVhbnRpdHlNYXhDb3VudDsKICAg
ICAgICAgc2NhbGVkTWF4Q291bnQgKj0gVV9JU19CTVAoY2gpID8gMSA6IDI7Ci0gICAgICAgIHN1
YjMyKEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRSZWdpc3Rlcik7CisgICAgICAgIHN1YjMy
KGluZGV4LCBUcnVzdGVkSW1tMzIoc2NhbGVkTWF4Q291bnQpLCBjb3VudFJlZ2lzdGVyKTsKIAog
ICAgICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tl
ZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb24gLSBzY2FsZWRNYXhDb3VudCwgY2hhcmFjdGVy
LCBjb3VudFJlZ2lzdGVyKTsKQEAgLTE4NjgsMTUgKzE4NzUsMTIgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQogICAgICAgICAgICAgb3AubV9q
dW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dCgpKTsKIAotICAgICAgICBtb3ZlKGlu
ZGV4LCBjb3VudFJlZ2lzdGVyKTsKLQogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBzY2FsZWRN
YXhDb3VudCA9IHRlcm0tPnF1YW50aXR5TWF4Q291bnQ7Ci0KICNpZiBFTkFCTEUoWUFSUl9KSVRf
VU5JQ09ERV9FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMg
JiYgdGVybS0+Y2hhcmFjdGVyQ2xhc3MtPmhhc09ubHlOb25CTVBDaGFyYWN0ZXJzKCkgJiYgIXRl
cm0tPmludmVydCgpKQogICAgICAgICAgICAgc2NhbGVkTWF4Q291bnQgKj0gMjsKICNlbmRpZgot
ICAgICAgICBzdWIzMihJbW0zMihzY2FsZWRNYXhDb3VudCksIGNvdW50UmVnaXN0ZXIpOworICAg
ICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHNjYWxlZE1heENvdW50KSwgY291bnRSZWdp
c3Rlcik7CiAKICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAgSnVtcExpc3QgbWF0
Y2hEZXN0OwpAQCAtMjQxOSw4ICsyNDIzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBz
dG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSksIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
MzIoaW5kZXgsIFRydXN0ZWRJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1Qw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOwpAQCAtMjQ0NCwxNSArMjQ0NywxNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBub3QgaGF2ZSB5ZXQgc2V0IHRo
ZSB2YWx1ZSBpbiB0aGUgZmlyc3QgCiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9IHJl
dHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9o
YXNGaXhlZFNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVn
aXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKHByaW9yQWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWlu
aW11bVNpemUpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lzdGVyKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1
ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmV0dXJuUmVn
aXN0ZXIsIG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZVBhaXIzMihyZXR1cm5SZWdpc3RlciwgaW5kZXgsIG91dHB1dCwgVHJ1c3Rl
ZEltbTMyKDApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBnZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQotICAgICAg
ICAgICAgICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNzKG91dHB1dCwgNCkpOworICAgICAg
ICAgICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVk
ZVN1YnBhdHRlcm5zKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRk
cmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbW92
ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIyKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRlUmV0
dXJuKCk7CkBAIC0yNjM2LDggKzI2NDEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVu
dGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5wdXRPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGlu
ZGV4VGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKEltbTMyKGlucHV0
T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIo
aW5kZXgsIFRydXN0ZWRJbW0zMihpbnB1dE9mZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRlcm5TdGFydChpbmRleFRlbXBvcmFyeSwgdGVy
bS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXgsIHRlcm0t
PnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CkBAIC0yNjY0LDggKzI2NjgsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYmIG1fY29tcGls
ZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0t
PmlucHV0UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBv
cmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMy
KGlucHV0T2Zmc2V0KSwgaW5kZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3VicGF0dGVybkVuZChpbmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0
dGVybklkKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdWJwYXR0ZXJuRW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJu
SWQpOwpAQCAtMjc3Myw4ICsyNzc2LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291
bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldCArPSB0ZXJtLT5wYXJlbnRo
ZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBpbmRl
eFRlbXBvcmFyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihpbnB1dE9m
ZnNldCksIGluZGV4VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMyKGlu
ZGV4LCBUcnVzdGVkSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhUZW1wb3JhcnksIHRlcm0t
PnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0KGluZGV4LCB0ZXJtLT5w
YXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjgxMyw4ICsyODE1LDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnB1dE9mZnNldCA9IG1fY2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBvcmFyeSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdWIzMihpbmRleCwgVHJ1c3RlZEltbTMyKGlucHV0T2Zmc2V0KSwgaW5k
ZXhUZW1wb3JhcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVybkVuZChp
bmRleFRlbXBvcmFyeSwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJu
RW5kKGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwpAQCAtMjk4OCwxMSAr
Mjk4OSwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPT0gMSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgs
IHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
MzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgLSAxKSwgcmVnVDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoaW5kZXgsIFRydXN0ZWRJbW0zMihh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSAtIDEpLCByZWdUMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleCwgcmVnVDApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0zMTA2
LDggKzMxMDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihtX3BhdHRlcm4ubV9ib2R5LT5t
X21pbmltdW1TaXplKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YjMy
KGluZGV4LCBUcnVzdGVkSW1tMzIobV9wYXR0ZXJuLm1fYm9keS0+bV9taW5pbXVtU2l6ZSksIHJl
Z1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDA1
MCw2ICs0MDQ5LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9p
ZCBsb2FkU3ViUGF0dGVybnMoUmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2lnbmVkIHN1YnBhdHRl
cm5JZCwgUmVnaXN0ZXJJRCBzdGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVuZEluZGV4T3JMZW5H
UFIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChz
dWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4
T3JMZW5HUFIpOworICAgIH0KKwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZ
YXJyUGF0dGVybiYgcGF0dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2Nr
JiBjb2RlQmxvY2ssIENoYXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxlTW9k
ZSkKICAgICAgICAgOiBtX3ZtKHZtKQpAQCAtNDE0OCwxNCArNDE1MiwyMiBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKG1hdGNoTGltaXQpLCByZW1haW5p
bmdNYXRjaENvdW50KTsKICNlbmRpZgogCisgICAgICAgIC8vIEluaXRpYWxpemUgc3VicGF0dGVy
bnMnIHN0YXJ0cy4gQW5kIGluaXRpYWxpemUgbWF0Y2hTdGFydCBpZiBgIW1fcGF0dGVybi5tX2Jv
ZHktPm1faGFzRml4ZWRTaXplYC4KKyAgICAgICAgLy8gSWYgdGhlIG1vZGUgaXMgSklUQ29tcGls
ZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucywgdGhlbiBtYXRjaFN0YXJ0IGlzIHN1YnBhdHRlcm5z
WzBdJ3Mgc3RhcnQuCiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2Rl
OjpJbmNsdWRlU3VicGF0dGVybnMpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDE7ICsraSkKLSAgICAgICAgICAgICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8PCAxKSAqIHNp
emVvZihpbnQpKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSAwOworICAg
ICAgICAgICAgLy8gRmlyc3Qgc3VicGF0dGVybklkJ3Mgc3RhcnQgaXMgY29uZmlndXJlZCB0byBg
aW5kZXhgIGlmICFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZS4KKyAgICAgICAgICAg
IGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAg
ICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICArK3N1YnBhdHRlcm5JZDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoOyBzdWJwYXR0ZXJuSWQgPCBtX3BhdHRl
cm4ubV9udW1TdWJwYXR0ZXJucyArIDE7ICsrc3VicGF0dGVybklkKQorICAgICAgICAgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKC0xKSwgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQg
PDwgMSkgKiBzaXplb2YoaW50KSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZSkKKyAgICAgICAgICAgICAgICBzZXRN
YXRjaFN0YXJ0KGluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghbV9wYXR0ZXJuLm1f
Ym9keS0+bV9oYXNGaXhlZFNpemUpCi0gICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsK
LQogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICBp
ZiAobV9jb250YWluc05lc3RlZFN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBpbml0UGFyZW5D
b250ZXh0RnJlZUxpc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434742</attachid>
            <date>2021-08-02 00:37:23 -0700</date>
            <delta_ts>2021-08-02 12:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210802003722.patch</filename>
            <type>text/plain</type>
            <size>36423</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li5mYzFjZDgzNzRiNWIwMTM5
YzUxNWQ2MjQ2ZTNmNWZlYjc4MGJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbG9hZFBh
aXIgLyBzdG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUg
bm90CisgICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQg
ZG8gdGhhdCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWly
OgorICAgICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdo
IHNvIHRoYXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElm
IGl0IG92ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkZHMgbG9hZFBhaXIzMiBhbmQgc3RvcmVQYWlyMzIgdG8gYWxsIG1hY3Jv
IGFzc2VtYmxlciBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBjYWxsIGl0IHdpdGhvdXQgQ1BVKEFS
TTY0KS4gSW50ZXJuYWxseSwgdHdvIGxvYWRzIG9yIHN0b3JlcyBhcmUgY29tYmluZWQuCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6c3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9y
ZVBhaXIzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6Cisg
ICAgICAgIChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TG9h
ZFN0b3JlUGFpcjY0SW50NjQpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisKIDIwMjEt
MDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBNb3ZlIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TIHRvIEVOQUJMRShZQVJSX0pJVF9VTklDT0RF
X0VYUFJFU1NJT05TKSBpbiBQbGF0Zm9ybUVuYWJsZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGU2YmZiZWM2
MDAxYzEwYzYxZTlmMjY2ZWZmMjdhZDZmMTBlODlmOGYuLmFjODYxNzIyNmUzYzMyZmI5NWE4Yjlh
NzI5OWFlYjBkZmIwNDk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xNDczLDYgKzE0NzMsMjcgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICByZXR1cm4gbGFiZWw7CiAgICAgfQogCisgICAgdm9pZCBsb2Fk
UGFpcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3Qy
KQorICAgIHsKKyAgICAgICAgbG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigwKSwgZGVzdDEs
IGRlc3QyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisg
ICAgeworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIpOyAvLyBJZiBpdCBpcyB0aGUgc2Ft
ZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKG9mZnNldC5t
X3ZhbHVlIDw9IDI1MiAmJiBvZmZzZXQubV92YWx1ZSA+PSAtMjU2KSB7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHA8MzI+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0MSkg
eworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBk
ZXN0Mik7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwg
ZGVzdDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICB9CisgICAgfQorCiAgICAg
dm9pZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQogICAgIHsKICAgICAgICAgbG9hZFBhaXI2NChzcmMsIFRydXN0ZWRJbW0zMigw
KSwgZGVzdDEsIGRlc3QyKTsKQEAgLTE0ODAsNyArMTUwMSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZzZXQubV92YWx1ZSk7CisgICAg
ICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVj
b21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0g
NTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAg
ICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAg
ICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5t
X3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQu
bV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQ
YWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dDEsIFJlZ2lzdGVySUQgZGVzdDIpCkBAIC0xNDkwLDcgKzE1MjIsMTggQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4g
ewogCiAgICAgdm9pZCBsb2FkUGFpcjY0V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRl
c3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBz
cmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8g
SWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAg
ICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSA1MDQgJiYgb2Zmc2V0Lm1fdmFsdWUgPj0gLTUxMikg
eworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9m
ZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNl
dC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywg
b2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAg
bG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjQoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0MSwgRlBSZWdpc3RlcklEIGRlc3QyKQpAQCAtMTUwMCw3ICsxNTQzLDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKIAogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIG9mZnNldCwgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVySUQgZGVzdDIpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHA8NjQ+KGRlc3QxLCBkZXN0Miwgc3JjLCBvZmZz
ZXQubV92YWx1ZSk7CisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlz
IHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAo
b2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9mZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3Zh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkRG91Ymxl
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgbG9hZERvdWJs
ZShBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOwogICAgIH0KIAogICAg
IHZvaWQgYWJvcnRXaXRoUmVhc29uKEFib3J0UmVhc29uIHJlYXNvbikKQEAgLTE4MjQsNiArMTg3
MywyMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAg
ICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0
LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMy
IG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQubV92YWx1ZSA8PSAyNTIgJiYgb2Zm
c2V0Lm1fdmFsdWUgPj0gLTI1NikgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDMyPihz
cmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3Zh
bHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1
ZSArIDQpKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlUGFpcjY0KFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBh
aXI2NChzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMTgzMSw3ICsxODk1
LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNl
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4oc3JjMSwgc3JjMiwgZGVzdCwg
b2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0Lm1fdmFsdWUgPD0gNTA0ICYmIG9m
ZnNldC5tX3ZhbHVlID49IC01MTIpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cDw2ND4o
c3JjMSwgc3JjMiwgZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHN0b3JlNjQoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92
YWx1ZSkpOworICAgICAgICBzdG9yZTY0KHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFs
dWUgKyA4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZVBhaXI2NFdpdGhOb25UZW1wb3JhbEFj
Y2VzcyhSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTg0MSw3ICsxOTEwLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3RvcmVQYWly
NjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnN0bnA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAtNTEy
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBv
ZmZzZXQubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
c3RvcmU2NChzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0
b3JlNjQoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTg1MSw3ICsxOTI1LDEyIEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
IAogICAgIHZvaWQgc3RvcmVQYWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsK
KyAgICAgICAgaWYgKG9mZnNldC5tX3ZhbHVlIDw9IDUwNCAmJiBvZmZzZXQubV92YWx1ZSA+PSAt
NTEyKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3Qs
IG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzdG9yZURvdWJsZShzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAg
ICAgIHN0b3JlRG91YmxlKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUgKyA4KSk7
CiAgICAgfQogCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggZWY4Yzk5ZWY2M2FkMjZkNmIxYTdjYzRhYjcxNDU3
MDYxNGM4ZTk2OS4uYjk1MTliYzc1YTc1ODRhMWEzZTlkNThiNjM5NzYzNTkyMTU0MmMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKQEAgLTg2Nyw2ICs4NjcsMjQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgewor
ICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOwor
ICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAg
ICAgIC8vIEZJWE1FOiBsZHJkIGNhbiBiZSB1c2VkIGlmIGRlc3QxIGFuZCBkZXN0MiBhcmUgY29u
c2VjdXRpdmUgcGFpciBvZiByZWdpc3RlcnMuCisgICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0
Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9u
LgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOwor
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0
Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsMzIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW0zMihhZGRy
ZXNzLm9mZnNldCksIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtOTY1LDYgKzk4MywxOCBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQg
c3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwg
c3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlUGFp
cjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QsIFRy
dXN0ZWRJbW0zMiBvZmZzZXQpCisgICAgeworICAgICAgICAvLyBGSVhNRTogc3RyZCBjYW4gYmUg
dXNlZCBpZiBzcmMxIGFuZCBzcmMyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4K
KyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDQpKTsK
KyAgICB9CisKICAgICAvLyBQb3NzaWJseSBjbG9iYmVycyBzcmMsIGJ1dCBub3Qgb24gdGhpcyBh
cmNoaXRlY3R1cmUuCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXgg
MzMzY2VlMDg2YTA0MGVmMWQ4ZTQzMDRlNmQ5MWE3MmRjNWY1N2VhYS4uMTQ0NWM3OTFiMjhjZWY1
ZGZjMTU2YzMxMjRjNmE0ZTIyMjFhYzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMjkzLDYgKzEyOTMsMjMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAg
eworICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIp
OworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZElt
bTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAg
YmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBk
ZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBE
YXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKQEAg
LTE1ODYsNiArMTYwMywxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3Qs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3Rl
cklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNl
dC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQu
bV92YWx1ZSArIDQpKTsKKyAgICB9CisKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25z
OgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCA1NGQ0NTY3ZDRjMWM0NWRmZTBjMzI4Y2E3YmNkYjg0ZTllYjJmOTc2Li40MzU2
ODg4OGZiZjA2NTA1Y2FmMTc5MDc2MTUzM2U3YTkyOTY0ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC0xMzAwLDYgKzEzMDAsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92c3dsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVz
dGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgemVyb0V4dGVuZDE2VG8zMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ends
X3JyKHNyYywgZGVzdCk7CkBAIC0xMzQ5LDYgKzEzNjYsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9pOG0oaW1tOC5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBk
ZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZElt
bTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBv
ZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVn
aXN0ZXJJRCBnZXRVbnVzZWRSZWdpc3RlcihCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXggJiYgYWRkcmVzcy5pbmRl
eCAhPSBYODZSZWdpc3RlcnM6OmVheCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKaW5kZXggMWNhNjk4M2ViNzBkOTY0MGJlNGZiMmYxMTBlMmY4ZTAxZjM4
ZjgzOC4uYTFjNzY3YjU5Y2JjOTQzYTAwYTMxZTMwNDk0Y2I0YzM1NGE2NWNhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTMyMzYsNiArMzIz
NiwyNDUgQEAgdm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTRmlsbDE2KCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NCkKIAordm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjMyKCkKK3sKKyAgICBjb25zdGV4cHIg
dWludDMyX3QgaW5pdGlhbFZhbHVlID0gMHg1NWFhYmI4MHU7CisgICAgY29uc3RleHByIHVpbnQz
Ml90IHZhbHVlMSA9IDQyOworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZTIgPSAweGNmYmIx
MzU3dTsKKworICAgIHVpbnQzMl90IGJ1ZmZlclsxMF07CisKKyAgICBhdXRvIGluaXRCdWZmZXIg
PSBbJl0geworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAg
ICAgICAgIGJ1ZmZlcltpXSA9IGluaXRpYWxWYWx1ZSArIGk7CisgICAgfTsKKworICAgIHN0cnVj
dCBQYWlyIHsKKyAgICAgICAgdWludDMyX3QgdmFsdWUxOworICAgICAgICB1aW50MzJfdCB2YWx1
ZTI7CisgICAgfTsKKworICAgIFBhaXIgcGFpcjsKKyAgICBhdXRvIGluaXRQYWlyID0gWyZdIHsK
KyAgICAgICAgcGFpciA9IHsgMCwgMCB9OworICAgIH07CisKKyAgICAvLyBUZXN0IGxvYWRQYWly
MzIuCisgICAgYXV0byB0ZXN0TG9hZFBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBv
ZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAg
ICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOworCisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdU
MywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIHNpemVvZih1aW50MzJfdCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAwKTsKKyAgICB9KTsKKworICAg
IGluaXRCdWZmZXIoKTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RM
b2FkUGFpcjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwg
aW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1
ZSArIDUpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNF0gPSB2YWx1ZTE7CisgICAg
YnVmZmVyWzVdID0gdmFsdWUyOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIwLCAmYnVm
ZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpck1p
bnVzMiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9h
ZFBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2
b2lkPih0ZXN0TG9hZFBhaXJNaW51czIsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19F
UShwYWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCAtIDIpOworICAgIENIRUNLX0VRKHBhaXIu
dmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1IC0gMik7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1
ZmZlcls0IC0gMl0gPSB2YWx1ZTI7CisgICAgYnVmZmVyWzUgLSAyXSA9IHZhbHVlMTsKKyAgICBp
bnZva2U8dm9pZD4odGVzdExvYWRQYWlyTWludXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IHZhbHVlMSk7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpclBsdXMzID0gY29tcGlsZShbJl0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpcihqaXQsIDMpOworICAgIH0p
OworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyUGx1czMs
ICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgaW5pdGlhbFZh
bHVlICsgNCArIDMpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1
ICsgMyk7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1ZmZlcls0ICsgM10gPSB2YWx1ZTE7Cisg
ICAgYnVmZmVyWzUgKyAzXSA9IHZhbHVlMjsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWly
UGx1czMsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFs
dWUxKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKKworICAgIC8vIFRlc3Qg
bG9hZFBhaXIzMiB1c2luZyBhIGJ1ZmZlciByZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAg
IGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmUz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAw
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQzMl90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24oaml0LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5n
QnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENI
RUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWly
LnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFpcjMyLgor
ICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNl
dCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgICAgICBq
aXQuc3RvcmVQYWlyMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9m
KHVuc2lnbmVkKSkpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyMCA9IGNvbXBp
bGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyKGppdCwg
MCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RT
dG9yZVBhaXIwLCB2YWx1ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRp
YWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19F
UShidWZmZXJbNF0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGlu
aXRpYWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsg
OSk7CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJNaW51czIgPSBjb21waWxlKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIC0yKTsKKyAgICB9KTsK
KworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFpck1pbnVz
MiwgdmFsdWUxLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwg
aW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUg
KyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzNdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsg
NCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVD
S19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3
XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFs
dWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisg
ICAgYXV0byB0ZXN0U3RvcmVQYWlyUGx1czMgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDMpOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyUGx1czMsIHZhbHVlMSwg
dmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1
ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAg
Q0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUgKyAyKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlh
bFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsK
KyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls3XSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIHZhbHVlMik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIC8vIFRlc3Qg
c3RvcmVQYWlyMzIgZnJvbSAxIHJlZ2lzdGVyLgorICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZl
ckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LnN0b3JlUGFpcjMyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25lZCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWcwID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGpp
dCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRl
c3RTdG9yZVBhaXJGcm9tT25lUmVnMCwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwg
aW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUg
KyAyKTsKKyAgICBDSEVDS19FUShidWZmZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls0XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIHZhbHVl
Mik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVD
S19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4
XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFs
dWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdNaW51czIgPSBjb21w
aWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tl
PHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyLCB2YWx1ZTEsICZidWZmZXJbNF0p
OworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tf
RVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0s
IHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCB2YWx1ZTEpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBp
bml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSAr
IDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFsdWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJb
OV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJl
Z1BsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RT
dG9yZVBhaXJGcm9tT25lUmVnKGppdCwgMyk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnUGx1czMsIHZhbHVlMiwg
JmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsK
KyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VR
KGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBp
bml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSAr
IDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNL
X0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7Cit9CisKICNpZiBDUFUoQVJNNjQpCiB2
b2lkIHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpCiB7CkBAIC0zMzI1LDYgKzM1NjQsMzIgQEAg
dm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKQogICAgIENIRUNLX0VRKHBhaXIudmFsdWUx
LCB2YWx1ZTEpOwogICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOwogCisgICAgLy8g
VGVzdCBsb2FkUGFpcjY0IHVzaW5nIGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24u
CisgICAgYXV0byB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGppdC5sb2FkUGFpcjY0KGJ1ZmZlckdQ
UiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKENQVVJlZ2lzdGVy
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBh
aXJHUFIsIDApKTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYWlyR1BSLCBzaXplb2YodWludDY0X3QpKSk7CisKKyAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAg
ICBhdXRvIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNv
bXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2lu
Z0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQ
YWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7
CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNL
X0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsKKwogICAgIC8vIFRlc3Qgc3RvcmVQ
YWlyNjQuCiAgICAgYXV0byB0ZXN0U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBp
bnQgb2Zmc2V0KSB7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CkBAIC00ODkx
LDYgKzUxNTYsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBGT1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTih0
ZXN0Q29tcGFyZURvdWJsZVNhbWVBcmcpOwogCiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlh
dGVzKCkpOworICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjMyKCkpOwogCiAjaWYgQ1BVKFg4Nl82
NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ1JlZygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggY2NhNzQ4MmM4OTA4ZTAwMTM5ZDMxNmU4MTc2YWQ3
YzJlZjVjOGFhZS4uNzBmODY0OWE5ZDFjMjhiNzlmZmEzOTA2MGUwOGRkYzZhMTAxMDU3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTI3OCw4ICsyNzgsMTAgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0IHsKICAgICAgICAgc3Ry
dWN0IFBhcmVuQ29udGV4dCogbmV4dDsKLSAgICAgICAgdWludDMyX3QgYmVnaW47Ci0gICAgICAg
IHVpbnQzMl90IG1hdGNoQW1vdW50OworICAgICAgICBzdHJ1Y3QgQmVnaW5BbmRNYXRjaEFtb3Vu
dCB7CisgICAgICAgICAgICB1aW50MzJfdCBiZWdpbjsKKyAgICAgICAgICAgIHVpbnQzMl90IG1h
dGNoQW1vdW50OworICAgICAgICB9IGJlZ2luQW5kTWF0Y2hBbW91bnQ7CiAgICAgICAgIHVpbnRw
dHJfdCByZXR1cm5BZGRyZXNzOwogICAgICAgICBzdHJ1Y3QgU3VicGF0dGVybnMgewogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQ7CkBAIC0yOTksMTIgKzMwMSwxMiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGJlZ2luT2Zmc2V0KCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW4pOworICAgICAg
ICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW5BbmRNYXRjaEFtb3VudCkg
KyBvZmZzZXRvZihCZWdpbkFuZE1hdGNoQW1vdW50LCBiZWdpbik7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IG1hdGNoQW1vdW50T2Zmc2V0KCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgbWF0Y2hBbW91bnQpOworICAg
ICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW5BbmRNYXRjaEFtb3Vu
dCkgKyBvZmZzZXRvZihCZWdpbkFuZE1hdGNoQW1vdW50LCBtYXRjaEFtb3VudCk7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHJldHVybkFkZHJlc3NPZmZzZXQoKQpAQCAt
Mzc0LDE3ICszNzYsMjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1vdmUoaGVhZFB0clJl
Z2lzdGVyLCBmcmVlbGlzdFJlZ2lzdGVyKTsKICAgICB9CiAKKworICAgIHZvaWQgc3RvcmVCZWdp
bkFuZE1hdGNoQW1vdW50VG9QYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVnaXN0
ZXJJRCBtYXRjaEFtb3VudEdQUiwgUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRHUFIpCisgICAgewor
ICAgICAgICBBU1NFUlQoUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNv
bnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpOworICAgICAgICBzdG9yZVBhaXIzMihiZWdpbkdQ
UiwgbWF0Y2hBbW91bnRHUFIsIHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZEltbTMyKFBhcmVuQ29u
dGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgIH0KKworICAgIHZvaWQgbG9hZEJlZ2luQW5kTWF0
Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5Db250ZXh0R1BSLCBSZWdp
c3RlcklEIGJlZ2luR1BSLCBSZWdpc3RlcklEIG1hdGNoQW1vdW50R1BSKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0
OjptYXRjaEFtb3VudE9mZnNldCgpKTsKKyAgICAgICAgbG9hZFBhaXIzMihwYXJlbkNvbnRleHRH
UFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpLCBiZWdpbkdQUiwg
bWF0Y2hBbW91bnRHUFIpOworICAgIH0KKwogICAgIHZvaWQgc2F2ZVBhcmVuQ29udGV4dChSZWdp
c3RlcklEIHBhcmVuQ29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1wUmVnLCB1bnNpZ25lZCBmaXJz
dFN1YnBhdHRlcm4sIHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBzdWJwYXR0ZXJu
QmFzZUZyYW1lTG9jYXRpb24pCiAgICAgewotICAgICAgICBzdG9yZTMyKGluZGV4LCBBZGRyZXNz
KHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpKSk7CiAgICAgICAg
IGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCksIHRlbXBSZWcpOwotICAgICAgICBzdG9y
ZTMyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNo
QW1vdW50T2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVCZWdpbkFuZE1hdGNoQW1vdW50VG9QYXJl
bkNvbnRleHQoaW5kZXgsIHRlbXBSZWcsIHBhcmVuQ29udGV4dFJlZyk7CiAgICAgICAgIGxvYWRG
cm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSwgdGVtcFJlZyk7CiAgICAgICAgIHN0b3JlUHRy
KHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnJldHVybkFk
ZHJlc3NPZmZzZXQoKSkpOwogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxl
TW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1
YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47
IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhvdXRwdXQs
IChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSksIHRlbXBSZWcpOwotICAgICAg
ICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJl
bkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKKyAgICAgICAgICAgICAg
ICBsb2FkNjQoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2ln
bmVkKSksIHRlbXBSZWcpOworICAgICAgICAgICAgICAgIHN0b3JlNjQodGVtcFJlZywgQWRkcmVz
cyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0
ZXJuKSkpOwogICAgICAgICAgICAgICAgIGNsZWFyU3VicGF0dGVyblN0YXJ0KHN1YnBhdHRlcm4p
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zOTcsMTYgKzQxMSwxNSBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKIAogICAgIHZvaWQgcmVzdG9yZVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVu
Q29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1wUmVnLCB1bnNpZ25lZCBmaXJzdFN1YnBhdHRlcm4s
IHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9j
YXRpb24pCiAgICAgewotICAgICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBh
cmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGluZGV4KTsKKyAgICAgICAgbG9hZEJlZ2luQW5k
TWF0Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0KHBhcmVuQ29udGV4dFJlZywgaW5kZXgsIHRlbXBS
ZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUoaW5kZXgsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2Nh
dGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6YmVnaW5JbmRleCgpKTsKLSAgICAgICAg
bG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50
T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBh
dHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hB
bW91bnRJbmRleCgpKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywg
UGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAg
c3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0luZGV4KCkpOwogICAgICAgICBpZiAo
bV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1
YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0
dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRlbXBSZWcpOwotICAgICAgICAgICAgICAgIHN0b3Jl
UHRyKHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1
bnNpZ25lZCkpKTsKKyAgICAgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhwYXJlbkNvbnRleHRS
ZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRlbXBSZWcp
OworICAgICAgICAgICAgICAgIHN0b3JlNjQodGVtcFJlZywgQWRkcmVzcyhvdXRwdXQsIChzdWJw
YXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKQEAgLTEyNzUsOCArMTI4OCw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICBKdW1wTGlzdCBtYXRjaGVzOwogCiAgICAgICAgIGlmICh0ZXJt
LT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeSkgewotICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGlu
dCkpLCBwYXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAo
KHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7Cisg
ICAgICAgICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5J
bmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBlbXB0eSBtYXRjaCBpcyBz
dWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAgICAgICAgICAgIGlmICh0
ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS0+
cXVhbnRpdHlNYXhDb3VudCAhPSAxKSB7CkBAIC0xMzA3LDggKzEzMTksNyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIGNoYXJhY3Rlck9y
VGVtcCk7CiAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFy
ZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNo
QW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJhbmNoMzIo
RXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQpLCBjaGFyYWN0ZXJPclRlbXApKTsK
LSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwg
MSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkp
LCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwg
c3VicGF0dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKICAgICAgICAgICAgICAg
ICBqdW1wKG91dGVyTG9vcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXRjaGVzLmxp
bmsodGhpcyk7CkBAIC0xMzMxLDggKzEzNDIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShjaGFyYWN0ZXJPclRlbXAsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAg
ICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkK
ICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgSW1tMzIodGVy
bS0+cXVhbnRpdHlNYXhDb3VudCksIGNoYXJhY3Rlck9yVGVtcCkpOwotICAgICAgICAgICAgbG9h
ZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBw
YXR0ZXJuSW5kZXgpOwotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBh
dHRlcm5JZCA8PCAxKSArIDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAg
ICAgICBsb2FkU3ViUGF0dGVybnMob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5JbmRleCwg
cGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBTdG9yZSBjdXJyZW50IGluZGV4IGluIGZy
YW1lIGZvciByZXN0b3JpbmcgYWZ0ZXIgYSBwYXJ0aWFsIG1hdGNoCiAgICAgICAgICAgICBzdG9y
ZVRvRnJhbWUoaW5kZXgsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9C
YWNrUmVmZXJlbmNlOjpiZWdpbkluZGV4KCkpOwpAQCAtMTM1Myw4ICsxMzYzLDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7CiAKLSAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVv
ZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1
dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVyblRlbXAp
OworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm5zKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0
ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2gg
aXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBK
dW1wIHplcm9MZW5ndGhNYXRjaCA9IGJyYW5jaDMyKEVxdWFsLCBUcnVzdGVkSW1tMzIoLTEpLCBw
YXR0ZXJuSW5kZXgpOwpAQCAtMTQwOCw4ICsxNDE3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFj
a0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCksIG1hdGNoQW1vdW50KTsKICAg
ICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgbWF0Y2hBbW91bnQp
KTsKIAotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8
IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuU3RhcnRJbmRleCk7Ci0gICAgICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50
KSksIHBhdHRlcm5FbmRJbmRleE9yTGVuKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJucyhv
dXRwdXQsIHN1YnBhdHRlcm5JZCwgcGF0dGVyblN0YXJ0SW5kZXgsIHBhdHRlcm5FbmRJbmRleE9y
TGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5TdGFydEluZGV4LCBwYXR0ZXJuRW5kSW5k
ZXhPckxlbik7CiAgICAgICAgICAgICBzdWIzMihwYXR0ZXJuRW5kSW5kZXhPckxlbiwgaW5kZXgp
OwogCkBAIC0yNDQ4LDExICsyNDU2LDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgICAgICBpZiAocHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1YjMyKEltbTMyKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUp
LCByZXR1cm5SZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2NvbXBpbGVNb2Rl
ID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZTMyKHJldHVyblJlZ2lzdGVyLCBvdXRwdXQpOwotICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVQYWlyMzIocmV0dXJuUmVnaXN0
ZXIsIGluZGV4LCBvdXRwdXQsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgZ2V0TWF0Y2hTdGFydChyZXR1cm5SZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6Oklu
Y2x1ZGVTdWJwYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRk
cmVzcyhvdXRwdXQsIDQpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29tcGlsZU1vZGUg
PT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0cHV0LCA0KSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJldHVyblJlZ2lzdGVyMik7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZVJldHVybigpOwpAQCAtNDA1MCw2ICs0MDU5LDExIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBsb2FkU3ViUGF0dGVybnMo
UmVnaXN0ZXJJRCBvdXRwdXRHUFIsIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCwgUmVnaXN0ZXJJRCBz
dGFydEluZGV4R1BSLCBSZWdpc3RlcklEIGVuZEluZGV4T3JMZW5HUFIpCisgICAgeworICAgICAg
ICBsb2FkUGFpcjMyKG91dHB1dEdQUiwgVHJ1c3RlZEltbTMyKChzdWJwYXR0ZXJuSWQgPDwgMSkg
KiBzaXplb2YoaW50KSksIHN0YXJ0SW5kZXhHUFIsIGVuZEluZGV4T3JMZW5HUFIpOworICAgIH0K
KwogcHVibGljOgogICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0dGVy
biwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENoYXJT
aXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZSkKICAgICAgICAgOiBtX3Zt
KHZtKQpAQCAtNDE0OCwxNCArNDE2MiwyMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKG1hdGNoTGltaXQpLCByZW1haW5pbmdNYXRjaENvdW50KTsKICNl
bmRpZgogCisgICAgICAgIC8vIEluaXRpYWxpemUgc3VicGF0dGVybnMnIHN0YXJ0cy4gQW5kIGlu
aXRpYWxpemUgbWF0Y2hTdGFydCBpZiBgIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXpl
YC4KKyAgICAgICAgLy8gSWYgdGhlIG1vZGUgaXMgSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJw
YXR0ZXJucywgdGhlbiBtYXRjaFN0YXJ0IGlzIHN1YnBhdHRlcm5zWzBdJ3Mgc3RhcnQuCiAgICAg
ICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVy
bnMpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhdHRlcm4ubV9u
dW1TdWJwYXR0ZXJucyArIDE7ICsraSkKLSAgICAgICAgICAgICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8PCAxKSAqIHNpemVvZihpbnQpKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSAwOworICAgICAgICAgICAgLy8gRmlyc3Qg
c3VicGF0dGVybklkJ3Mgc3RhcnQgaXMgY29uZmlndXJlZCB0byBgaW5kZXhgIGlmICFtX3BhdHRl
cm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6ZS4KKyAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1f
Ym9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICArK3N1YnBhdHRlcm5JZDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAoOyBzdWJwYXR0ZXJuSWQgPCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJu
cyArIDE7ICsrc3VicGF0dGVybklkKQorICAgICAgICAgICAgICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKC0xKSwgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50
KSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5
LT5tX2hhc0ZpeGVkU2l6ZSkKKyAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNp
emUpCi0gICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKLQogI2lmIEVOQUJMRShZQVJS
X0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICBpZiAobV9jb250YWluc05lc3Rl
ZFN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBpbml0UGFyZW5Db250ZXh0RnJlZUxpc3QoKTsK
</data>
<flag name="review"
          id="457311"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434794</attachid>
            <date>2021-08-02 15:19:47 -0700</date>
            <delta_ts>2021-08-02 19:48:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228687-20210802151946.patch</filename>
            <type>text/plain</type>
            <size>37345</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTE1OTBmZTZjMWNkYTlhYWM1YTBmN2U3ODM3ZWYwMDMxZTkxZTllLi4zMjNlYTljOGQ1MzkwMzFk
NGQ5ZDA1MDFlM2YwYWVmMTIxMjQ0ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBsb2FkUGFpciAvIHN0b3JlUGFpciBpbiBZYXJySklUCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2ODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBVc2UgbG9hZFBhaXIgLyBz
dG9yZVBhaXIgaWYgcG9zc2libGUgaW4gWWFyckpJVC4gQ3VycmVudGx5LCB3ZSBhcmUgbm90Cisg
ICAgICAgIGRlcGxveWluZyBTcG9vbGVyIGluIFlhcnJKSVQsIGJ1dCB3ZSBzaG91bGQgZG8gdGhh
dCBpbiB0aGUgZnV0dXJlIHRvby4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBhbHNvIGFk
ZCBhcHByb3ByaWF0ZSBmYWxsYmFjayBjb2RlIGluIGxvYWRQYWlyIC8gc3RvcmVQYWlyOgorICAg
ICAgICB0aGUgb2Zmc2V0IG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc21hbGwgZW5vdWdoIHNvIHRo
YXQgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIG92ZXJmbG93aW5nIGNhc2UuIElmIGl0IG92
ZXJmbG93cywgd2UgdXNlIHR3byBsb2FkcyBvciBzdG9yZXMuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhbHNvIGFkZHMgbG9hZFBhaXIzMiBhbmQgc3RvcmVQYWlyMzIgdG8gYWxsIG1hY3JvIGFzc2Vt
YmxlciBzbyB0aGF0CisgICAgICAgIHdlIGNhbiBjYWxsIGl0IHdpdGhvdXQgQ1BVKEFSTTY0KS4g
SW50ZXJuYWxseSwgdHdvIGxvYWRzIG9yIHN0b3JlcyBhcmUgY29tYmluZWQuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0Ojpsb2FkUGFpcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZFBhaXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpzdG9yZVBhaXIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlUGFpcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3Rv
cmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Omxv
YWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZVBhaXIz
Mik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN0b3JlUGFpcjMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OmxvYWRQYWlyMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c3RvcmVQYWlyMzIpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAg
IChKU0M6OnRlc3RMb2FkU3RvcmVQYWlyMzIpOgorICAgICAgICAoSlNDOjp0ZXN0TG9hZFN0b3Jl
UGFpcjY0SW50NjQpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisKIDIwMjEtMDgtMDIg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBZYXJy
IHNob3VsZCB1c2UgQml0bWFwIGluc3RlYWQgb2YgQnl0ZVZlY3RvciBmb3IgQm95ZXJNb29yZSBz
ZWFyY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggZTZiZmJlYzYwMDFjMTBjNjFlOWYyNjZlZmYyN2FkNmYxMGU4
OWY4Zi4uNGE3NGYzZTk0YjNkNmJhYzM3NjhiMmJhMDM2MmNlZDcwY2IwNzMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKQEAgLTE0NzMsNiArMTQ3MywyNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBs
YWJlbDsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICBsb2FkUGFpcjMy
KHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIpOworICAgIH0KKworICAgIHZvaWQg
bG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIG9mZnNldCwgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIEFTU0VSVChkZXN0MSAh
PSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAgYmVjb21lcyBpbGxlZ2FsIGluc3Ry
dWN0aW9uLgorICAgICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmlzVmFsaWRMRFBJbW08MzI+KG9m
ZnNldC5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRwPDMyPihkZXN0MSwg
ZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgbG9hZFBhaXI2NChSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAg
IGxvYWRQYWlyNjQoc3JjLCBUcnVzdGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CkBAIC0xNDgw
LDcgKzE1MDEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0KFJlZ2lz
dGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3Rl
cklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRwPDY0PihkZXN0MSwgZGVz
dDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAgICBBU1NFUlQoZGVzdDEgIT0gZGVzdDIp
OyAvLyBJZiBpdCBpcyB0aGUgc2FtZSwgbGRwIGJlY29tZXMgaWxsZWdhbCBpbnN0cnVjdGlvbi4K
KyAgICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkTERQSW1tPDY0PihvZmZzZXQubV92
YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBz
cmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoc3JjID09IGRlc3QxKSB7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNz
KHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAg
ICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSArIDgpLCBkZXN0Mik7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxvYWRQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nl
c3MoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCkBA
IC0xNDkwLDcgKzE1MjIsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkUGFpcjY0
V2l0aE5vblRlbXBvcmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0
LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubGRucDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAg
ICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBi
ZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6
aXNWYWxpZExEUEltbTw2ND4ob2Zmc2V0Lm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5sZG5wPDY0PihkZXN0MSwgZGVzdDIsIHNyYywgb2Zmc2V0Lm1fdmFsdWUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAg
ICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIp
OworICAgICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3Qx
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHNyYywgb2Zm
c2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhzcmMsIG9m
ZnNldC5tX3ZhbHVlICsgOCksIGRlc3QyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQg
bG9hZFBhaXI2NChSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QxLCBGUFJlZ2lzdGVy
SUQgZGVzdDIpCkBAIC0xNTAwLDcgKzE1NDMsMTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02
NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9p
ZCBsb2FkUGFpcjY0KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBGUFJlZ2lz
dGVySUQgZGVzdDEsIEZQUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAg
QVNTRVJUKGRlc3QxICE9IGRlc3QyKTsgLy8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVz
IGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6aXNWYWxp
ZExEUEZQSW1tPDY0PihvZmZzZXQubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcDw2ND4oZGVzdDEsIGRlc3QyLCBzcmMsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2FkRG91YmxlKEFkZHJlc3Moc3JjLCBvZmZz
ZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgbG9hZERvdWJsZShBZGRyZXNzKHNyYywgb2Zm
c2V0Lm1fdmFsdWUgKyA4KSwgZGVzdDIpOwogICAgIH0KIAogICAgIHZvaWQgYWJvcnRXaXRoUmVh
c29uKEFib3J0UmVhc29uIHJlYXNvbikKQEAgLTE4MjQsNiArMTg3MywyMSBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMy
KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkp
OworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3Rl
cklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZEltbTMyIG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEltbTwzMj4ob2Zmc2V0Lm1fdmFs
dWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8MzI+KHNyYzEsIHNyYzIsIGRlc3Qs
IG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzdG9yZTMyKHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAgICAg
c3RvcmUzMihzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgNCkpOworICAgIH0K
KwogICAgIHZvaWQgc3RvcmVQYWlyNjQoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjY0KHNyYzEsIHNyYzIs
IGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CkBAIC0xODMxLDcgKzE4OTUsMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogCiAgICAgdm9pZCBzdG9yZVBhaXI2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQg
c3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIgb2Zmc2V0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7
CisgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEltbTw2ND4ob2Zmc2V0Lm1f
dmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRl
c3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBzdG9yZTY0KHNyYzEsIEFkZHJlc3MoZGVzdCwgb2Zmc2V0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgc3RvcmU2NChzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAg
IH0KIAogICAgIHZvaWQgc3RvcmVQYWlyNjRXaXRoTm9uVGVtcG9yYWxBY2Nlc3MoUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4NDEsNyArMTkx
MCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlUGFpcjY0V2l0aE5vblRlbXBv
cmFsQWNjZXNzKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdG5w
PDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1ZSk7CisgICAgICAgIGlmIChBUk02
NEFzc2VtYmxlcjo6aXNWYWxpZFNUUEltbTw2ND4ob2Zmc2V0Lm1fdmFsdWUpKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdG5wPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQubV92YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmU2NChzcmMx
LCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlNjQoc3JjMiwg
QWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDgpKTsKICAgICB9CiAKICAgICB2b2lkIHN0
b3JlUGFpcjY0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtMTg1MSw3ICsxOTI1LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQg
OiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQg
c3RvcmVQYWlyNjQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QsIFRydXN0ZWRJbW0zMiBvZmZzZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5zdHA8NjQ+KHNyYzEsIHNyYzIsIGRlc3QsIG9mZnNldC5tX3ZhbHVlKTsKKyAgICAgICAgaWYg
KEFSTTY0QXNzZW1ibGVyOjppc1ZhbGlkU1RQRlBJbW08NjQ+KG9mZnNldC5tX3ZhbHVlKSkgewor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RwPDY0PihzcmMxLCBzcmMyLCBkZXN0LCBvZmZzZXQu
bV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RvcmVE
b3VibGUoc3JjMSwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9y
ZURvdWJsZShzcmMyLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlICsgOCkpOwogICAgIH0K
IAogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCmluZGV4IGVmOGM5OWVmNjNhZDI2ZDZiMWE3Y2M0YWI3MTQ1NzA2MTRjOGU5
NjkuLmRmODgzODZhODMyM2Q4NjkxMmNmZTUzNTMxZTNhODJkZmI0NGViOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CkBAIC04NjcsNiArODY3LDI0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7CiAgICAgfQogCisgICAgdm9pZCBsb2FkUGFpcjMyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAg
bG9hZFBhaXIzMihzcmMsIFRydXN0ZWRJbW0zMigwKSwgZGVzdDEsIGRlc3QyKTsKKyAgICB9CisK
KyAgICB2b2lkIGxvYWRQYWlyMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBvZmZzZXQs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogbGRyZC9sZG0gY2FuIGJlIHVzZWQgaWYgZGVzdDEgYW5kIGRlc3QyIGFyZSBjb25zZWN1
dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBEYXRhTGFiZWwzMiBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC05NjUsNiArOTgzLDE4IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9
CiAKKyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMy
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMy
LCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIo
UmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3Rl
ZEltbTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBzdHJkL3N0bSBjYW4gYmUg
dXNlZCBpZiBzcmMxIGFuZCBzcmMyIGFyZSBjb25zZWN1dGl2ZSBwYWlyIG9mIHJlZ2lzdGVycy4K
KyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNldC5tX3ZhbHVlKSk7Cisg
ICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQubV92YWx1ZSArIDQpKTsK
KyAgICB9CisKICAgICAvLyBQb3NzaWJseSBjbG9iYmVycyBzcmMsIGJ1dCBub3Qgb24gdGhpcyBh
cmNoaXRlY3R1cmUuCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXgg
MzMzY2VlMDg2YTA0MGVmMWQ4ZTQzMDRlNmQ5MWE3MmRjNWY1N2VhYS4uMTQ0NWM3OTFiMjhjZWY1
ZGZjMTU2YzMxMjRjNmE0ZTIyMjFhYzFhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMjkzLDYgKzEyOTMsMjMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGxvYWRQYWlyMzIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCisgICAg
eworICAgICAgICBsb2FkUGFpcjMyKHNyYywgVHJ1c3RlZEltbTMyKDApLCBkZXN0MSwgZGVzdDIp
OworICAgIH0KKworICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZElt
bTMyIG9mZnNldCwgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChkZXN0MSAhPSBkZXN0Mik7IC8vIElmIGl0IGlzIHRoZSBzYW1lLCBsZHAg
YmVjb21lcyBpbGxlZ2FsIGluc3RydWN0aW9uLgorICAgICAgICBpZiAoc3JjID09IGRlc3QxKSB7
CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRl
c3QyKTsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBk
ZXN0MSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMs
IG9mZnNldC5tX3ZhbHVlKSwgZGVzdDEpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Moc3Jj
LCBvZmZzZXQubV92YWx1ZSArIDQpLCBkZXN0Mik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBE
YXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKQEAg
LTE1ODYsNiArMTYwMywxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN0b3JlUGFpcjMyKHNyYzEsIHNyYzIsIGRlc3Qs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3Rl
cklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0LCBUcnVzdGVkSW1tMzIg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgc3RvcmUzMihzcmMxLCBBZGRyZXNzKGRlc3QsIG9mZnNl
dC5tX3ZhbHVlKSk7CisgICAgICAgIHN0b3JlMzIoc3JjMiwgQWRkcmVzcyhkZXN0LCBvZmZzZXQu
bV92YWx1ZSArIDQpKTsKKyAgICB9CisKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25z
OgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCA1NGQ0NTY3ZDRjMWM0NWRmZTBjMzI4Y2E3YmNkYjg0ZTllYjJmOTc2Li40MzU2
ODg4OGZiZjA2NTA1Y2FmMTc5MDc2MTUzM2U3YTkyOTY0ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC0xMzAwLDYgKzEzMDAsMjMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92c3dsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAg
IH0KIAorICAgIHZvaWQgbG9hZFBhaXIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
MSwgUmVnaXN0ZXJJRCBkZXN0MikKKyAgICB7CisgICAgICAgIGxvYWRQYWlyMzIoc3JjLCBUcnVz
dGVkSW1tMzIoMCksIGRlc3QxLCBkZXN0Mik7CisgICAgfQorCisgICAgdm9pZCBsb2FkUGFpcjMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgb2Zmc2V0LCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3QxICE9IGRlc3QyKTsg
Ly8gSWYgaXQgaXMgdGhlIHNhbWUsIGxkcCBiZWNvbWVzIGlsbGVnYWwgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgIGlmIChzcmMgPT0gZGVzdDEpIHsKKyAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHNy
Yywgb2Zmc2V0Lm1fdmFsdWUgKyA0KSwgZGVzdDIpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJl
c3Moc3JjLCBvZmZzZXQubV92YWx1ZSksIGRlc3QxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHNyYywgb2Zmc2V0Lm1fdmFsdWUpLCBkZXN0MSk7CisgICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhzcmMsIG9mZnNldC5tX3ZhbHVlICsgNCksIGRlc3QyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgemVyb0V4dGVuZDE2VG8zMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ends
X3JyKHNyYywgZGVzdCk7CkBAIC0xMzQ5LDYgKzEzNjYsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9pOG0oaW1tOC5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAK
KyAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBk
ZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVn
aXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCwgVHJ1c3RlZElt
bTMyIG9mZnNldCkKKyAgICB7CisgICAgICAgIHN0b3JlMzIoc3JjMSwgQWRkcmVzcyhkZXN0LCBv
ZmZzZXQubV92YWx1ZSkpOworICAgICAgICBzdG9yZTMyKHNyYzIsIEFkZHJlc3MoZGVzdCwgb2Zm
c2V0Lm1fdmFsdWUgKyA0KSk7CisgICAgfQorCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVn
aXN0ZXJJRCBnZXRVbnVzZWRSZWdpc3RlcihCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXggJiYgYWRkcmVzcy5pbmRl
eCAhPSBYODZSZWdpc3RlcnM6OmVheCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKaW5kZXggMWNhNjk4M2ViNzBkOTY0MGJlNGZiMmYxMTBlMmY4ZTAxZjM4
ZjgzOC4uYTFjNzY3YjU5Y2JjOTQzYTAwYTMxZTMwNDk0Y2I0YzM1NGE2NWNhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTMyMzYsNiArMzIz
NiwyNDUgQEAgdm9pZCB0ZXN0QXRvbWljU3Ryb25nQ0FTRmlsbDE2KCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NCkKIAordm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjMyKCkKK3sKKyAgICBjb25zdGV4cHIg
dWludDMyX3QgaW5pdGlhbFZhbHVlID0gMHg1NWFhYmI4MHU7CisgICAgY29uc3RleHByIHVpbnQz
Ml90IHZhbHVlMSA9IDQyOworICAgIGNvbnN0ZXhwciB1aW50MzJfdCB2YWx1ZTIgPSAweGNmYmIx
MzU3dTsKKworICAgIHVpbnQzMl90IGJ1ZmZlclsxMF07CisKKyAgICBhdXRvIGluaXRCdWZmZXIg
PSBbJl0geworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAg
ICAgICAgIGJ1ZmZlcltpXSA9IGluaXRpYWxWYWx1ZSArIGk7CisgICAgfTsKKworICAgIHN0cnVj
dCBQYWlyIHsKKyAgICAgICAgdWludDMyX3QgdmFsdWUxOworICAgICAgICB1aW50MzJfdCB2YWx1
ZTI7CisgICAgfTsKKworICAgIFBhaXIgcGFpcjsKKyAgICBhdXRvIGluaXRQYWlyID0gWyZdIHsK
KyAgICAgICAgcGFpciA9IHsgMCwgMCB9OworICAgIH07CisKKyAgICAvLyBUZXN0IGxvYWRQYWly
MzIuCisgICAgYXV0byB0ZXN0TG9hZFBhaXIgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBv
ZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAg
ICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDMpOworCisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFpckdQUiwgMCkpOworICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdU
MywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhaXJHUFIsIHNpemVvZih1aW50MzJfdCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdExvYWRQYWlyMCA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXIoaml0LCAwKTsKKyAgICB9KTsKKworICAg
IGluaXRCdWZmZXIoKTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RM
b2FkUGFpcjAsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwg
aW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIsIGluaXRpYWxWYWx1
ZSArIDUpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBidWZmZXJbNF0gPSB2YWx1ZTE7CisgICAg
YnVmZmVyWzVdID0gdmFsdWUyOworICAgIGludm9rZTx2b2lkPih0ZXN0TG9hZFBhaXIwLCAmYnVm
ZmVyWzRdLCAmcGFpcik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMSk7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTIsIHZhbHVlMik7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpck1p
bnVzMiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9h
ZFBhaXIoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0UGFpcigpOworICAgIGludm9rZTx2
b2lkPih0ZXN0TG9hZFBhaXJNaW51czIsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19F
UShwYWlyLnZhbHVlMSwgaW5pdGlhbFZhbHVlICsgNCAtIDIpOworICAgIENIRUNLX0VRKHBhaXIu
dmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1IC0gMik7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1
ZmZlcls0IC0gMl0gPSB2YWx1ZTI7CisgICAgYnVmZmVyWzUgLSAyXSA9IHZhbHVlMTsKKyAgICBp
bnZva2U8dm9pZD4odGVzdExvYWRQYWlyTWludXMyLCAmYnVmZmVyWzRdLCAmcGFpcik7CisgICAg
Q0hFQ0tfRVEocGFpci52YWx1ZTEsIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTIs
IHZhbHVlMSk7CisKKyAgICBhdXRvIHRlc3RMb2FkUGFpclBsdXMzID0gY29tcGlsZShbJl0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RMb2FkUGFpcihqaXQsIDMpOworICAgIH0p
OworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWlyUGx1czMs
ICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgaW5pdGlhbFZh
bHVlICsgNCArIDMpOworICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1
ICsgMyk7CisKKyAgICBpbml0UGFpcigpOworICAgIGJ1ZmZlcls0ICsgM10gPSB2YWx1ZTE7Cisg
ICAgYnVmZmVyWzUgKyAzXSA9IHZhbHVlMjsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQYWly
UGx1czMsICZidWZmZXJbNF0sICZwYWlyKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMSwgdmFs
dWUxKTsKKyAgICBDSEVDS19FUShwYWlyLnZhbHVlMiwgdmFsdWUyKTsKKworICAgIC8vIFRlc3Qg
bG9hZFBhaXIzMiB1c2luZyBhIGJ1ZmZlciByZWdpc3RlciBhcyBhIGRlc3RpbmF0aW9uLgorICAg
IGF1dG8gdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24gPSBbXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZlckdQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwYWlyR1BSID0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxOworICAgICAgICBqaXQubG9hZFBhaXIzMihidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICBqaXQuc3RvcmUz
MihHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYWlyR1BSLCAw
KSk7CisgICAgICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocGFpckdQUiwgc2l6ZW9mKHVpbnQzMl90KSkpOworCisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0
ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbjAgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdExvYWRQYWlyVXNpbmdCdWZmZXJS
ZWdpc3RlckFzRGVzdGluYXRpb24oaml0LCAwKTsKKyAgICB9KTsKKworICAgIGluaXRCdWZmZXIo
KTsKKworICAgIGluaXRQYWlyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RMb2FkUGFpclVzaW5n
QnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCwgJmJ1ZmZlcls0XSwgJnBhaXIpOworICAgIENI
RUNLX0VRKHBhaXIudmFsdWUxLCBpbml0aWFsVmFsdWUgKyA0KTsKKyAgICBDSEVDS19FUShwYWly
LnZhbHVlMiwgaW5pdGlhbFZhbHVlICsgNSk7CisKKyAgICAvLyBUZXN0IHN0b3JlUGFpcjMyLgor
ICAgIGF1dG8gdGVzdFN0b3JlUGFpciA9IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNl
dCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgICAgICBq
aXQuc3RvcmVQYWlyMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIGJ1ZmZlckdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9m
KHVuc2lnbmVkKSkpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgIGppdC5yZXQoKTsKKyAgICB9OworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyMCA9IGNvbXBp
bGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0U3RvcmVQYWlyKGppdCwg
MCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRlc3RT
dG9yZVBhaXIwLCB2YWx1ZTEsIHZhbHVlMiwgJmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsKKyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRp
YWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VRKGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7
CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBpbml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19F
UShidWZmZXJbNF0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCB2YWx1ZTIpOwor
ICAgIENIRUNLX0VRKGJ1ZmZlcls2XSwgaW5pdGlhbFZhbHVlICsgNik7CisgICAgQ0hFQ0tfRVEo
YnVmZmVyWzddLCBpbml0aWFsVmFsdWUgKyA3KTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIGlu
aXRpYWxWYWx1ZSArIDgpOworICAgIENIRUNLX0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsg
OSk7CisKKyAgICBhdXRvIHRlc3RTdG9yZVBhaXJNaW51czIgPSBjb21waWxlKFsmXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIC0yKTsKKyAgICB9KTsK
KworICAgIGluaXRCdWZmZXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdFN0b3JlUGFpck1pbnVz
MiwgdmFsdWUxLCB2YWx1ZTIsICZidWZmZXJbNF0pOworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwg
aW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUg
KyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0sIHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVm
ZmVyWzNdLCB2YWx1ZTIpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsg
NCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVD
S19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3
XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFs
dWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJbOV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisg
ICAgYXV0byB0ZXN0U3RvcmVQYWlyUGx1czMgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpcihqaXQsIDMpOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworICAgIGludm9rZTx2b2lkPih0ZXN0U3RvcmVQYWlyUGx1czMsIHZhbHVlMSwg
dmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19FUShidWZmZXJbMF0sIGluaXRpYWxWYWx1
ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwgaW5pdGlhbFZhbHVlICsgMSk7CisgICAg
Q0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUgKyAyKTsKKyAgICBDSEVDS19FUShidWZm
ZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENIRUNLX0VRKGJ1ZmZlcls0XSwgaW5pdGlh
bFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBpbml0aWFsVmFsdWUgKyA1KTsK
KyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSArIDYpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls3XSwgdmFsdWUxKTsKKyAgICBDSEVDS19FUShidWZmZXJbOF0sIHZhbHVlMik7Cisg
ICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFsdWUgKyA5KTsKKworICAgIC8vIFRlc3Qg
c3RvcmVQYWlyMzIgZnJvbSAxIHJlZ2lzdGVyLgorICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcgPSBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGludCBvZmZzZXQpIHsKKyAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ1ZmZl
ckdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgaml0LnN0b3JlUGFpcjMyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBidWZmZXJHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCAqIHNpemVvZih1bnNpZ25lZCkpKTsKKwor
ICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQucmV0KCk7Cisg
ICAgfTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWcwID0gY29tcGlsZShbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnKGpp
dCwgMCk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tlPHZvaWQ+KHRl
c3RTdG9yZVBhaXJGcm9tT25lUmVnMCwgdmFsdWUyLCAmYnVmZmVyWzRdKTsKKyAgICBDSEVDS19F
UShidWZmZXJbMF0sIGluaXRpYWxWYWx1ZSArIDApOworICAgIENIRUNLX0VRKGJ1ZmZlclsxXSwg
aW5pdGlhbFZhbHVlICsgMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzJdLCBpbml0aWFsVmFsdWUg
KyAyKTsKKyAgICBDSEVDS19FUShidWZmZXJbM10sIGluaXRpYWxWYWx1ZSArIDMpOworICAgIENI
RUNLX0VRKGJ1ZmZlcls0XSwgdmFsdWUyKTsKKyAgICBDSEVDS19FUShidWZmZXJbNV0sIHZhbHVl
Mik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVD
S19FUShidWZmZXJbN10sIGluaXRpYWxWYWx1ZSArIDcpOworICAgIENIRUNLX0VRKGJ1ZmZlcls4
XSwgaW5pdGlhbFZhbHVlICsgOCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzldLCBpbml0aWFsVmFs
dWUgKyA5KTsKKworICAgIGF1dG8gdGVzdFN0b3JlUGFpckZyb21PbmVSZWdNaW51czIgPSBjb21w
aWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgdGVzdFN0b3JlUGFpckZyb21P
bmVSZWcoaml0LCAtMik7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7CisgICAgaW52b2tl
PHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnTWludXMyLCB2YWx1ZTEsICZidWZmZXJbNF0p
OworICAgIENIRUNLX0VRKGJ1ZmZlclswXSwgaW5pdGlhbFZhbHVlICsgMCk7CisgICAgQ0hFQ0tf
RVEoYnVmZmVyWzFdLCBpbml0aWFsVmFsdWUgKyAxKTsKKyAgICBDSEVDS19FUShidWZmZXJbMl0s
IHZhbHVlMSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCB2YWx1ZTEpOworICAgIENIRUNLX0VR
KGJ1ZmZlcls0XSwgaW5pdGlhbFZhbHVlICsgNCk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzVdLCBp
bml0aWFsVmFsdWUgKyA1KTsKKyAgICBDSEVDS19FUShidWZmZXJbNl0sIGluaXRpYWxWYWx1ZSAr
IDYpOworICAgIENIRUNLX0VRKGJ1ZmZlcls3XSwgaW5pdGlhbFZhbHVlICsgNyk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzhdLCBpbml0aWFsVmFsdWUgKyA4KTsKKyAgICBDSEVDS19FUShidWZmZXJb
OV0sIGluaXRpYWxWYWx1ZSArIDkpOworCisgICAgYXV0byB0ZXN0U3RvcmVQYWlyRnJvbU9uZVJl
Z1BsdXMzID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIHRlc3RT
dG9yZVBhaXJGcm9tT25lUmVnKGppdCwgMyk7CisgICAgfSk7CisKKyAgICBpbml0QnVmZmVyKCk7
CisgICAgaW52b2tlPHZvaWQ+KHRlc3RTdG9yZVBhaXJGcm9tT25lUmVnUGx1czMsIHZhbHVlMiwg
JmJ1ZmZlcls0XSk7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzBdLCBpbml0aWFsVmFsdWUgKyAwKTsK
KyAgICBDSEVDS19FUShidWZmZXJbMV0sIGluaXRpYWxWYWx1ZSArIDEpOworICAgIENIRUNLX0VR
KGJ1ZmZlclsyXSwgaW5pdGlhbFZhbHVlICsgMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzNdLCBp
bml0aWFsVmFsdWUgKyAzKTsKKyAgICBDSEVDS19FUShidWZmZXJbNF0sIGluaXRpYWxWYWx1ZSAr
IDQpOworICAgIENIRUNLX0VRKGJ1ZmZlcls1XSwgaW5pdGlhbFZhbHVlICsgNSk7CisgICAgQ0hF
Q0tfRVEoYnVmZmVyWzZdLCBpbml0aWFsVmFsdWUgKyA2KTsKKyAgICBDSEVDS19FUShidWZmZXJb
N10sIHZhbHVlMik7CisgICAgQ0hFQ0tfRVEoYnVmZmVyWzhdLCB2YWx1ZTIpOworICAgIENIRUNL
X0VRKGJ1ZmZlcls5XSwgaW5pdGlhbFZhbHVlICsgOSk7Cit9CisKICNpZiBDUFUoQVJNNjQpCiB2
b2lkIHRlc3RMb2FkU3RvcmVQYWlyNjRJbnQ2NCgpCiB7CkBAIC0zMzI1LDYgKzM1NjQsMzIgQEAg
dm9pZCB0ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKQogICAgIENIRUNLX0VRKHBhaXIudmFsdWUx
LCB2YWx1ZTEpOwogICAgIENIRUNLX0VRKHBhaXIudmFsdWUyLCB2YWx1ZTIpOwogCisgICAgLy8g
VGVzdCBsb2FkUGFpcjY0IHVzaW5nIGEgYnVmZmVyIHJlZ2lzdGVyIGFzIGEgZGVzdGluYXRpb24u
CisgICAgYXV0byB0ZXN0TG9hZFBhaXJVc2luZ0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbiA9
IFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgaW50IG9mZnNldCkgeworICAgICAgICBlbWl0RnVuY3Rp
b25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnVmZmVyR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBhaXJHUFIg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIGppdC5sb2FkUGFpcjY0KGJ1ZmZlckdQ
UiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0ICogc2l6ZW9mKENQVVJlZ2lzdGVy
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBh
aXJHUFIsIDApKTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYWlyR1BSLCBzaXplb2YodWludDY0X3QpKSk7CisKKyAgICAgICAgZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH07CisKKyAg
ICBhdXRvIHRlc3RMb2FkUGFpclVzaW5nQnVmZmVyUmVnaXN0ZXJBc0Rlc3RpbmF0aW9uMCA9IGNv
bXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICB0ZXN0TG9hZFBhaXJVc2lu
Z0J1ZmZlclJlZ2lzdGVyQXNEZXN0aW5hdGlvbihqaXQsIDApOworICAgIH0pOworCisgICAgaW5p
dEJ1ZmZlcigpOworCisgICAgaW5pdFBhaXIoKTsKKyAgICBpbnZva2U8dm9pZD4odGVzdExvYWRQ
YWlyVXNpbmdCdWZmZXJSZWdpc3RlckFzRGVzdGluYXRpb24wLCAmYnVmZmVyWzRdLCAmcGFpcik7
CisgICAgQ0hFQ0tfRVEocGFpci52YWx1ZTEsIGluaXRpYWxWYWx1ZSArIDQpOworICAgIENIRUNL
X0VRKHBhaXIudmFsdWUyLCBpbml0aWFsVmFsdWUgKyA1KTsKKwogICAgIC8vIFRlc3Qgc3RvcmVQ
YWlyNjQuCiAgICAgYXV0byB0ZXN0U3RvcmVQYWlyID0gW10gKENDYWxsSGVscGVycyYgaml0LCBp
bnQgb2Zmc2V0KSB7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CkBAIC00ODkx
LDYgKzUxNTYsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBGT1JfRUFDSF9ET1VCTEVfQ09ORElUSU9OX1JVTih0
ZXN0Q29tcGFyZURvdWJsZVNhbWVBcmcpOwogCiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlh
dGVzKCkpOworICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjMyKCkpOwogCiAjaWYgQ1BVKFg4Nl82
NCkKICAgICBSVU4odGVzdEJyYW5jaFRlc3RCaXQzMlJlZ1JlZygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggZGUyZWVhYWQ4YjJhOGU0ZGJkNDhlY2M2N2NiODQ4
NjdjZGNmNWRiOS4uMzcxMDNhNTkyYzdjNzA2YzAzZmRiOTEyMzk3ZDIzMjUwMTBkMGZmYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTI3OCw4ICsyNzgsMTAgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAKICAgICBzdHJ1Y3QgUGFyZW5Db250ZXh0IHsKICAgICAgICAgc3Ry
dWN0IFBhcmVuQ29udGV4dCogbmV4dDsKLSAgICAgICAgdWludDMyX3QgYmVnaW47Ci0gICAgICAg
IHVpbnQzMl90IG1hdGNoQW1vdW50OworICAgICAgICBzdHJ1Y3QgQmVnaW5BbmRNYXRjaEFtb3Vu
dCB7CisgICAgICAgICAgICB1aW50MzJfdCBiZWdpbjsKKyAgICAgICAgICAgIHVpbnQzMl90IG1h
dGNoQW1vdW50OworICAgICAgICB9IGJlZ2luQW5kTWF0Y2hBbW91bnQ7CiAgICAgICAgIHVpbnRw
dHJfdCByZXR1cm5BZGRyZXNzOwogICAgICAgICBzdHJ1Y3QgU3VicGF0dGVybnMgewogICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnQ7CkBAIC0yOTIsMjcgKzI5NCwyNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgIHJldHVybiBzaXplb2YoUGFyZW5Db250ZXh0KSArIHNpemVvZihTdWJw
YXR0ZXJucykgKiBwYXJlbkNvbnRleHRTaXplcy5udW1TdWJwYXR0ZXJucygpICsgc2l6ZW9mKHVp
bnRwdHJfdCkgKiBwYXJlbkNvbnRleHRTaXplcy5mcmFtZVNsb3RzKCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG5leHRPZmZzZXQoKQorICAgICAgICBzdGF0aWMgY29u
c3RleHByIHB0cmRpZmZfdCBuZXh0T2Zmc2V0KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgbmV4dCk7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgcHRyZGlmZl90IGJlZ2luT2Zmc2V0KCkKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBw
dHJkaWZmX3QgYmVnaW5PZmZzZXQoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zm
c2V0b2YoUGFyZW5Db250ZXh0LCBiZWdpbik7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2Yo
UGFyZW5Db250ZXh0LCBiZWdpbkFuZE1hdGNoQW1vdW50KSArIG9mZnNldG9mKEJlZ2luQW5kTWF0
Y2hBbW91bnQsIGJlZ2luKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bWF0Y2hBbW91bnRPZmZzZXQoKQorICAgICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBt
YXRjaEFtb3VudE9mZnNldCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRv
ZihQYXJlbkNvbnRleHQsIG1hdGNoQW1vdW50KTsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRv
ZihQYXJlbkNvbnRleHQsIGJlZ2luQW5kTWF0Y2hBbW91bnQpICsgb2Zmc2V0b2YoQmVnaW5BbmRN
YXRjaEFtb3VudCwgbWF0Y2hBbW91bnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHB0
cmRpZmZfdCByZXR1cm5BZGRyZXNzT2Zmc2V0KCkKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBw
dHJkaWZmX3QgcmV0dXJuQWRkcmVzc09mZnNldCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQsIHJldHVybkFkZHJlc3MpOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdWJwYXR0ZXJuT2Zmc2V0KHNpemVfdCBzdWJwYXR0
ZXJuKQorICAgICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBzdWJwYXR0ZXJuT2Zmc2V0
KHNpemVfdCBzdWJwYXR0ZXJuKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0
b2YoUGFyZW5Db250ZXh0LCBzdWJwYXR0ZXJucykgKyAoc3VicGF0dGVybiAtIDEpICogc2l6ZW9m
KFN1YnBhdHRlcm5zKTsKICAgICAgICAgfQpAQCAtMzc0LDE3ICszNzYsMzAgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgIG1vdmUoaGVhZFB0clJlZ2lzdGVyLCBmcmVlbGlzdFJlZ2lzdGVyKTsK
ICAgICB9CiAKKworICAgIHZvaWQgc3RvcmVCZWdpbkFuZE1hdGNoQW1vdW50VG9QYXJlbkNvbnRl
eHQoUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudEdQUiwgUmVnaXN0
ZXJJRCBwYXJlbkNvbnRleHRHUFIpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KFBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQoKSArIDQgPT0gUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKTsKKyAgICAgICAgc3RvcmVQYWlyMzIoYmVnaW5HUFIsIG1hdGNoQW1vdW50R1BSLCBw
YXJlbkNvbnRleHRHUFIsIFRydXN0ZWRJbW0zMihQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkp
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWRCZWdpbkFuZE1hdGNoQW1vdW50RnJvbVBhcmVuQ29u
dGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dEdQUiwgUmVnaXN0ZXJJRCBiZWdpbkdQUiwgUmVn
aXN0ZXJJRCBtYXRjaEFtb3VudEdQUikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoUGFy
ZW5Db250ZXh0OjpiZWdpbk9mZnNldCgpICsgNCA9PSBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50
T2Zmc2V0KCkpOworICAgICAgICBsb2FkUGFpcjMyKHBhcmVuQ29udGV4dEdQUiwgVHJ1c3RlZElt
bTMyKFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSksIGJlZ2luR1BSLCBtYXRjaEFtb3VudEdQ
Uik7CisgICAgfQorCiAgICAgdm9pZCBzYXZlUGFyZW5Db250ZXh0KFJlZ2lzdGVySUQgcGFyZW5D
b250ZXh0UmVnLCBSZWdpc3RlcklEIHRlbXBSZWcsIHVuc2lnbmVkIGZpcnN0U3VicGF0dGVybiwg
dW5zaWduZWQgbGFzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2Nh
dGlvbikKICAgICB7Ci0gICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3MocGFyZW5Db250ZXh0
UmVnLCBQYXJlbkNvbnRleHQ6OmJlZ2luT2Zmc2V0KCkpKTsKICAgICAgICAgbG9hZEZyb21GcmFt
ZShzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
Om1hdGNoQW1vdW50SW5kZXgoKSwgdGVtcFJlZyk7Ci0gICAgICAgIHN0b3JlMzIodGVtcFJlZywg
QWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQo
KSkpOworICAgICAgICBzdG9yZUJlZ2luQW5kTWF0Y2hBbW91bnRUb1BhcmVuQ29udGV4dChpbmRl
eCwgdGVtcFJlZywgcGFyZW5Db250ZXh0UmVnKTsKICAgICAgICAgbG9hZEZyb21GcmFtZShzdWJw
YXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnJldHVy
bkFkZHJlc3NJbmRleCgpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVQdHIodGVtcFJlZywgQWRk
cmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6cmV0dXJuQWRkcmVzc09mZnNldCgp
KSk7CiAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRl
U3VicGF0dGVybnMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVybiA9IGZp
cnN0U3VicGF0dGVybjsgc3VicGF0dGVybiA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0dGVybisr
KSB7Ci0gICAgICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4g
PDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwgdGVtcFJlZyk7Ci0gICAgICAgICAgICAgICAgc3Rv
cmVQdHIodGVtcFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3Vi
cGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkpOworICAgICAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoaXM2NEJpdCgpKTsKKyAgICAgICAgICAgICAgICBsb2FkNjQoQWRkcmVzcyhvdXRwdXQsIChz
dWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSksIHRlbXBSZWcpOworICAgICAgICAg
ICAgICAgIHN0b3JlNjQodGVtcFJlZywgQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29u
dGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkpOwogICAgICAgICAgICAgICAgIGNs
ZWFyU3VicGF0dGVyblN0YXJ0KHN1YnBhdHRlcm4pOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0zOTcsMTYgKzQxMiwxNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHZvaWQgcmVzdG9y
ZVBhcmVuQ29udGV4dChSZWdpc3RlcklEIHBhcmVuQ29udGV4dFJlZywgUmVnaXN0ZXJJRCB0ZW1w
UmVnLCB1bnNpZ25lZCBmaXJzdFN1YnBhdHRlcm4sIHVuc2lnbmVkIGxhc3RTdWJwYXR0ZXJuLCB1
bnNpZ25lZCBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24pCiAgICAgewotICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSks
IGluZGV4KTsKKyAgICAgICAgbG9hZEJlZ2luQW5kTWF0Y2hBbW91bnRGcm9tUGFyZW5Db250ZXh0
KHBhcmVuQ29udGV4dFJlZywgaW5kZXgsIHRlbXBSZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUo
aW5kZXgsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlczo6YmVnaW5JbmRleCgpKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0
UmVnLCBQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAg
ICAgc3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJh
Y2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNz
T2Zmc2V0KCkpLCB0ZW1wUmVnKTsKICAgICAgICAgc3RvcmVUb0ZyYW1lKHRlbXBSZWcsIHN1YnBh
dHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJu
QWRkcmVzc0luZGV4KCkpOwogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxl
TW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHN1
YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4gPD0gbGFzdFN1YnBhdHRlcm47
IHN1YnBhdHRlcm4rKykgewotICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhwYXJlbkNv
bnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSksIHRl
bXBSZWcpOwotICAgICAgICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3Mob3V0cHV0
LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKKyAgICAgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KGlzNjRCaXQoKSk7CisgICAgICAgICAgICAgICAgbG9hZDY0KEFkZHJl
c3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0
dGVybikpLCB0ZW1wUmVnKTsKKyAgICAgICAgICAgICAgICBzdG9yZTY0KHRlbXBSZWcsIEFkZHJl
c3Mob3V0cHV0LCAoc3VicGF0dGVybiA8PCAxKSAqIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24g
Kz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM7CkBAIC0xMjc1LDgg
KzEyOTAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgSnVtcExpc3QgbWF0Y2hlczsKIAog
ICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpOb25HcmVl
ZHkpIHsKLSAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm5JZCA8
PCAxKSAqIHNpemVvZihpbnQpKSwgcGF0dGVybkluZGV4KTsKLSAgICAgICAgICAgIGxvYWQzMihB
ZGRyZXNzKG91dHB1dCwgKChzdWJwYXR0ZXJuSWQgPDwgMSkgKyAxKSAqIHNpemVvZihpbnQpKSwg
cGF0dGVyblRlbXApOworICAgICAgICAgICAgbG9hZFN1YlBhdHRlcm4ob3V0cHV0LCBzdWJwYXR0
ZXJuSWQsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwogCiAgICAgICAgICAgICAvLyBBbiBl
bXB0eSBtYXRjaCBpcyBzdWNjZXNzZnVsIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKICAg
ICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVk
Q291bnQgfHwgdGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSAxKSB7CkBAIC0xMzA3LDggKzEzMjEs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIo
MSksIGNoYXJhY3Rlck9yVGVtcCk7CiAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNoYXJh
Y3Rlck9yVGVtcCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tS
ZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5h
cHBlbmQoYnJhbmNoMzIoRXF1YWwsIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQpLCBjaGFy
YWN0ZXJPclRlbXApKTsKLSAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChz
dWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAg
ICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoKHN1YnBhdHRlcm5JZCA8PCAxKSArIDEp
ICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuVGVtcCk7CisgICAgICAgICAgICAgICAgbG9hZFN1YlBh
dHRlcm4ob3V0cHV0LCBzdWJwYXR0ZXJuSWQsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApOwog
ICAgICAgICAgICAgICAgIGp1bXAob3V0ZXJMb29wKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1hdGNoZXMubGluayh0aGlzKTsKQEAgLTEzMzEsOCArMTM0NCw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNoYXJhY3Rlck9yVGVtcCwgcGFyZW50aGVz
ZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50
SW5kZXgoKSk7CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSBxdWFu
dGlmeUluZmluaXRlKQogICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKGJyYW5jaDMyKEVx
dWFsLCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50KSwgY2hhcmFjdGVyT3JUZW1wKSk7Ci0g
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhv
dXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5U
ZW1wKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJuKG91dHB1dCwgc3VicGF0dGVybklkLCBw
YXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gU3RvcmUgY3VycmVu
dCBpbmRleCBpbiBmcmFtZSBmb3IgcmVzdG9yaW5nIGFmdGVyIGEgcGFydGlhbCBtYXRjaAogICAg
ICAgICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTEzNTMsOCArMTM2
NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJl
bCgpOwogCi0gICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQg
PDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7Ci0gICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSks
IHBhdHRlcm5UZW1wKTsKKyAgICAgICAgICAgIGxvYWRTdWJQYXR0ZXJuKG91dHB1dCwgc3VicGF0
dGVybklkLCBwYXR0ZXJuSW5kZXgsIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4g
ZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCiAg
ICAgICAgICAgICBKdW1wIHplcm9MZW5ndGhNYXRjaCA9IGJyYW5jaDMyKEVxdWFsLCBUcnVzdGVk
SW1tMzIoLTEpLCBwYXR0ZXJuSW5kZXgpOwpAQCAtMTQwOCw4ICsxNDE5LDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOjptYXRjaEFtb3VudEluZGV4KCksIG1hdGNo
QW1vdW50KTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywg
bWF0Y2hBbW91bnQpKTsKIAotICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0LCAoc3Vi
cGF0dGVybklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBwYXR0ZXJuU3RhcnRJbmRleCk7Ci0gICAg
ICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkg
KiBzaXplb2YoaW50KSksIHBhdHRlcm5FbmRJbmRleE9yTGVuKTsKKyAgICAgICAgICAgIGxvYWRT
dWJQYXR0ZXJuKG91dHB1dCwgc3VicGF0dGVybklkLCBwYXR0ZXJuU3RhcnRJbmRleCwgcGF0dGVy
bkVuZEluZGV4T3JMZW4pOwogICAgICAgICAgICAgc3ViMzIocGF0dGVyblN0YXJ0SW5kZXgsIHBh
dHRlcm5FbmRJbmRleE9yTGVuKTsKICAgICAgICAgICAgIHN1YjMyKHBhdHRlcm5FbmRJbmRleE9y
TGVuLCBpbmRleCk7CiAKQEAgLTI0NzQsMTEgKzI0ODQsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKQog
ICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIocHJpb3JBbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSksIHJldHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0b3JlMzIocmV0dXJuUmVnaXN0ZXIsIG91dHB1dCk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVBhaXIzMihy
ZXR1cm5SZWdpc3RlciwgaW5kZXgsIG91dHB1dCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBnZXRNYXRjaFN0YXJ0KHJldHVy
blJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21w
aWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQotICAgICAgICAgICAgICAgICAgICBzdG9yZTMy
KGluZGV4LCBBZGRyZXNzKG91dHB1dCwgNCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQsIDQpKTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVnaXN0
ZXIyKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRlUmV0dXJuKCk7CkBAIC00MDc3LDYgKzQw
ODgsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIGxvYWRT
dWJQYXR0ZXJuKFJlZ2lzdGVySUQgb3V0cHV0R1BSLCB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQsIFJl
Z2lzdGVySUQgc3RhcnRJbmRleEdQUiwgUmVnaXN0ZXJJRCBlbmRJbmRleE9yTGVuR1BSKQorICAg
IHsKKyAgICAgICAgbG9hZFBhaXIzMihvdXRwdXRHUFIsIFRydXN0ZWRJbW0zMigoc3VicGF0dGVy
bklkIDw8IDEpICogc2l6ZW9mKGludCkpLCBzdGFydEluZGV4R1BSLCBlbmRJbmRleE9yTGVuR1BS
KTsKKyAgICB9CisKIHB1YmxpYzoKICAgICBZYXJyR2VuZXJhdG9yKFZNKiB2bSwgWWFyclBhdHRl
cm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNvZGVCbG9jayYgY29kZUJs
b2NrLCBDaGFyU2l6ZSBjaGFyU2l6ZSwgSklUQ29tcGlsZU1vZGUgY29tcGlsZU1vZGUpCiAgICAg
ICAgIDogbV92bSh2bSkKQEAgLTQxNzUsMTQgKzQxOTEsMjIgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtYXRjaExpbWl0KSwgcmVtYWluaW5nTWF0Y2hD
b3VudCk7CiAjZW5kaWYKIAorICAgICAgICAvLyBJbml0aWFsaXplIHN1YnBhdHRlcm5zJyBzdGFy
dHMuIEFuZCBpbml0aWFsaXplIG1hdGNoU3RhcnQgaWYgYCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hh
c0ZpeGVkU2l6ZWAuCisgICAgICAgIC8vIElmIHRoZSBtb2RlIGlzIEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMsIHRoZW4gbWF0Y2hTdGFydCBpcyBzdWJwYXR0ZXJuc1swXSdzIHN0
YXJ0LgogICAgICAgICBpZiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVk
ZVN1YnBhdHRlcm5zKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9w
YXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxOyArK2kpCi0gICAgICAgICAgICAgICAgc3RvcmUz
MihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwgKGkgPDwgMSkgKiBzaXplb2YoaW50
KSkpOworICAgICAgICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gMDsKKyAgICAgICAgICAg
IC8vIEZpcnN0IHN1YnBhdHRlcm5JZCdzIHN0YXJ0IGlzIGNvbmZpZ3VyZWQgdG8gYGluZGV4YCBp
ZiAhbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUuCisgICAgICAgICAgICBpZiAoIW1f
cGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICAgICAgc2V0TWF0
Y2hTdGFydChpbmRleCk7CisgICAgICAgICAgICAgICAgKytzdWJwYXR0ZXJuSWQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKDsgc3VicGF0dGVybklkIDwgbV9wYXR0ZXJuLm1fbnVt
U3VicGF0dGVybnMgKyAxOyArK3N1YnBhdHRlcm5JZCkKKyAgICAgICAgICAgICAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoc3VicGF0dGVybklkIDw8IDEpICog
c2l6ZW9mKGludCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbV9wYXR0
ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpCisgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFy
dChpbmRleCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1f
aGFzRml4ZWRTaXplKQotICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7Ci0KICNpZiBF
TkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgaWYgKG1fY29u
dGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgaW5pdFBhcmVuQ29udGV4dEZy
ZWVMaXN0KCk7Cg==
</data>
<flag name="commit-queue"
          id="457415"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>