<?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>155683</bug_id>
          
          <creation_ts>2016-03-19 12:59:42 -0700</creation_ts>
          <short_desc>[JSC] Put the x86 Assembler on a binary diet</short_desc>
          <delta_ts>2016-03-25 20:47:28 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176508</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-19 12:59:42 -0700</bug_when>
    <thetext>[JSC] Put the x86 Assembler on a binary diet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176509</commentid>
    <comment_count>1</comment_count>
      <attachid>274520</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-19 13:29:02 -0700</bug_when>
    <thetext>Created attachment 274520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176519</commentid>
    <comment_count>2</comment_count>
      <attachid>274523</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-19 14:27:15 -0700</bug_when>
    <thetext>Created attachment 274523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176868</commentid>
    <comment_count>3</comment_count>
      <attachid>274627</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-21 15:31:52 -0700</bug_when>
    <thetext>Created attachment 274627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177864</commentid>
    <comment_count>4</comment_count>
      <attachid>274627</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-24 20:26:16 -0700</bug_when>
    <thetext>Comment on attachment 274627
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:68
&gt; +        This patch reduces the binary size by 66k. It is a small
&gt; +        speedup on Sunspider.

Speed-up!? Wow.

&gt; Source/JavaScriptCore/assembler/AssemblerBuffer.h:173
&gt; +        // LocalWriter *CANNOT* be mixed with other types access to AssemblerBuffer.

&quot;types access&quot; -&gt; &quot;types of access&quot;

&gt; Source/JavaScriptCore/assembler/AssemblerBuffer.h:174
&gt; +        // AssemblerBuffer cannot be used until its LocalWritter goes out of scope.

&quot;LocalWritter&quot; -&gt; &quot;LocalWriter&quot;

&gt; Source/JavaScriptCore/assembler/AssemblerBuffer.h:210
&gt; +            char* m_storrageBuffer;

&quot;m_storrageBuffer&quot; -&gt; &quot;m_storageBuffer&quot;

&gt; Source/JavaScriptCore/assembler/AssemblerBuffer.h:255
&gt; +        NEVER_INLINE void outOfLineGrow()
&gt; +        {
&gt; +            m_storage.grow();
&gt; +        }

Could make this private instead of protected.

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:2906
&gt; +#if CPU(X86_64)
&gt; +        // Byte operand register spl &amp; above require a REX prefix (to prevent the &apos;H&apos; registers be accessed).
&gt; +        inline static bool byteRegRequiresRex(int reg)
&gt; +        {
&gt; +            static_assert(X86Registers::esp == 4, &quot;Necessary condition for OR-masking&quot;);
&gt; +            return (reg &gt;= X86Registers::esp);
&gt; +        }
&gt; +        inline static bool byteRegRequiresRex(int a, int b)
&gt; +        {
&gt; +            return byteRegRequiresRex(a | b);
&gt; +        }
&gt; +
&gt; +        // Registers r8 &amp; above require a REX prefixe.
&gt; +        inline static bool regRequiresRex(int reg)
&gt; +        {
&gt; +            static_assert(X86Registers::r8 == 8, &quot;Necessary condition for OR-masking&quot;);
&gt; +            return (reg &gt;= X86Registers::r8);
&gt; +        }
&gt; +        inline static bool regRequiresRex(int a, int b)
&gt; +        {
&gt; +            return regRequiresRex(a | b);
&gt; +        }
&gt; +        inline static bool regRequiresRex(int a, int b, int c)
&gt; +        {
&gt; +            return regRequiresRex(a | b | c);
&gt; +        }
&gt; +#else
&gt; +        inline static bool byteRegRequiresRex(int) { return false; }
&gt; +        inline static bool byteRegRequiresRex(int, int) { return false; }
&gt; +        inline static bool regRequiresRex(int) { return false; }
&gt; +        inline static bool regRequiresRex(int, int) { return false; }
&gt; +        inline static bool regRequiresRex(int, int, int) { return false; }
&gt; +#endif

Since we are inside a class, all these &quot;inline&quot; can and should be omitted; they have no effect.

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:2919
&gt; +            static const RegisterID noBase = X86Registers::ebp;
&gt; +            static const RegisterID hasSib = X86Registers::esp;
&gt; +            static const RegisterID noIndex = X86Registers::esp;

Can/should we use constexpr here instead of just const? Might be a good habit for the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178213</commentid>
    <comment_count>5</comment_count>
      <attachid>274965</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-25 19:01:41 -0700</bug_when>
    <thetext>Created attachment 274965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178230</commentid>
    <comment_count>6</comment_count>
      <attachid>274965</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-25 20:47:24 -0700</bug_when>
    <thetext>Comment on attachment 274965
Patch

Clearing flags on attachment: 274965

Committed r198708: &lt;http://trac.webkit.org/changeset/198708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178231</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-25 20:47:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274520</attachid>
            <date>2016-03-19 13:29:02 -0700</date>
            <delta_ts>2016-03-19 14:27:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155683-20160319132902.patch</filename>
            <type>text/plain</type>
            <size>43672</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YjUxMmI5NjI1YmM3OWNjYzQ2ZGZmOTY1MzM2ZWFmYjJlZWRlMzViLi43MmI4NGNkZTczNmIzZTIy
ZTkzNzI3N2JmYjRkNDI4ZTkyOGUyYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTYtMDMtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHV0IHRoZSB4ODYgQXNzZW1ibGVyIG9uIGEgYmluYXJ5
IGRpZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBNYWNyb0Fzc2VtYmxlcnMgYXJlIGhlYXZpbHkgaW5saW5lZC4gVGhpcyBpcyB1bmZvcnR1bmF0
ZWx5CisgICAgICAgIGltcG9ydGFudCBmb3IgYmFzZWxpbmUgSklUIHdoZXJlIG1hbnkgYnJhbmNo
ZXMgY2FuIGJlIGVsaW1pbmF0ZWQKKyAgICAgICAgYXQgY29tcGlsZSB0aW1lLgorCisgICAgICAg
IFRoaXMgaW5saW5pbmcgY2F1c2VzIGEgbG90IG9mIGJpbmFyeSBibG9hdC4gVGhlIHBoYXNlcwor
ICAgICAgICBsb3dlcmluZyB0byBBU00gYXJlIG1hc3NpdmVseSBsYXJnZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcHJvdmVzIHRoZSBzaXR1YXRpb24gYSBiaXQgZm9yIHg4NiB0aHJvdWdoCisg
ICAgICAgIG1hbnkgc21hbGwgaW1wcm92ZW1lbnRzOgorCisgICAgICAgIC1FdmVyeSBpbnN0cnVj
dGlvbiBzdGFydHMgd2l0aCBlbnN1cmVTcGFjZSgpLiBUaGUgc2xvdworICAgICAgICAgcGF0aCBy
ZWFsbG9jIHRoZSBidWZmZXIuCisgICAgICAgICBGcm9tIHRoYXQgc2xvdyBwYXRoLCBvbmx5IGZh
c3RSZWFsbG9jKCkgd2FzIGEgZnVuY3Rpb24KKyAgICAgICAgIGNhbGwuIFdoYXQgaXMgYXJvdW5k
IGRvZXMgbm90IG5lZWQgdG8gYmUgZmFzdCwgSSBtb3ZlZAorICAgICAgICAgdGhlIHdob2xlIGdy
b3coKSBmdW5jdGlvbiBvdXQgb2YgbGluZSBmb3IgdGhvc2UgY2FzZXMuCisKKyAgICAgICAgLVdo
ZW4gdGVzdGluZyBtdWx0aXBsZSByZWdpc3RlcnMgZm9yIFJFWCByZXF1aXJlbWVudHMsCisgICAg
ICAgICB3ZSBoYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgICAgICBieXRlUmVnUmVx
dWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0pCisgICAgICAgICAgICAgcmVn
UmVxdWlyZXNSZXgoaW5kZXgpIHx8IHJlZ1JlcXVpcmVzUmV4KGJhc2UpCisgICAgICAgICBUaG9z
ZSB3ZXJlIHByb2R1Y2luZyBtdWx0aXBsZSB0ZXN0LWFuZC1icmFuY2guIFRob3NlIGJyYW5jaGVz
CisgICAgICAgICBhcmUgZWZmZWN0aXZlbHkgcmFuZG9tIHNvIHdlIGRvbid0IGhhdmUgdG8gY2Fy
ZSBhYm91dCBpbmRpdmlkdWFsCisgICAgICAgICBicmFuY2hlcyBiZWluZyBwcmVkaWN0YWJsZS4K
KworICAgICAgICAgVGhlIG5ldyBjb2RlIGVmZmVjdGl2ZWx5IGRvZXM6CisgICAgICAgICAgICAg
Ynl0ZVJlZ1JlcXVpcmVzUmV4KHJlZyB8IHJtKQorICAgICAgICAgICAgIHJlZ1JlcXVpcmVzUmV4
KGluZGV4IHwgYmFzZSkKKworICAgICAgICAtQ2hhbmdlICJNb2RSbU1vZGUiIHRvIGhhdmUgdGhl
IHZhbHVlIHdlIGNhbiBPUiBkaXJlY3RseQorICAgICAgICAgdG8gdGhlIGdlbmVyYXRlZCBNb2RS
bS4KKyAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBNb2RSTSBjb2RlIGlz
IHNvIGxhcmdlCisgICAgICAgICB0aGF0IGlzIGdvZXMgb3V0IG9mIGxpbmU7CisKKyAgICAgICAg
LUZpbmFsbHksIGEgYmlnIGNoYW5nZSBvbiBob3cgd2Ugd3JpdGUgdG8gdGhlIEFzc2VtYmxlckJ1
ZmZlci4KKworICAgICAgICAgUHJldmlvdXNseSwgaW5zdHJ1Y3Rpb25zIHdlcmUgd3JpdHRlbiBi
eXRlIGJ5IGJ5dGUgaW50bworICAgICAgICAgdGhlIGFzc2VtYmxlciBidWZmZXIgb2YgdGhlIE1h
Y3JvQXNzZW1ibGVyLgorCisgICAgICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMgdGhlIGNv
bXBpbGVyIGNhbm5vdCBwcm92ZSB0aGF0CisgICAgICAgICB0aGUgYnVmZmVyIHBvaW50ZXIgYW5k
IHRoZSBBc3NlbWJsZXJCdWZmZXIgYXJlIG5vdCBwb2ludGluZworICAgICAgICAgdG8gdGhlIHNh
bWUgbWVtb3J5LgorCisgICAgICAgICBCZWNhdXNlIG9mIHRoYXQsIGJlZm9yZSBhbnkgd3JpdGUs
IGFsbCB0aGUgbG9jYWwgcmVnaXN0ZXIKKyAgICAgICAgIHdlcmUgcHVzaGVkIGJhY2sgdG8gdGhl
IEFzc2VtYmxlckJ1ZmZlciBtZW1vcnksIHRoZW4gZXZlcnl0aGluZworICAgICAgICAgd2FzIHJl
YWQgYmFjayBhZnRlciB0aGUgd3JpdGUgdG8gY29tcHV0ZSB0aGUgbmV4dCB3cml0ZS4KKworICAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSAicmVzdHJpY3QiIGtleXdvcmQgYW5kIHdyYXBw
ZXIgdHlwZXMKKyAgICAgICAgIHRvIGhlbHAgQ2xhbmcgd2l0aCB0aGF0IGJ1dCBub3RoaW5nIHdv
cmtlZC4KKworICAgICAgICAgVGhlIGN1cnJlbnQgc29sdXRpb24gaXMgdG8ga2VlcCBhIGxvY2Fs
IGNvcHkgb2YgdGhlIGluZGV4CisgICAgICAgICBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGluIHRo
ZSBzY29wZSBvZiBlYWNoIGluc3RydWN0aW9uLgorICAgICAgICAgVGhhdCBpcyBkb25lIGJ5IEFz
c2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIuCisKKyAgICAgICAgIFNpbmNlIExvY2FsQnVmZmVy
V3JpdGVyIG9ubHkgZXhpc3RzIGxvY2FsbHksIGl0IHN0YXlzIGluCisgICAgICAgICByZWdpc3Rl
ciBhbmQgd2UgZG9uJ3QgaGF2ZSBhbGwgdGhlIG1lbW9yeSBjaHVybiBiZXR3ZWVuCisgICAgICAg
ICBlYWNoIGJ5dGUgd3JpdGluZy4gVGhpcyBhbHNvIGFsbG93cyBjbGFuZyB0byBjb21iaW5lCisg
ICAgICAgICBvYnZpb3VzIGNhc2VzIHNpbmNlIHRoZXJlIGFyZSBubyBsb25nZXIgb2JzZXJ2YWJs
ZSBzaWRlCisgICAgICAgICBlZmZlY3RzIGJldHdlZW4gYnl0ZXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWR1Y2VzIHRoZSBiaW5hcnkgc2l6ZSBieSA2NmsuIEl0IGlzIGEgc21hbGwgCisgICAg
ICAgIHNwZWVkdXAgb24gU3Vuc3BpZGVyLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OmVuc3VyZVNwYWNlKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6TG9jYWxXcml0ZXIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjp+TG9jYWxXcml0
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpwdXRCeXRl
VW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6
cHV0U2hvcnRVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2Fs
V3JpdGVyOjpwdXRJbnRVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6
OkxvY2FsV3JpdGVyOjpwdXRJbnQ2NFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxl
ckJ1ZmZlcjo6TG9jYWxXcml0ZXI6OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibGVyQnVmZmVyOjpwdXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxl
ckJ1ZmZlcjo6b3V0T2ZMaW5lR3Jvdyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpieXRlUmVn
UmVxdWlyZXNSZXgpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjpyZWdSZXF1aXJlc1JleCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpMb2NhbEJ1ZmZlcldy
aXRlcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0
ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjplbWl0UmV4KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhX
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6
TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhJZik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjplbWl0UmV4SWZO
ZWVkZWQpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0
dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cHV0TW9kUm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cHV0TW9k
Um1TaWIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0
dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cmVnaXN0ZXJNb2RSTSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpt
ZW1vcnlNb2RSTSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25G
b3JtYXR0ZXI6Om9uZUJ5dGVPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcF9kaXNwMzIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpvbmVC
eXRlT3BfZGlzcDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nklu
c3RydWN0aW9uRm9ybWF0dGVyOjp0d29CeXRlT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0aHJlZUJ5dGVPcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6
Om9uZUJ5dGVPcDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wNjRfZGlzcDMyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9w
NjRfZGlzcDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3Ry
dWN0aW9uRm9ybWF0dGVyOjp0d29CeXRlT3A2NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcDgpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0
d29CeXRlT3A4KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OmVtaXRSZXhXKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJl
eElmKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlv
bkZvcm1hdHRlcjo6ZW1pdFJleElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6cHV0TW9kUm0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpwdXRN
b2RSbVNpYik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1
Y3Rpb25Gb3JtYXR0ZXI6OnJlZ2lzdGVyTW9kUk0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjptZW1vcnlNb2RSTSk6IERlbGV0
ZWQuCisKIDIwMTYtMDMtMTcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gTWFrZSBDU0UncyBJbXB1cmVEYXRhIGZhc3RlciB3aGVuIGRlYWxp
bmcgd2l0aCBsYXJnZSBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fzc2VtYmxlckJ1ZmZlci5oCmluZGV4IGQ5NTQ2OTMxZDg1NTA4MjdhMzQ1ODkzN2YxN2Zh
NzgzYjBjNjI5ZjAuLmEyNzg2MDViNTRiM2U3OWM5ZGQ2NjRlZmVlYzU4OGExMzYzN2U3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aApAQCAtMTI5LDcgKzEyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVuc3Vy
ZVNwYWNlKGludCBzcGFjZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFpc0F2YWlsYWJs
ZShzcGFjZSkpCi0gICAgICAgICAgICAgICAgZ3JvdygpOworICAgICAgICAgICAgICAgIG91dE9m
TGluZUdyb3coKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNBbGlnbmVkKGludCBhbGln
bm1lbnQpIGNvbnN0CkBAIC0xNjUsMTMgKzE2NSw2MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBBc3NlbWJsZXJEYXRhIHJlbGVhc2VBc3NlbWJsZXJEYXRhKCkgeyByZXR1cm4gV1RGTW92
ZShtX3N0b3JhZ2UpOyB9CiAKKyAgICAgICAgLy8gTG9jYWxXcml0ZXIgaXMgYSB0cmljayB0byBr
ZWVwIHRoZSBzdG9yYWdlIGJ1ZmZlciBhbmQgdGhlIGluZGV4CisgICAgICAgIC8vIGluIG1lbW9y
eSB3aGlsZSBpc3N1aW5nIG11bHRpcGxlIFN0b3Jlcy4KKyAgICAgICAgLy8gSXQgaXMgY3JlYXRl
ZCBpbiBhIGJsb2NrIHNjb3BlIGFuZCBpdHMgYXR0cmlidXRlIGNhbiBzdGF5IGxpdmUKKyAgICAg
ICAgLy8gYmV0d2VlbiB3cml0ZXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIExvY2FsV3JpdGVy
ICpDQU5OT1QqIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgYWNjZXNzIHRvIEFzc2VtYmxlckJ1
ZmZlci4KKyAgICAgICAgLy8gQXNzZW1ibGVyQnVmZmVyIGNhbm5vdCBiZSB1c2VkIHVudGlsIGl0
cyBMb2NhbFdyaXR0ZXIgZ29lcyBvdXQgb2Ygc2NvcGUuCisgICAgICAgIGNsYXNzIExvY2FsV3Jp
dGVyIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgTG9jYWxXcml0ZXIoQXNzZW1ibGVy
QnVmZmVyJiBidWZmZXIsIGludCByZXF1aXJlZFNwYWNlKQorICAgICAgICAgICAgICAgIDogbV9i
dWZmZXIoYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5lbnN1
cmVTcGFjZShyZXF1aXJlZFNwYWNlKTsKKyAgICAgICAgICAgICAgICBtX3N0b3JyYWdlQnVmZmVy
ID0gYnVmZmVyLm1fc3RvcmFnZS5idWZmZXIoKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4ID0g
YnVmZmVyLm1faW5kZXg7CisjaWYgIWRlZmluZWQoTkRFQlVHKQorICAgICAgICAgICAgICAgIG1f
aW5pdGlhbEluZGV4ID0gbV9pbmRleDsKKyNlbmRpZgorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB+TG9jYWxXcml0ZXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VS
VChtX2J1ZmZlci5tX2luZGV4ID09IG1faW5pdGlhbEluZGV4KTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobV9zdG9ycmFnZUJ1ZmZlciA9PSBtX2J1ZmZlci5tX3N0b3JhZ2UuYnVmZmVyKCkpOwor
ICAgICAgICAgICAgICAgIG1fYnVmZmVyLm1faW5kZXggPSBtX2luZGV4OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1
dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQorICAgICAgICAgICAgdm9pZCBwdXRTaG9ydFVu
Y2hlY2tlZChpbnQxNl90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQor
ICAgICAgICAgICAgdm9pZCBwdXRJbnRVbmNoZWNrZWQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRl
Z3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAgICAgICAgIHZvaWQgcHV0SW50NjRVbmNoZWNr
ZWQoaW50NjRfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAg
ICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4K
KyAgICAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2luZGV4ICsgc2l6ZW9m
KEludGVncmFsVHlwZSkgPD0gbV9idWZmZXIubV9zdG9yYWdlLmNhcGFjaXR5KCkpOworICAgICAg
ICAgICAgICAgICpyZWludGVycHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5cGUqPihtX3N0b3JyYWdl
QnVmZmVyICsgbV9pbmRleCkgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBtX2luZGV4ICs9IHNp
emVvZihJbnRlZ3JhbFR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXNzZW1ibGVy
QnVmZmVyJiBtX2J1ZmZlcjsKKyAgICAgICAgICAgIGNoYXIqIG1fc3RvcnJhZ2VCdWZmZXI7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBtX2luZGV4OworI2lmICFkZWZpbmVkKE5ERUJVRykKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1faW5pdGlhbEluZGV4OworI2VuZGlmCisgICAgICAgIH07CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4KICAg
ICAgICAgdm9pZCBwdXRJbnRlZ3JhbChJbnRlZ3JhbFR5cGUgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5kZXggKyBzaXplb2YoSW50ZWdyYWxU
eXBlKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShuZXh0SW5kZXggPiBtX3N0b3JhZ2UuY2Fw
YWNpdHkoKSkpCi0gICAgICAgICAgICAgICAgZ3JvdygpOworICAgICAgICAgICAgICAgIG91dE9m
TGluZUdyb3coKTsKICAgICAgICAgICAgIEFTU0VSVChpc0F2YWlsYWJsZShzaXplb2YoSW50ZWdy
YWxUeXBlKSkpOwogICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVncmFsVHlw
ZSo+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7CiAgICAgICAgICAgICBt
X2luZGV4ID0gbmV4dEluZGV4OwpAQCAtMTk5LDcgKzI0NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG1fc3RvcmFnZS5ncm93KGV4dHJhQ2FwYWNpdHkpOwogICAgICAgICB9CiAK
KyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgb3V0T2ZMaW5lR3JvdygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fc3RvcmFnZS5ncm93KCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBMb2NhbFdyaXRlcjsKKwogICAgICAgICBBc3NlbWJsZXJEYXRhIG1fc3Rv
cmFnZTsKICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CmluZGV4IDQwZTQ4ZDAxMzI1ZWU1MzlmZjY5N2NkM2M5N2RiOTJlM2NhMGIwMGQuLjY4Y2I4MDkz
YTBhNTllMzRjYWI1ZjMzMDNhNjE3Mjc2YThlMDM3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9hc3NlbWJsZXIu
bGVhbF9tcihpbmRleC5vZmZzZXQsIGluZGV4LmJhc2UsIGluZGV4LmluZGV4LCBpbmRleC5zY2Fs
ZSwgZGVzdCk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9ycihzcmMs
IGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKaW5kZXggODU3ZDIyYmE2MjQ2NDc1MWZjNWRiZTg1ODc4ZjEyZjJmNjAzZmE4OS4uZTgwMTk0
ZmExYjg5MzM4NGFlNGNmOTZhMjY1NjdhMjMzNmE1YmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yODUyLDE2ICsyODUyLDE0IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgY2xhc3MgWDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXIgewot
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4SW5zdHJ1Y3Rpb25TaXplID0gMTY7CiAKICAg
ICBwdWJsaWM6Ci0KICAgICAgICAgZW51bSBNb2RSbU1vZGUgewotICAgICAgICAgICAgTW9kUm1N
ZW1vcnlOb0Rpc3AsCi0gICAgICAgICAgICBNb2RSbU1lbW9yeURpc3A4LAotICAgICAgICAgICAg
TW9kUm1NZW1vcnlEaXNwMzIsCi0gICAgICAgICAgICBNb2RSbVJlZ2lzdGVyLAorICAgICAgICAg
ICAgTW9kUm1NZW1vcnlOb0Rpc3AgPSAwLAorICAgICAgICAgICAgTW9kUm1NZW1vcnlEaXNwOCA9
IDEgPDwgNiwKKyAgICAgICAgICAgIE1vZFJtTWVtb3J5RGlzcDMyID0gMiA8PCA2LAorICAgICAg
ICAgICAgTW9kUm1SZWdpc3RlciA9IDMgPDwgNiwKICAgICAgICAgfTsKIAogICAgICAgICAvLyBM
ZWdhY3kgcHJlZml4IGJ5dGVzOgpAQCAtMjg3Myw2ICsyODcxLDIwNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZShwcmUpOwogICAgICAgICB9CiAKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICAvLyBCeXRlIG9wZXJhbmQgcmVnaXN0ZXIgc3BsICYgYWJvdmUgcmVxdWly
ZSBhIFJFWCBwcmVmaXggKHRvIHByZXZlbnQgdGhlICdIJyByZWdpc3RlcnMgYmUgYWNjZXNzZWQp
LgorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCByZWcp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoWDg2UmVnaXN0ZXJzOjplc3Ag
PT0gNCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsKKyAgICAgICAgICAg
IHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6ZXNwKTsKKyAgICAgICAgfQorICAgICAgICBp
bmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVSZWdSZXF1aXJlc1JleChhIHwgYik7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlcnMgcjggJiBhYm92ZSByZXF1aXJlIGEgUkVYIHBy
ZWZpeGUuCisgICAgICAgIGlubGluZSBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgcmVn
KQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KFg4NlJlZ2lzdGVyczo6cjgg
PT0gOCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsKKyAgICAgICAgICAg
IHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6cjgpOworICAgICAgICB9CisgICAgICAgIGlu
bGluZSBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgYSwgaW50IGIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiByZWdSZXF1aXJlc1JleChhIHwgYik7CisgICAgICAgIH0KKyAg
ICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYiwgaW50
IGMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWdSZXF1aXJlc1JleChhIHwgYiB8
IGMpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJl
Z1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgaW5saW5lIHN0YXRp
YyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgaW5s
aW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCwgaW50KSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgcmVnUmVxdWlyZXNSZXgoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCisgICAgICAgIGNsYXNzIExvY2FsQnVmZmVy
V3JpdGVyIDogcHVibGljIEFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIgeworICAgICAgICBw
dWJsaWM6CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlcihBc3NlbWJsZXJCdWZmZXImIGJ1
ZmZlcikKKyAgICAgICAgICAgICAgICA6IEFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIoYnVm
ZmVyLCBtYXhJbnN0cnVjdGlvblNpemUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIEludGVybmFsczsgTW9kUm0gYW5kIFJFWCBmb3JtYXR0ZXJzLgorCisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0Jhc2UgPSBYODZSZWdpc3RlcnM6
OmVicDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYiA9IFg4NlJl
Z2lzdGVyczo6ZXNwOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9JbmRl
eCA9IFg4NlJlZ2lzdGVyczo6ZXNwOworCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIG5vQmFzZTIgPSBYODZSZWdpc3RlcnM6OnIxMzsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYjIgPSBYODZSZWdpc3RlcnM6OnIx
MjsKKworICAgICAgICAgICAgLy8gRm9ybWF0IGEgUkVYIHByZWZpeCBieXRlLgorICAgICAgICAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGVtaXRSZXgoYm9vbCB3LCBpbnQgciwgaW50IHgsIGludCBi
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChyID49IDApOworICAgICAg
ICAgICAgICAgIEFTU0VSVCh4ID49IDApOworICAgICAgICAgICAgICAgIEFTU0VSVChiID49IDAp
OworICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQoUFJFX1JFWCB8ICgoaW50KXcgPDwg
MykgfCAoKHI+PjMpPDwyKSB8ICgoeD4+Myk8PDEpIHwgKGI+PjMpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVXNlZCB0byBwbGFudCBhIFJFWCBieXRlIHdpdGggUkVYLncgc2V0
IChmb3IgNjQtYml0IG9wZXJhdGlvbnMpLgorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lk
IGVtaXRSZXhXKGludCByLCBpbnQgeCwgaW50IGIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZW1pdFJleCh0cnVlLCByLCB4LCBiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVXNlZCBmb3Igb3BlcmF0aW9ucyB3aXRoIGJ5dGUgb3BlcmFuZHMgLSB1c2UgYnl0ZVJl
Z1JlcXVpcmVzUmV4KCkgdG8gY2hlY2sgcmVnaXN0ZXIgb3BlcmFuZHMsCisgICAgICAgICAgICAv
LyByZWdSZXF1aXJlc1JleCgpIHRvIGNoZWNrIG90aGVyIHJlZ2lzdGVycyAoaS5lLiBhZGRyZXNz
IGJhc2UgJiBpbmRleCkuCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZW1pdFJleElm
KGJvb2wgY29uZGl0aW9uLCBpbnQgciwgaW50IHgsIGludCBiKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChjb25kaXRpb24pCisgICAgICAgICAgICAgICAgICAgIGVtaXRSZXgo
ZmFsc2UsIHIsIHgsIGIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBVc2VkIGZv
ciB3b3JkIHNpemVkIG9wZXJhdGlvbnMsIHdpbGwgcGxhbnQgYSBSRVggcHJlZml4IGlmIG5lY2Vz
c2FyeSAoaWYgYW55IHJlZ2lzdGVyIGlzIHI4IG9yIGFib3ZlKS4KKyAgICAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBlbWl0UmV4SWZOZWVkZWQoaW50IHIsIGludCB4LCBpbnQgYikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0UmV4SWYocmVnUmVxdWlyZXNSZXgociwgeCwg
YiksIHIsIHgsIGIpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIC8vIE5vIFJF
WCBwcmVmaXggYnl0ZXMgb24gMzItYml0IHg4Ni4KKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBlbWl0UmV4SWYoYm9vbCwgaW50LCBpbnQsIGludCkgeyB9CisgICAgICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgZW1pdFJleElmTmVlZGVkKGludCwgaW50LCBpbnQpIHsgfQorI2VuZGlm
CisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRNb2RSbShNb2RSbU1vZGUgbW9k
ZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBwdXRCeXRlVW5jaGVja2VkKG1vZGUgfCAoKHJlZyAmIDcpIDw8IDMpIHwgKHJtICYgNykpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0TW9kUm1T
aWIoTW9kUm1Nb2RlIG1vZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVCht
b2RlICE9IE1vZFJtUmVnaXN0ZXIpOworCisgICAgICAgICAgICAgICAgcHV0TW9kUm0obW9kZSwg
cmVnLCBoYXNTaWIpOworICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQoKHNjYWxlIDw8
IDYpIHwgKChpbmRleCAmIDcpIDw8IDMpIHwgKGJhc2UgJiA3KSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZWdpc3Rlck1vZFJNKGludCByZWcsIFJl
Z2lzdGVySUQgcm0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9k
Um1SZWdpc3RlciwgcmVnLCBybSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBv
ZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQSBiYXNlIG9mIGVzcCBv
ciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2liIHdpdGgg
bm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFzU2liKSB8fCAoYmFzZSA9PSBoYXNTaWIyKSkgewor
I2Vsc2UKKyAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNTaWIpIHsKKyNlbmRpZgorICAg
ICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCkgLy8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUg
YmFzZSBpcyBub0Jhc2UsIHNpbmNlIHdlIGtub3cgaXQgaXMgaGFzU2liIQorICAgICAgICAgICAg
ICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwgbm9J
bmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJt
TWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3Az
MiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dElu
dFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgICAgICBpZiAoIW9m
ZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpICYmIChiYXNlICE9IG5vQmFzZTIpKQorI2Vsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNlKSkKKyNlbmRp
ZgorICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJl
ZywgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VYVEVORF84
XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVt
b3J5RGlzcDgsIHJlZywgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5j
aGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDgoaW50IHJlZywgUmVnaXN0
ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IEEgYmFzZSBvZiBlc3Agb3IgcjEyIHdvdWxkIGJlIGludGVycHJldGVkIGFzIGEgc2liLCBzbyBm
b3JjZSBhIHNpYiB3aXRoIG5vIGluZGV4ICYgcHV0IHRoZSBiYXNlIGluIHRoZXJlLgorICAgICAg
ICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKTsKKyNpZiBDUFUo
WDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09
IGhhc1NpYjIpKSB7CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlID09IGhhc1NpYikg
eworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlz
cDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHB1dEJ5dGVV
bmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UpOworICAgICAgICAg
ICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9k
Uk1fZGlzcDMyKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3VsZCBiZSBp
bnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAmIHB1dCB0
aGUgYmFzZSBpbiB0aGVyZS4KKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICgo
YmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7CisjZWxzZQorICAgICAgICAg
ICAgICAgIGlmIChiYXNlID09IGhhc1NpYikgeworI2VuZGlmCisgICAgICAgICAgICAgICAgICAg
IHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UsIG5vSW5kZXgsIDApOwor
ICAgICAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURp
c3AzMiwgcmVnLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0SW50VW5jaGVja2VkKG9m
ZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm9JbmRleCk7CisKKyNpZiBD
UFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFz
ZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCisjZWxzZQorICAgICAgICAgICAgICAgIGlmICghb2Zm
c2V0ICYmIChiYXNlICE9IG5vQmFzZSkpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgcHV0
TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFz
ZSwgaW5kZXgsIHNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZChv
ZmZzZXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1
dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UsIGluZGV4LCBzY2FsZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworI2lmICFDUFUoWDg2XzY0KQorICAgICAgICAgICAgQUxX
QVlTX0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3Mp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlO
b0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1vcnlEaXNwMzIhCisgICAgICAgICAgICAgICAg
cHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgbm9CYXNlKTsKKyAgICAgICAgICAgICAg
ICBwdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihhZGRyZXNzKSk7Cisg
ICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfTsKKwogICAgICAgICAvLyBXb3JkLXNpemVk
IG9wZXJhbmRzIC8gbm8gb3BlcmFuZCBpbnN0cnVjdGlvbiBmb3JtYXR0ZXJzLgogICAgICAgICAv
LwogICAgICAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgb3Bjb2RlLCB0aGUgZm9sbG93aW5nIG9w
ZXJhbmQgcGVybXV0YXRpb25zIGFyZSBzdXBwb3J0ZWQ6CkBAIC0yODg5LDEzNiArMzA4NSwxMzYg
QEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bj
b2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0
cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklE
IHJlZykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5z
dHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZCgwLCAwLCByZWcpOwot
ICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykp
OworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAg
ICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQoMCwgMCwgcmVnKTsKKyAgICAgICAgICAgIHdy
aXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3KSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBS
ZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywg
MCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwot
ICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIExvY2FsQnVm
ZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElm
TmVlZGVkKHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwg
aW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAg
ICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5w
dXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJh
c2UsIG9mZnNldCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwor
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAg
IHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIG9uZUJ5dGVPcF9kaXNwMzIoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTV9kaXNwMzIocmVnLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDMyKHJlZywgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgdm9pZCBvbmVCeXRlT3BfZGlzcDgoT25lQnl0ZU9wY29kZUlE
IG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwot
ICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RS
TV9kaXNwOChyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRl
ciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChy
ZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTV9kaXNwOChyZWcsIGJhc2UsIG9mZnNl
dCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJl
U3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChy
ZWcsIGluZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVy
KTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCBpbmRleCwgYmFzZSk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAg
ICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwog
ICAgICAgICB9CiAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICAg
ICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXpl
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAg
ICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGFkZHJl
c3MpOwogICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VT
Q0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwg
aW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
ZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5l
ZWRlZChyZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
T1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgICAg
ICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVy
LmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBy
bSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0g
ICAgICAgICAgICBlbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRl
cihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwg
YmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NB
UEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVn
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNl
dCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1
Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIGluZGV4LCBiYXNl
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBF
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAg
ICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAg
ICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAg
IHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlN
b2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAjaWYg
IUNQVShYODZfNjQpCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNv
ZGUsIGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RS
TShyZWcsIGFkZHJlc3MpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VT
Q0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAg
ICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0ZU9wY29kZUlEIHR3b0J5dGVQ
cmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSkKICAgICAgICAgewotICAgICAgICAgICAg
bV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KHR3b0J5dGVQcmVmaXgpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0ZU9wY29k
ZUlEIHR3b0J5dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVn
aXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2Uo
bWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAs
IHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVND
QVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZp
eCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAg
ICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAgICAgTG9jYWxCdWZmZXJX
cml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVk
ZWQocmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0
ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwor
ICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBU
aHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IGRp
c3BsYWNlbWVudCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2Uo
bWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAs
IGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9F
U0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29CeXRlUHJl
Zml4KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAg
ICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgZGlzcGxhY2VtZW50KTsKKyAgICAgICAg
ICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFz
ZSwgZGlzcGxhY2VtZW50KTsKICAgICAgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTMwMzAs
ODMgKzMyMjYsODMgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5
dGVPcGNvZGVJRCBvcGNvZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3Vy
ZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VygwLCAwLCAw
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAg
ICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3
cml0ZXIuZW1pdFJleFcoMCwgMCwgMCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVC
eXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIHJlZykKICAgICAgICAgewotICAgICAgICAg
ICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAg
IGVtaXRSZXhXKDAsIDAsIHJlZyk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSArIChyZWcgJiA3KSk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKDAsIDAsIHJlZyk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleFcocmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAg
ICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRl
ci5lbWl0UmV4VyhyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjQoT25lQnl0ZU9wY29kZUlEIG9w
Y29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAg
ICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBvbmVCeXRlT3A2NF9kaXNwMzIoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVn
aXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFco
cmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3AzMihyZWcsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAg
ICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIu
cHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJN
X2Rpc3AzMihyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgb25lQnl0ZU9wNjRfZGlzcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJl
eFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3A4KHJlZywgYmFzZSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9k
Uk1fZGlzcDgocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBv
bmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewot
ICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAg
ICAgICAgICAgIGVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZm
ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVn
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywg
aW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0
ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAg
ICAgICAgIGVtaXRSZXhXKHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsK
KyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAg
ICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJl
Zywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6
ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0o
cmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVy
KG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwor
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3
cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25T
aXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5
TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBMb2Nh
bEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhXKHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0zMTM3LDUyICszMzMz
LDUyIEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJ
RCBvcGNvZGUsIEdyb3VwT3Bjb2RlSUQgZ3JvdXBPcCwgUmVnaXN0ZXJJRCBybSkKICAgICAgICAg
ewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsK
LSAgICAgICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocm0pLCAwLCAwLCBybSk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAg
ICAgICByZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVy
V3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5
dGVSZWdSZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShn
cm91cE9wLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25lQnl0
ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAg
ICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWly
ZXNSZXgocm0pLCByZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAg
ICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAg
d3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBybSksIHJlZywgMCwgcm0p
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVy
SUQgYmFzZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5z
dXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZihieXRl
UmVnUmVxdWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgoYmFzZSksIHJlZywgMCwg
YmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0g
ICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBM
b2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVt
aXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3
cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNp
emUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8IHJl
Z1JlcXVpcmVzUmV4KGluZGV4KSB8fCByZWdSZXF1aXJlc1JleChiYXNlKSwgcmVnLCBpbmRleCwg
YmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0g
ICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAg
ICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVp
cmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0
ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1v
ZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgcmVn
LCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChyZWcpfGJ5dGVSZWdSZXF1aXJlc1JleChybSksIHJlZywgMCwgcm0pOwotICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAg
cmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1
aXJlc1JleChyZWcsIHJtKSwgcmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywg
cm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJ
RCBvcGNvZGUsIEdyb3VwT3Bjb2RlSUQgZ3JvdXBPcCwgUmVnaXN0ZXJJRCBybSkKICAgICAgICAg
ewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsK
LSAgICAgICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocm0pLCAwLCAwLCBybSk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAg
ICAgICByZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVy
V3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5
dGVSZWdSZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3Jv
dXBPcCwgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSW1tZWRpYXRlczoKQEAgLTMyMjUs
MTc3ICszNDIxLDYgQEAgcHJpdmF0ZToKIAogICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgp
IHsgcmV0dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KIAotICAgIHByaXZhdGU6Ci0KLSAg
ICAgICAgLy8gSW50ZXJuYWxzOyBNb2RSbSBhbmQgUkVYIGZvcm1hdHRlcnMuCi0KLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9CYXNlID0gWDg2UmVnaXN0ZXJzOjplYnA7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYiA9IFg4NlJlZ2lzdGVyczo6ZXNwOwot
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0luZGV4ID0gWDg2UmVnaXN0ZXJzOjpl
c3A7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9C
YXNlMiA9IFg4NlJlZ2lzdGVyczo6cjEzOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBoYXNTaWIyID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0KLSAgICAgICAgLy8gUmVnaXN0ZXJzIHI4
ICYgYWJvdmUgcmVxdWlyZSBhIFJFWCBwcmVmaXhlLgotICAgICAgICBpbmxpbmUgYm9vbCByZWdS
ZXF1aXJlc1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHJlZyA+
PSBYODZSZWdpc3RlcnM6OnI4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEJ5dGUgb3BlcmFu
ZCByZWdpc3RlciBzcGwgJiBhYm92ZSByZXF1aXJlIGEgUkVYIHByZWZpeCAodG8gcHJldmVudCB0
aGUgJ0gnIHJlZ2lzdGVycyBiZSBhY2Nlc3NlZCkuCi0gICAgICAgIGlubGluZSBib29sIGJ5dGVS
ZWdSZXF1aXJlc1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHJl
ZyA+PSBYODZSZWdpc3RlcnM6OmVzcCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JtYXQg
YSBSRVggcHJlZml4IGJ5dGUuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXgoYm9vbCB3LCBp
bnQgciwgaW50IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQociA+PSAw
KTsKLSAgICAgICAgICAgIEFTU0VSVCh4ID49IDApOwotICAgICAgICAgICAgQVNTRVJUKGIgPj0g
MCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKFBSRV9SRVggfCAoKGlu
dCl3IDw8IDMpIHwgKChyPj4zKTw8MikgfCAoKHg+PjMpPDwxKSB8IChiPj4zKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBVc2VkIHRvIHBsYW50IGEgUkVYIGJ5dGUgd2l0aCBSRVgudyBzZXQg
KGZvciA2NC1iaXQgb3BlcmF0aW9ucykuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhXKGlu
dCByLCBpbnQgeCwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRSZXgodHJ1ZSwg
ciwgeCwgYik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2VkIGZvciBvcGVyYXRpb25zIHdp
dGggYnl0ZSBvcGVyYW5kcyAtIHVzZSBieXRlUmVnUmVxdWlyZXNSZXgoKSB0byBjaGVjayByZWdp
c3RlciBvcGVyYW5kcywKLSAgICAgICAgLy8gcmVnUmVxdWlyZXNSZXgoKSB0byBjaGVjayBvdGhl
ciByZWdpc3RlcnMgKGkuZS4gYWRkcmVzcyBiYXNlICYgaW5kZXgpLgotICAgICAgICBpbmxpbmUg
dm9pZCBlbWl0UmV4SWYoYm9vbCBjb25kaXRpb24sIGludCByLCBpbnQgeCwgaW50IGIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChjb25kaXRpb24pIGVtaXRSZXgoZmFsc2UsIHIsIHgsIGIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXNlZCBmb3Igd29yZCBzaXplZCBvcGVyYXRpb25z
LCB3aWxsIHBsYW50IGEgUkVYIHByZWZpeCBpZiBuZWNlc3NhcnkgKGlmIGFueSByZWdpc3RlciBp
cyByOCBvciBhYm92ZSkuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhJZk5lZWRlZChpbnQg
ciwgaW50IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0UmV4SWYocmVnUmVx
dWlyZXNSZXgocikgfHwgcmVnUmVxdWlyZXNSZXgoeCkgfHwgcmVnUmVxdWlyZXNSZXgoYiksIHIs
IHgsIGIpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvLyBObyBSRVggcHJlZml4IGJ5dGVz
IG9uIDMyLWJpdCB4ODYuCi0gICAgICAgIGlubGluZSBib29sIHJlZ1JlcXVpcmVzUmV4KGludCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5lIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4
KGludCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleElmKGJv
b2wsIGludCwgaW50LCBpbnQpIHt9Ci0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhJZk5lZWRl
ZChpbnQsIGludCwgaW50KSB7fQotI2VuZGlmCi0KLSAgICAgICAgdm9pZCBwdXRNb2RSbShNb2RS
bU1vZGUgbW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCgobW9kZSA8PCA2KSB8ICgocmVnICYgNykgPDwg
MykgfCAocm0gJiA3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHB1dE1vZFJtU2liKE1v
ZFJtTW9kZSBtb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1vZGUgIT0gTW9kUm1S
ZWdpc3Rlcik7Ci0KLSAgICAgICAgICAgIHB1dE1vZFJtKG1vZGUsIHJlZywgaGFzU2liKTsKLSAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoKHNjYWxlIDw8IDYpIHwgKChpbmRl
eCAmIDcpIDw8IDMpIHwgKGJhc2UgJiA3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJl
Z2lzdGVyTW9kUk0oaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcHV0TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gQSBiYXNlIG9mIGVzcCBvciByMTIgd291bGQgYmUg
aW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2liIHdpdGggbm8gaW5kZXggJiBwdXQg
dGhlIGJhc2UgaW4gdGhlcmUuCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGlmICgoYmFz
ZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7Ci0jZWxzZQotICAgICAgICAgICAg
aWYgKGJhc2UgPT0gaGFzU2liKSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBpZiAoIW9mZnNl
dCkgLy8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgYmFzZSBpcyBub0Jhc2UsIHNpbmNlIHdlIGtu
b3cgaXQgaXMgaGFzU2liIQotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1l
bW9yeU5vRGlzcCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihN
b2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgICAg
IGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCi0j
ZWxzZQotICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkpCi0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJl
ZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
b2Zmc2V0KSkgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4
LCByZWcsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk1f
ZGlzcDgoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3VsZCBiZSBpbnRlcnByZXRlZCBh
cyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAmIHB1dCB0aGUgYmFzZSBpbiB0
aGVyZS4KLSAgICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKTsK
LSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgaWYgKChiYXNlID09IGhhc1NpYikgfHwgKGJh
c2UgPT0gaGFzU2liMikpIHsKLSNlbHNlCi0gICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNTaWIp
IHsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgs
IHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UpOwotICAgICAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDMyKGludCByZWcsIFJlZ2lzdGVy
SUQgYmFzZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQSBiYXNlIG9m
IGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2li
IHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCi0jaWYgQ1BVKFg4Nl82NCkK
LSAgICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7
Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGJhc2UgPT0gaGFzU2liKSB7Ci0jZW5kaWYKLSAgICAg
ICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0lu
ZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQob2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1N
ZW1vcnlEaXNwMzIsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0SW50
VW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAKLSAgICAg
ICAgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGluZGV4ICE9IG5vSW5kZXgpOwotCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGlm
ICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCi0jZWxz
ZQotICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNlKSkKLSNlbmRpZgot
ICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5Tm9EaXNwLCByZWcsIGJhc2Us
IGluZGV4LCBzY2FsZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihvZmZzZXQpKSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNw
OCwgcmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOwotICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSwgaW5kZXgsIHNj
YWxlKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0jaWYgIUNQVShYODZfNjQpCi0gICAgICAgIHZv
aWQgbWVtb3J5TW9kUk0oaW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlOb0Rpc3AgbWVhbnMgbm9CYXNlICsg
TW9kUm1NZW1vcnlEaXNwMzIhCi0gICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeU5vRGlz
cCwgcmVnLCBub0Jhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oYWRkcmVzcykpOwotICAgICAgICB9Ci0jZW5kaWYKLQog
ICAgIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9m
b3JtYXR0ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274523</attachid>
            <date>2016-03-19 14:27:15 -0700</date>
            <delta_ts>2016-03-21 15:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155683-20160319142715.patch</filename>
            <type>text/plain</type>
            <size>43747</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YjUxMmI5NjI1YmM3OWNjYzQ2ZGZmOTY1MzM2ZWFmYjJlZWRlMzViLi43MmI4NGNkZTczNmIzZTIy
ZTkzNzI3N2JmYjRkNDI4ZTkyOGUyYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTYtMDMtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHV0IHRoZSB4ODYgQXNzZW1ibGVyIG9uIGEgYmluYXJ5
IGRpZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBNYWNyb0Fzc2VtYmxlcnMgYXJlIGhlYXZpbHkgaW5saW5lZC4gVGhpcyBpcyB1bmZvcnR1bmF0
ZWx5CisgICAgICAgIGltcG9ydGFudCBmb3IgYmFzZWxpbmUgSklUIHdoZXJlIG1hbnkgYnJhbmNo
ZXMgY2FuIGJlIGVsaW1pbmF0ZWQKKyAgICAgICAgYXQgY29tcGlsZSB0aW1lLgorCisgICAgICAg
IFRoaXMgaW5saW5pbmcgY2F1c2VzIGEgbG90IG9mIGJpbmFyeSBibG9hdC4gVGhlIHBoYXNlcwor
ICAgICAgICBsb3dlcmluZyB0byBBU00gYXJlIG1hc3NpdmVseSBsYXJnZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcHJvdmVzIHRoZSBzaXR1YXRpb24gYSBiaXQgZm9yIHg4NiB0aHJvdWdoCisg
ICAgICAgIG1hbnkgc21hbGwgaW1wcm92ZW1lbnRzOgorCisgICAgICAgIC1FdmVyeSBpbnN0cnVj
dGlvbiBzdGFydHMgd2l0aCBlbnN1cmVTcGFjZSgpLiBUaGUgc2xvdworICAgICAgICAgcGF0aCBy
ZWFsbG9jIHRoZSBidWZmZXIuCisgICAgICAgICBGcm9tIHRoYXQgc2xvdyBwYXRoLCBvbmx5IGZh
c3RSZWFsbG9jKCkgd2FzIGEgZnVuY3Rpb24KKyAgICAgICAgIGNhbGwuIFdoYXQgaXMgYXJvdW5k
IGRvZXMgbm90IG5lZWQgdG8gYmUgZmFzdCwgSSBtb3ZlZAorICAgICAgICAgdGhlIHdob2xlIGdy
b3coKSBmdW5jdGlvbiBvdXQgb2YgbGluZSBmb3IgdGhvc2UgY2FzZXMuCisKKyAgICAgICAgLVdo
ZW4gdGVzdGluZyBtdWx0aXBsZSByZWdpc3RlcnMgZm9yIFJFWCByZXF1aXJlbWVudHMsCisgICAg
ICAgICB3ZSBoYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgICAgICBieXRlUmVnUmVx
dWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0pCisgICAgICAgICAgICAgcmVn
UmVxdWlyZXNSZXgoaW5kZXgpIHx8IHJlZ1JlcXVpcmVzUmV4KGJhc2UpCisgICAgICAgICBUaG9z
ZSB3ZXJlIHByb2R1Y2luZyBtdWx0aXBsZSB0ZXN0LWFuZC1icmFuY2guIFRob3NlIGJyYW5jaGVz
CisgICAgICAgICBhcmUgZWZmZWN0aXZlbHkgcmFuZG9tIHNvIHdlIGRvbid0IGhhdmUgdG8gY2Fy
ZSBhYm91dCBpbmRpdmlkdWFsCisgICAgICAgICBicmFuY2hlcyBiZWluZyBwcmVkaWN0YWJsZS4K
KworICAgICAgICAgVGhlIG5ldyBjb2RlIGVmZmVjdGl2ZWx5IGRvZXM6CisgICAgICAgICAgICAg
Ynl0ZVJlZ1JlcXVpcmVzUmV4KHJlZyB8IHJtKQorICAgICAgICAgICAgIHJlZ1JlcXVpcmVzUmV4
KGluZGV4IHwgYmFzZSkKKworICAgICAgICAtQ2hhbmdlICJNb2RSbU1vZGUiIHRvIGhhdmUgdGhl
IHZhbHVlIHdlIGNhbiBPUiBkaXJlY3RseQorICAgICAgICAgdG8gdGhlIGdlbmVyYXRlZCBNb2RS
bS4KKyAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBNb2RSTSBjb2RlIGlz
IHNvIGxhcmdlCisgICAgICAgICB0aGF0IGlzIGdvZXMgb3V0IG9mIGxpbmU7CisKKyAgICAgICAg
LUZpbmFsbHksIGEgYmlnIGNoYW5nZSBvbiBob3cgd2Ugd3JpdGUgdG8gdGhlIEFzc2VtYmxlckJ1
ZmZlci4KKworICAgICAgICAgUHJldmlvdXNseSwgaW5zdHJ1Y3Rpb25zIHdlcmUgd3JpdHRlbiBi
eXRlIGJ5IGJ5dGUgaW50bworICAgICAgICAgdGhlIGFzc2VtYmxlciBidWZmZXIgb2YgdGhlIE1h
Y3JvQXNzZW1ibGVyLgorCisgICAgICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMgdGhlIGNv
bXBpbGVyIGNhbm5vdCBwcm92ZSB0aGF0CisgICAgICAgICB0aGUgYnVmZmVyIHBvaW50ZXIgYW5k
IHRoZSBBc3NlbWJsZXJCdWZmZXIgYXJlIG5vdCBwb2ludGluZworICAgICAgICAgdG8gdGhlIHNh
bWUgbWVtb3J5LgorCisgICAgICAgICBCZWNhdXNlIG9mIHRoYXQsIGJlZm9yZSBhbnkgd3JpdGUs
IGFsbCB0aGUgbG9jYWwgcmVnaXN0ZXIKKyAgICAgICAgIHdlcmUgcHVzaGVkIGJhY2sgdG8gdGhl
IEFzc2VtYmxlckJ1ZmZlciBtZW1vcnksIHRoZW4gZXZlcnl0aGluZworICAgICAgICAgd2FzIHJl
YWQgYmFjayBhZnRlciB0aGUgd3JpdGUgdG8gY29tcHV0ZSB0aGUgbmV4dCB3cml0ZS4KKworICAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSAicmVzdHJpY3QiIGtleXdvcmQgYW5kIHdyYXBw
ZXIgdHlwZXMKKyAgICAgICAgIHRvIGhlbHAgQ2xhbmcgd2l0aCB0aGF0IGJ1dCBub3RoaW5nIHdv
cmtlZC4KKworICAgICAgICAgVGhlIGN1cnJlbnQgc29sdXRpb24gaXMgdG8ga2VlcCBhIGxvY2Fs
IGNvcHkgb2YgdGhlIGluZGV4CisgICAgICAgICBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGluIHRo
ZSBzY29wZSBvZiBlYWNoIGluc3RydWN0aW9uLgorICAgICAgICAgVGhhdCBpcyBkb25lIGJ5IEFz
c2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIuCisKKyAgICAgICAgIFNpbmNlIExvY2FsQnVmZmVy
V3JpdGVyIG9ubHkgZXhpc3RzIGxvY2FsbHksIGl0IHN0YXlzIGluCisgICAgICAgICByZWdpc3Rl
ciBhbmQgd2UgZG9uJ3QgaGF2ZSBhbGwgdGhlIG1lbW9yeSBjaHVybiBiZXR3ZWVuCisgICAgICAg
ICBlYWNoIGJ5dGUgd3JpdGluZy4gVGhpcyBhbHNvIGFsbG93cyBjbGFuZyB0byBjb21iaW5lCisg
ICAgICAgICBvYnZpb3VzIGNhc2VzIHNpbmNlIHRoZXJlIGFyZSBubyBsb25nZXIgb2JzZXJ2YWJs
ZSBzaWRlCisgICAgICAgICBlZmZlY3RzIGJldHdlZW4gYnl0ZXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZWR1Y2VzIHRoZSBiaW5hcnkgc2l6ZSBieSA2NmsuIEl0IGlzIGEgc21hbGwgCisgICAg
ICAgIHNwZWVkdXAgb24gU3Vuc3BpZGVyLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OmVuc3VyZVNwYWNlKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6TG9jYWxXcml0ZXIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjp+TG9jYWxXcml0
ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpwdXRCeXRl
VW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6
cHV0U2hvcnRVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2Fs
V3JpdGVyOjpwdXRJbnRVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6
OkxvY2FsV3JpdGVyOjpwdXRJbnQ2NFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxl
ckJ1ZmZlcjo6TG9jYWxXcml0ZXI6OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibGVyQnVmZmVyOjpwdXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxl
ckJ1ZmZlcjo6b3V0T2ZMaW5lR3Jvdyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpieXRlUmVn
UmVxdWlyZXNSZXgpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjpyZWdSZXF1aXJlc1JleCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpMb2NhbEJ1ZmZlcldy
aXRlcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0
ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjplbWl0UmV4KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhX
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6
TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhJZik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjplbWl0UmV4SWZO
ZWVkZWQpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0
dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cHV0TW9kUm0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cHV0TW9k
Um1TaWIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0
dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cmVnaXN0ZXJNb2RSTSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpt
ZW1vcnlNb2RSTSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25G
b3JtYXR0ZXI6Om9uZUJ5dGVPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcF9kaXNwMzIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpvbmVC
eXRlT3BfZGlzcDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nklu
c3RydWN0aW9uRm9ybWF0dGVyOjp0d29CeXRlT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0aHJlZUJ5dGVPcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6
Om9uZUJ5dGVPcDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wNjRfZGlzcDMyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9w
NjRfZGlzcDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3Ry
dWN0aW9uRm9ybWF0dGVyOjp0d29CeXRlT3A2NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcDgpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0
d29CeXRlT3A4KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OmVtaXRSZXhXKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJl
eElmKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlv
bkZvcm1hdHRlcjo6ZW1pdFJleElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6cHV0TW9kUm0pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpwdXRN
b2RSbVNpYik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1
Y3Rpb25Gb3JtYXR0ZXI6OnJlZ2lzdGVyTW9kUk0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpY
ODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjptZW1vcnlNb2RSTSk6IERlbGV0
ZWQuCisKIDIwMTYtMDMtMTcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gTWFrZSBDU0UncyBJbXB1cmVEYXRhIGZhc3RlciB3aGVuIGRlYWxp
bmcgd2l0aCBsYXJnZSBibG9ja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fzc2VtYmxlckJ1ZmZlci5oCmluZGV4IGQ5NTQ2OTMxZDg1NTA4MjdhMzQ1ODkzN2YxN2Zh
NzgzYjBjNjI5ZjAuLmEyNzg2MDViNTRiM2U3OWM5ZGQ2NjRlZmVlYzU4OGExMzYzN2U3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aApAQCAtMTI5LDcgKzEyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVuc3Vy
ZVNwYWNlKGludCBzcGFjZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFpc0F2YWlsYWJs
ZShzcGFjZSkpCi0gICAgICAgICAgICAgICAgZ3JvdygpOworICAgICAgICAgICAgICAgIG91dE9m
TGluZUdyb3coKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNBbGlnbmVkKGludCBhbGln
bm1lbnQpIGNvbnN0CkBAIC0xNjUsMTMgKzE2NSw2MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBBc3NlbWJsZXJEYXRhIHJlbGVhc2VBc3NlbWJsZXJEYXRhKCkgeyByZXR1cm4gV1RGTW92
ZShtX3N0b3JhZ2UpOyB9CiAKKyAgICAgICAgLy8gTG9jYWxXcml0ZXIgaXMgYSB0cmljayB0byBr
ZWVwIHRoZSBzdG9yYWdlIGJ1ZmZlciBhbmQgdGhlIGluZGV4CisgICAgICAgIC8vIGluIG1lbW9y
eSB3aGlsZSBpc3N1aW5nIG11bHRpcGxlIFN0b3Jlcy4KKyAgICAgICAgLy8gSXQgaXMgY3JlYXRl
ZCBpbiBhIGJsb2NrIHNjb3BlIGFuZCBpdHMgYXR0cmlidXRlIGNhbiBzdGF5IGxpdmUKKyAgICAg
ICAgLy8gYmV0d2VlbiB3cml0ZXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIExvY2FsV3JpdGVy
ICpDQU5OT1QqIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgYWNjZXNzIHRvIEFzc2VtYmxlckJ1
ZmZlci4KKyAgICAgICAgLy8gQXNzZW1ibGVyQnVmZmVyIGNhbm5vdCBiZSB1c2VkIHVudGlsIGl0
cyBMb2NhbFdyaXR0ZXIgZ29lcyBvdXQgb2Ygc2NvcGUuCisgICAgICAgIGNsYXNzIExvY2FsV3Jp
dGVyIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgTG9jYWxXcml0ZXIoQXNzZW1ibGVy
QnVmZmVyJiBidWZmZXIsIGludCByZXF1aXJlZFNwYWNlKQorICAgICAgICAgICAgICAgIDogbV9i
dWZmZXIoYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5lbnN1
cmVTcGFjZShyZXF1aXJlZFNwYWNlKTsKKyAgICAgICAgICAgICAgICBtX3N0b3JyYWdlQnVmZmVy
ID0gYnVmZmVyLm1fc3RvcmFnZS5idWZmZXIoKTsKKyAgICAgICAgICAgICAgICBtX2luZGV4ID0g
YnVmZmVyLm1faW5kZXg7CisjaWYgIWRlZmluZWQoTkRFQlVHKQorICAgICAgICAgICAgICAgIG1f
aW5pdGlhbEluZGV4ID0gbV9pbmRleDsKKyNlbmRpZgorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB+TG9jYWxXcml0ZXIoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VS
VChtX2J1ZmZlci5tX2luZGV4ID09IG1faW5pdGlhbEluZGV4KTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQobV9zdG9ycmFnZUJ1ZmZlciA9PSBtX2J1ZmZlci5tX3N0b3JhZ2UuYnVmZmVyKCkpOwor
ICAgICAgICAgICAgICAgIG1fYnVmZmVyLm1faW5kZXggPSBtX2luZGV4OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1
dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQorICAgICAgICAgICAgdm9pZCBwdXRTaG9ydFVu
Y2hlY2tlZChpbnQxNl90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQor
ICAgICAgICAgICAgdm9pZCBwdXRJbnRVbmNoZWNrZWQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRl
Z3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAgICAgICAgIHZvaWQgcHV0SW50NjRVbmNoZWNr
ZWQoaW50NjRfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAg
ICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4K
KyAgICAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2luZGV4ICsgc2l6ZW9m
KEludGVncmFsVHlwZSkgPD0gbV9idWZmZXIubV9zdG9yYWdlLmNhcGFjaXR5KCkpOworICAgICAg
ICAgICAgICAgICpyZWludGVycHJldF9jYXN0X3B0cjxJbnRlZ3JhbFR5cGUqPihtX3N0b3JyYWdl
QnVmZmVyICsgbV9pbmRleCkgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICBtX2luZGV4ICs9IHNp
emVvZihJbnRlZ3JhbFR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXNzZW1ibGVy
QnVmZmVyJiBtX2J1ZmZlcjsKKyAgICAgICAgICAgIGNoYXIqIG1fc3RvcnJhZ2VCdWZmZXI7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBtX2luZGV4OworI2lmICFkZWZpbmVkKE5ERUJVRykKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1faW5pdGlhbEluZGV4OworI2VuZGlmCisgICAgICAgIH07CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4KICAg
ICAgICAgdm9pZCBwdXRJbnRlZ3JhbChJbnRlZ3JhbFR5cGUgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5kZXggKyBzaXplb2YoSW50ZWdyYWxU
eXBlKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShuZXh0SW5kZXggPiBtX3N0b3JhZ2UuY2Fw
YWNpdHkoKSkpCi0gICAgICAgICAgICAgICAgZ3JvdygpOworICAgICAgICAgICAgICAgIG91dE9m
TGluZUdyb3coKTsKICAgICAgICAgICAgIEFTU0VSVChpc0F2YWlsYWJsZShzaXplb2YoSW50ZWdy
YWxUeXBlKSkpOwogICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPEludGVncmFsVHlw
ZSo+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgpID0gdmFsdWU7CiAgICAgICAgICAgICBt
X2luZGV4ID0gbmV4dEluZGV4OwpAQCAtMTk5LDcgKzI0NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIG1fc3RvcmFnZS5ncm93KGV4dHJhQ2FwYWNpdHkpOwogICAgICAgICB9CiAK
KyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgb3V0T2ZMaW5lR3JvdygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fc3RvcmFnZS5ncm93KCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBMb2NhbFdyaXRlcjsKKwogICAgICAgICBBc3NlbWJsZXJEYXRhIG1fc3Rv
cmFnZTsKICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CmluZGV4IDQwZTQ4ZDAxMzI1ZWU1MzlmZjY5N2NkM2M5N2RiOTJlM2NhMGIwMGQuLjY4Y2I4MDkz
YTBhNTllMzRjYWI1ZjMzMDNhNjE3Mjc2YThlMDM3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAg
LTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9hc3NlbWJsZXIu
bGVhbF9tcihpbmRleC5vZmZzZXQsIGluZGV4LmJhc2UsIGluZGV4LmluZGV4LCBpbmRleC5zY2Fs
ZSwgZGVzdCk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9ycihzcmMs
IGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKaW5kZXggODU3ZDIyYmE2MjQ2NDc1MWZjNWRiZTg1ODc4ZjEyZjJmNjAzZmE4OS4uNDlmZDNi
MmUyY2FkNTI5ZTYzMzJlODZjNTk4NTk0YjU3M2ZjMGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yODUyLDE2ICsyODUyLDE0IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgY2xhc3MgWDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXIgewot
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4SW5zdHJ1Y3Rpb25TaXplID0gMTY7CiAKICAg
ICBwdWJsaWM6Ci0KICAgICAgICAgZW51bSBNb2RSbU1vZGUgewotICAgICAgICAgICAgTW9kUm1N
ZW1vcnlOb0Rpc3AsCi0gICAgICAgICAgICBNb2RSbU1lbW9yeURpc3A4LAotICAgICAgICAgICAg
TW9kUm1NZW1vcnlEaXNwMzIsCi0gICAgICAgICAgICBNb2RSbVJlZ2lzdGVyLAorICAgICAgICAg
ICAgTW9kUm1NZW1vcnlOb0Rpc3AgPSAwLAorICAgICAgICAgICAgTW9kUm1NZW1vcnlEaXNwOCA9
IDEgPDwgNiwKKyAgICAgICAgICAgIE1vZFJtTWVtb3J5RGlzcDMyID0gMiA8PCA2LAorICAgICAg
ICAgICAgTW9kUm1SZWdpc3RlciA9IDMgPDwgNiwKICAgICAgICAgfTsKIAogICAgICAgICAvLyBM
ZWdhY3kgcHJlZml4IGJ5dGVzOgpAQCAtMjg3Myw2ICsyODcxLDIwNSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZShwcmUpOwogICAgICAgICB9CiAKKyNpZiBDUFUoWDg2
XzY0KQorICAgICAgICAvLyBCeXRlIG9wZXJhbmQgcmVnaXN0ZXIgc3BsICYgYWJvdmUgcmVxdWly
ZSBhIFJFWCBwcmVmaXggKHRvIHByZXZlbnQgdGhlICdIJyByZWdpc3RlcnMgYmUgYWNjZXNzZWQp
LgorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCByZWcp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoWDg2UmVnaXN0ZXJzOjplc3Ag
PT0gNCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsKKyAgICAgICAgICAg
IHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6ZXNwKTsKKyAgICAgICAgfQorICAgICAgICBp
bmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVSZWdSZXF1aXJlc1JleChhIHwgYik7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlcnMgcjggJiBhYm92ZSByZXF1aXJlIGEgUkVYIHBy
ZWZpeGUuCisgICAgICAgIGlubGluZSBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgcmVn
KQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KFg4NlJlZ2lzdGVyczo6cjgg
PT0gOCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsKKyAgICAgICAgICAg
IHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6cjgpOworICAgICAgICB9CisgICAgICAgIGlu
bGluZSBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgYSwgaW50IGIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiByZWdSZXF1aXJlc1JleChhIHwgYik7CisgICAgICAgIH0KKyAg
ICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYiwgaW50
IGMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWdSZXF1aXJlc1JleChhIHwgYiB8
IGMpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJl
Z1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgaW5saW5lIHN0YXRp
YyBib29sIGJ5dGVSZWdSZXF1aXJlc1JleChpbnQsIGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCwgaW50
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgcmVnUmVxdWly
ZXNSZXgoaW50LCBpbnQsIGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCisgICAgICAg
IGNsYXNzIExvY2FsQnVmZmVyV3JpdGVyIDogcHVibGljIEFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxX
cml0ZXIgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlcihB
c3NlbWJsZXJCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgICAgICAgICA6IEFzc2VtYmxlckJ1ZmZl
cjo6TG9jYWxXcml0ZXIoYnVmZmVyLCBtYXhJbnN0cnVjdGlvblNpemUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEludGVybmFsczsgTW9kUm0gYW5kIFJF
WCBmb3JtYXR0ZXJzLgorCisgICAgICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0Jh
c2UgPSBYODZSZWdpc3RlcnM6OmVicDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGhhc1NpYiA9IFg4NlJlZ2lzdGVyczo6ZXNwOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgbm9JbmRleCA9IFg4NlJlZ2lzdGVyczo6ZXNwOworCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG5vQmFzZTIgPSBYODZSZWdp
c3RlcnM6OnIxMzsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYjIg
PSBYODZSZWdpc3RlcnM6OnIxMjsKKworICAgICAgICAgICAgLy8gRm9ybWF0IGEgUkVYIHByZWZp
eCBieXRlLgorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGVtaXRSZXgoYm9vbCB3LCBp
bnQgciwgaW50IHgsIGludCBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VS
VChyID49IDApOworICAgICAgICAgICAgICAgIEFTU0VSVCh4ID49IDApOworICAgICAgICAgICAg
ICAgIEFTU0VSVChiID49IDApOworICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQoUFJF
X1JFWCB8ICgoaW50KXcgPDwgMykgfCAoKHI+PjMpPDwyKSB8ICgoeD4+Myk8PDEpIHwgKGI+PjMp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVXNlZCB0byBwbGFudCBhIFJFWCBi
eXRlIHdpdGggUkVYLncgc2V0IChmb3IgNjQtYml0IG9wZXJhdGlvbnMpLgorICAgICAgICAgICAg
QUxXQVlTX0lOTElORSB2b2lkIGVtaXRSZXhXKGludCByLCBpbnQgeCwgaW50IGIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZW1pdFJleCh0cnVlLCByLCB4LCBiKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVXNlZCBmb3Igb3BlcmF0aW9ucyB3aXRoIGJ5dGUgb3Bl
cmFuZHMgLSB1c2UgYnl0ZVJlZ1JlcXVpcmVzUmV4KCkgdG8gY2hlY2sgcmVnaXN0ZXIgb3BlcmFu
ZHMsCisgICAgICAgICAgICAvLyByZWdSZXF1aXJlc1JleCgpIHRvIGNoZWNrIG90aGVyIHJlZ2lz
dGVycyAoaS5lLiBhZGRyZXNzIGJhc2UgJiBpbmRleCkuCisgICAgICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZW1pdFJleElmKGJvb2wgY29uZGl0aW9uLCBpbnQgciwgaW50IHgsIGludCBiKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24pCisgICAgICAgICAg
ICAgICAgICAgIGVtaXRSZXgoZmFsc2UsIHIsIHgsIGIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBVc2VkIGZvciB3b3JkIHNpemVkIG9wZXJhdGlvbnMsIHdpbGwgcGxhbnQgYSBS
RVggcHJlZml4IGlmIG5lY2Vzc2FyeSAoaWYgYW55IHJlZ2lzdGVyIGlzIHI4IG9yIGFib3ZlKS4K
KyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbWl0UmV4SWZOZWVkZWQoaW50IHIsIGlu
dCB4LCBpbnQgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0UmV4SWYocmVn
UmVxdWlyZXNSZXgociwgeCwgYiksIHIsIHgsIGIpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgIC8vIE5vIFJFWCBwcmVmaXggYnl0ZXMgb24gMzItYml0IHg4Ni4KKyAgICAgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbWl0UmV4SWYoYm9vbCwgaW50LCBpbnQsIGludCkgeyB9
CisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZW1pdFJleElmTmVlZGVkKGludCwgaW50
LCBpbnQpIHsgfQorI2VuZGlmCisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRN
b2RSbShNb2RSbU1vZGUgbW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG1vZGUgfCAoKHJlZyAmIDcpIDw8
IDMpIHwgKHJtICYgNykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcHV0TW9kUm1TaWIoTW9kUm1Nb2RlIG1vZGUsIGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtb2RlICE9IE1vZFJtUmVnaXN0ZXIpOworCisgICAgICAgICAgICAg
ICAgcHV0TW9kUm0obW9kZSwgcmVnLCBoYXNTaWIpOworICAgICAgICAgICAgICAgIHB1dEJ5dGVV
bmNoZWNrZWQoKHNjYWxlIDw8IDYpIHwgKChpbmRleCAmIDcpIDw8IDMpIHwgKGJhc2UgJiA3KSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZWdpc3Rl
ck1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQgcm0pCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcHV0TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdp
c3RlcklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gQSBiYXNlIG9mIGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNv
IGZvcmNlIGEgc2liIHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICAgICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFzU2liKSB8fCAoYmFz
ZSA9PSBoYXNTaWIyKSkgeworI2Vsc2UKKyAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNT
aWIpIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCkgLy8gTm8gbmVl
ZCB0byBjaGVjayBpZiB0aGUgYmFzZSBpcyBub0Jhc2UsIHNpbmNlIHdlIGtub3cgaXQgaXMgaGFz
U2liIQorICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rp
c3AsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNp
YihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAg
ICAgICAgICAgICBpZiAoIW9mZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpICYmIChiYXNlICE9IG5v
QmFzZTIpKQorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2Ug
IT0gbm9CYXNlKSkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9k
Um1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3Az
MiwgcmVnLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChv
ZmZzZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9kUk1fZGlz
cDgoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC8vIEEgYmFzZSBvZiBlc3Agb3IgcjEyIHdvdWxkIGJlIGludGVycHJl
dGVkIGFzIGEgc2liLCBzbyBmb3JjZSBhIHNpYiB3aXRoIG5vIGluZGV4ICYgcHV0IHRoZSBiYXNl
IGluIHRoZXJlLgorICAgICAgICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRFTkRfOF8zMihv
ZmZzZXQpKTsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICgoYmFzZSA9PSBo
YXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7CisjZWxzZQorICAgICAgICAgICAgICAgIGlm
IChiYXNlID09IGhhc1NpYikgeworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJt
U2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAg
ICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcs
IGJhc2UpOworICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDMyKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50
IG9mZnNldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNw
IG9yIHIxMiB3b3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0
aCBubyBpbmRleCAmIHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4KKyNpZiBDUFUoWDg2XzY0KQorICAg
ICAgICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7
CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlID09IGhhc1NpYikgeworI2VuZGlmCisg
ICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJh
c2UsIG5vSW5kZXgsIDApOworICAgICAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQob2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXRN
b2RSbShNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAg
cHV0SW50VW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShp
bnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50
IG9mZnNldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0g
bm9JbmRleCk7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0
ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCisjZWxzZQorICAgICAg
ICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkpCisjZW5kaWYKKyAgICAg
ICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwg
aW5kZXgsIHNjYWxlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRf
OF8zMihvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVt
b3J5RGlzcDgsIHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAg
cHV0Qnl0ZVVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2Us
IGluZGV4LCBzY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZz
ZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworI2lmICFDUFUoWDg2XzY0
KQorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIGNv
bnN0IHZvaWQqIGFkZHJlc3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gbm9C
YXNlICsgTW9kUm1NZW1vcnlOb0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1vcnlEaXNwMzIh
CisgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgbm9CYXNl
KTsKKyAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRfY2FzdDxpbnQz
Ml90PihhZGRyZXNzKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfTsKKwogICAg
ICAgICAvLyBXb3JkLXNpemVkIG9wZXJhbmRzIC8gbm8gb3BlcmFuZCBpbnN0cnVjdGlvbiBmb3Jt
YXR0ZXJzLgogICAgICAgICAvLwogICAgICAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgb3Bjb2Rl
LCB0aGUgZm9sbG93aW5nIG9wZXJhbmQgcGVybXV0YXRpb25zIGFyZSBzdXBwb3J0ZWQ6CkBAIC0y
ODg5LDEzNiArMzA4NiwxMzYgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChP
bmVCeXRlT3Bjb2RlSUQgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5l
bnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3Jp
dGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBSZWdpc3RlcklEIHJlZykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
ZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5l
ZWRlZCgwLCAwLCByZWcpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUgKyAocmVnICYgNykpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVy
KG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQoMCwgMCwgcmVn
KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3
KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleElmTmVlZGVkKHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAg
ICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAg
ICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1v
ZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0
ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlv
blNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAg
ICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBt
ZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRl
ZChyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcF9kaXNwMzIoT25lQnl0ZU9wY29k
ZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUp
OwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlN
b2RSTV9kaXNwMzIocmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJX
cml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVk
ZWQocmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDMyKHJlZywgYmFzZSwg
b2Zmc2V0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBvbmVCeXRlT3BfZGlz
cDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQg
b2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJ
bnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFz
ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAg
ICAgICAgICBtZW1vcnlNb2RSTV9kaXNwOChyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAg
ICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVy
LmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTV9kaXNw
OChyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVP
cChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAg
ICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAg
IGVtaXRSZXhJZk5lZWRlZChyZWcsIGluZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0
ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQo
cmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICAgICAg
dm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgY29uc3Qgdm9p
ZCogYWRkcmVzcykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2Uo
bWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CisgICAg
ICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1v
cnlNb2RSTShyZWcsIGFkZHJlc3MpOwogICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lk
IHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAg
bV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAg
bV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgTG9jYWxCdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3AoVHdvQnl0
ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAg
ICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVn
LCBybSk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwor
ICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKKyAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJl
Z2lzdGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVP
cChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBv
ZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heElu
c3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNl
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBF
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAg
ICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2Fs
QnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJl
eElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9m
ZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5z
dXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRl
ZChyZWcsIGluZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCBpbmRleCwgYmFz
ZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUp
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
ICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3
b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6
ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQ
RSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAg
ICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGFkZHJlc3MpOworICAgICAgICAgICAgTG9jYWxCdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRkcmVz
cyk7CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0
ZU9wY29kZUlEIHR3b0J5dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSkKICAgICAg
ICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXpl
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBF
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAg
ICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKHR3b0J5dGVQcmVmaXgpOworICAgICAgICAgICAgd3JpdGVyLnB1
dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdGhyZWVC
eXRlT3AoVHdvQnl0ZU9wY29kZUlEIHR3b0J5dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9w
Y29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRS
ZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQodHdvQnl0ZVByZWZpeCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAg
ICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdy
aXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBy
bSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJ
RCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lz
dGVySUQgYmFzZSwgaW50IGRpc3BsYWNlbWVudCkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRS
ZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZCh0d29CeXRlUHJlZml4KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgZGlzcGxh
Y2VtZW50KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7
CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1l
bW9yeU1vZFJNKHJlZywgYmFzZSwgZGlzcGxhY2VtZW50KTsKICAgICAgICAgfQogCiAjaWYgQ1BV
KFg4Nl82NCkKQEAgLTMwMzAsODMgKzMyMjcsODMgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IG9uZUJ5dGVPcDY0KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAg
ICBlbWl0UmV4VygwLCAwLCAwKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcoMCwgMCwgMCk7CisgICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIHJlZykKICAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25T
aXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKDAsIDAsIHJlZyk7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3KSk7CisgICAgICAgICAgICBM
b2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVt
aXRSZXhXKDAsIDAsIHJlZyk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUgKyAocmVnICYgNykpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2
NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUp
OwotICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJl
Zywgcm0pOworICAgICAgICAgICAgTG9jYWxCdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsK
KyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdy
aXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0
ZXJNb2RSTShyZWcsIHJtKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjQo
T25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zm
c2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0
cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1l
bW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3Jp
dGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAw
LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Cisg
ICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NF9kaXNwMzIoT25lQnl0ZU9wY29kZUlEIG9w
Y29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAg
ICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3AzMihy
ZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIo
bV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywgMCwgYmFzZSk7Cisg
ICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAg
d3JpdGVyLm1lbW9yeU1vZFJNX2Rpc3AzMihyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjRfZGlzcDgoT25lQnl0ZU9wY29kZUlE
IG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwot
ICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3A4
KHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRl
cihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDgocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQg
cmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9m
ZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5z
dHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOwot
ICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAg
ICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAg
ICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
dHdvQnl0ZU9wNjQoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBy
bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1
Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywgMCwgcm0pOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0
ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBybSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRl
ci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29C
eXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2Us
IGludCBvZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNl
KG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VyhyZWcsIDAsIGJhc2Up
OwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUp
OwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAg
ICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgTG9jYWxC
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
VyhyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1Bf
MkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bj
b2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3Bh
Y2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywgaW5kZXgs
IGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9F
U0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwot
ICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAg
ICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9k
Uk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0KICNlbmRpZgog
CkBAIC0zMTM3LDUyICszMzM0LDUyIEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBvbmVCeXRl
T3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIEdyb3VwT3Bjb2RlSUQgZ3JvdXBPcCwgUmVnaXN0
ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4
SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNS
ZXgocm0pLCAwLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKKyAgICAg
ICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3
cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0
ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IG9uZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBy
bSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1
Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVn
KSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0pLCByZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9k
Uk0ocmVnLCBybSk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVn
LCBybSksIHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUs
IGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAg
ICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAg
ICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNS
ZXgoYmFzZSksIHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNl
dCk7CisgICAgICAgICAgICBMb2NhbEJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAg
ICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwg
cmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNv
ZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdSZXF1
aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4KSB8fCByZWdSZXF1aXJlc1JleChi
YXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlciht
X2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1Jl
eChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRleCwgYmFzZSk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAg
ICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNv
ZGUsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAg
ZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpfGJ5dGVSZWdSZXF1aXJlc1JleChybSks
IHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIExv
Y2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1p
dFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIHJtKSwgcmVnLCAwLCBybSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAg
ICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5y
ZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRl
T3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIEdyb3VwT3Bjb2RlSUQgZ3JvdXBPcCwgUmVnaXN0
ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4
SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNS
ZXgocm0pLCAwLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKKyAgICAg
ICAgICAgIExvY2FsQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3
cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVy
LnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSW1t
ZWRpYXRlczoKQEAgLTMyMjUsMTc3ICszNDIyLDYgQEAgcHJpdmF0ZToKIAogICAgICAgICB1bnNp
Z25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KIAot
ICAgIHByaXZhdGU6Ci0KLSAgICAgICAgLy8gSW50ZXJuYWxzOyBNb2RSbSBhbmQgUkVYIGZvcm1h
dHRlcnMuCi0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9CYXNlID0gWDg2UmVn
aXN0ZXJzOjplYnA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYiA9IFg4
NlJlZ2lzdGVyczo6ZXNwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0luZGV4
ID0gWDg2UmVnaXN0ZXJzOjplc3A7Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgbm9CYXNlMiA9IFg4NlJlZ2lzdGVyczo6cjEzOwotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBoYXNTaWIyID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0KLSAgICAg
ICAgLy8gUmVnaXN0ZXJzIHI4ICYgYWJvdmUgcmVxdWlyZSBhIFJFWCBwcmVmaXhlLgotICAgICAg
ICBpbmxpbmUgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKHJlZyA+PSBYODZSZWdpc3RlcnM6OnI4KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEJ5dGUgb3BlcmFuZCByZWdpc3RlciBzcGwgJiBhYm92ZSByZXF1aXJlIGEgUkVYIHBy
ZWZpeCAodG8gcHJldmVudCB0aGUgJ0gnIHJlZ2lzdGVycyBiZSBhY2Nlc3NlZCkuCi0gICAgICAg
IGlubGluZSBib29sIGJ5dGVSZWdSZXF1aXJlc1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKHJlZyA+PSBYODZSZWdpc3RlcnM6OmVzcCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBGb3JtYXQgYSBSRVggcHJlZml4IGJ5dGUuCi0gICAgICAgIGlubGluZSB2b2lk
IGVtaXRSZXgoYm9vbCB3LCBpbnQgciwgaW50IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQociA+PSAwKTsKLSAgICAgICAgICAgIEFTU0VSVCh4ID49IDApOwotICAgICAg
ICAgICAgQVNTRVJUKGIgPj0gMCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKFBSRV9SRVggfCAoKGludCl3IDw8IDMpIHwgKChyPj4zKTw8MikgfCAoKHg+PjMpPDwxKSB8
IChiPj4zKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2VkIHRvIHBsYW50IGEgUkVYIGJ5
dGUgd2l0aCBSRVgudyBzZXQgKGZvciA2NC1iaXQgb3BlcmF0aW9ucykuCi0gICAgICAgIGlubGlu
ZSB2b2lkIGVtaXRSZXhXKGludCByLCBpbnQgeCwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRSZXgodHJ1ZSwgciwgeCwgYik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2Vk
IGZvciBvcGVyYXRpb25zIHdpdGggYnl0ZSBvcGVyYW5kcyAtIHVzZSBieXRlUmVnUmVxdWlyZXNS
ZXgoKSB0byBjaGVjayByZWdpc3RlciBvcGVyYW5kcywKLSAgICAgICAgLy8gcmVnUmVxdWlyZXNS
ZXgoKSB0byBjaGVjayBvdGhlciByZWdpc3RlcnMgKGkuZS4gYWRkcmVzcyBiYXNlICYgaW5kZXgp
LgotICAgICAgICBpbmxpbmUgdm9pZCBlbWl0UmV4SWYoYm9vbCBjb25kaXRpb24sIGludCByLCBp
bnQgeCwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb25kaXRpb24pIGVtaXRS
ZXgoZmFsc2UsIHIsIHgsIGIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVXNlZCBmb3Igd29y
ZCBzaXplZCBvcGVyYXRpb25zLCB3aWxsIHBsYW50IGEgUkVYIHByZWZpeCBpZiBuZWNlc3Nhcnkg
KGlmIGFueSByZWdpc3RlciBpcyByOCBvciBhYm92ZSkuCi0gICAgICAgIGlubGluZSB2b2lkIGVt
aXRSZXhJZk5lZWRlZChpbnQgciwgaW50IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0UmV4SWYocmVnUmVxdWlyZXNSZXgocikgfHwgcmVnUmVxdWlyZXNSZXgoeCkgfHwgcmVn
UmVxdWlyZXNSZXgoYiksIHIsIHgsIGIpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvLyBO
byBSRVggcHJlZml4IGJ5dGVzIG9uIDMyLWJpdCB4ODYuCi0gICAgICAgIGlubGluZSBib29sIHJl
Z1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5lIGJvb2wg
Ynl0ZVJlZ1JlcXVpcmVzUmV4KGludCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5l
IHZvaWQgZW1pdFJleElmKGJvb2wsIGludCwgaW50LCBpbnQpIHt9Ci0gICAgICAgIGlubGluZSB2
b2lkIGVtaXRSZXhJZk5lZWRlZChpbnQsIGludCwgaW50KSB7fQotI2VuZGlmCi0KLSAgICAgICAg
dm9pZCBwdXRNb2RSbShNb2RSbU1vZGUgbW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCgobW9kZSA8PCA2
KSB8ICgocmVnICYgNykgPDwgMykgfCAocm0gJiA3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHB1dE1vZFJtU2liKE1vZFJtTW9kZSBtb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKG1vZGUgIT0gTW9kUm1SZWdpc3Rlcik7Ci0KLSAgICAgICAgICAgIHB1dE1vZFJtKG1vZGUs
IHJlZywgaGFzU2liKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoKHNj
YWxlIDw8IDYpIHwgKChpbmRleCAmIDcpIDw8IDMpIHwgKGJhc2UgJiA3KSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHJlZ2lzdGVyTW9kUk0oaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQSBiYXNlIG9mIGVz
cCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2liIHdp
dGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCi0jaWYgQ1BVKFg4Nl82NCkKLSAg
ICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7Ci0j
ZWxzZQotICAgICAgICAgICAgaWYgKGJhc2UgPT0gaGFzU2liKSB7Ci0jZW5kaWYKLSAgICAgICAg
ICAgICAgICBpZiAoIW9mZnNldCkgLy8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgYmFzZSBpcyBu
b0Jhc2UsIHNpbmNlIHdlIGtub3cgaXQgaXMgaGFzU2liIQotICAgICAgICAgICAgICAgICAgICBw
dXRNb2RSbVNpYihNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFz
ZSwgbm9JbmRleCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAw
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKG9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBDUFUoWDg2XzY0
KQotICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJh
c2UgIT0gbm9CYXNlMikpCi0jZWxzZQotICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChi
YXNlICE9IG5vQmFzZSkpCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9k
Um1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIob2Zmc2V0KSkgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RS
bShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBtX2J1
ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFz
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZChvZmZzZXQp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgbWVtb3J5TW9kUk1fZGlzcDgoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zm
c2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3Vs
ZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAm
IHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4KLSAgICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRF
TkRfOF8zMihvZmZzZXQpKTsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgaWYgKChiYXNl
ID09IGhhc1NpYikgfHwgKGJhc2UgPT0gaGFzU2liMikpIHsKLSNlbHNlCi0gICAgICAgICAgICBp
ZiAoYmFzZSA9PSBoYXNTaWIpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHB1dE1vZFJtU2li
KE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Ci0gICAgICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2Up
OwotICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDMy
KGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gQSBiYXNlIG9mIGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBz
aWIsIHNvIGZvcmNlIGEgc2liIHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUu
Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChi
YXNlID09IGhhc1NpYjIpKSB7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGJhc2UgPT0gaGFzU2li
KSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3Az
MiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnRVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAKLSAgICAgICAgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9IG5vSW5kZXgpOwotCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2Ug
IT0gbm9CYXNlMikpCi0jZWxzZQotICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0g
bm9CYXNlKSkKLSNlbmRpZgotICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5
Tm9EaXNwLCByZWcsIGJhc2UsIGluZGV4LCBzY2FsZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm1T
aWIoTW9kUm1NZW1vcnlEaXNwOCwgcmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOwotICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIsIHJl
ZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRV
bmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0jaWYgIUNQVShY
ODZfNjQpCi0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk0oaW50IHJlZywgY29uc3Qgdm9pZCogYWRk
cmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlOb0Rp
c3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1vcnlEaXNwMzIhCi0gICAgICAgICAgICBwdXRNb2RS
bShNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBub0Jhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50VW5jaGVja2VkKHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4oYWRkcmVzcykpOwotICAg
ICAgICB9Ci0jZW5kaWYKLQogICAgIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1f
YnVmZmVyOwogICAgIH0gbV9mb3JtYXR0ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274627</attachid>
            <date>2016-03-21 15:31:52 -0700</date>
            <delta_ts>2016-03-25 19:01:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155683-20160321153153.patch</filename>
            <type>text/plain</type>
            <size>44511</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2Q2Y2NiNDY4MzRhZjAzZTcxNjg3MjQ3NjJmOTM3NGRmMTBiMDM1Li5kMGM1NzcxYzEzOTg4MjI2
ZGQzZWQ4ZTU3MzVjZDUyZDM0ZWEyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTYtMDMtMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHV0IHRoZSB4ODYgQXNzZW1ibGVyIG9uIGEgYmluYXJ5
IGRpZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBNYWNyb0Fzc2VtYmxlcnMgYXJlIGhlYXZpbHkgaW5saW5lZC4gVGhpcyBpcyB1bmZvcnR1bmF0
ZWx5CisgICAgICAgIGltcG9ydGFudCBmb3IgYmFzZWxpbmUgSklUIHdoZXJlIG1hbnkgYnJhbmNo
ZXMgY2FuIGJlIGVsaW1pbmF0ZWQKKyAgICAgICAgYXQgY29tcGlsZSB0aW1lLgorCisgICAgICAg
IFRoaXMgaW5saW5pbmcgY2F1c2VzIGEgbG90IG9mIGJpbmFyeSBibG9hdC4gVGhlIHBoYXNlcwor
ICAgICAgICBsb3dlcmluZyB0byBBU00gYXJlIG1hc3NpdmVseSBsYXJnZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcHJvdmVzIHRoZSBzaXR1YXRpb24gYSBiaXQgZm9yIHg4NiB0aHJvdWdoCisg
ICAgICAgIG1hbnkgc21hbGwgaW1wcm92ZW1lbnRzOgorCisgICAgICAgIC1FdmVyeSBpbnN0cnVj
dGlvbiBzdGFydHMgd2l0aCBlbnN1cmVTcGFjZSgpLiBUaGUgc2xvdworICAgICAgICAgcGF0aCBy
ZWFsbG9jIHRoZSBidWZmZXIuCisgICAgICAgICBGcm9tIHRoYXQgc2xvdyBwYXRoLCBvbmx5IGZh
c3RSZWFsbG9jKCkgd2FzIGEgZnVuY3Rpb24KKyAgICAgICAgIGNhbGwuIFdoYXQgaXMgYXJvdW5k
IGRvZXMgbm90IG5lZWQgdG8gYmUgZmFzdCwgSSBtb3ZlZAorICAgICAgICAgdGhlIHdob2xlIGdy
b3coKSBmdW5jdGlvbiBvdXQgb2YgbGluZSBmb3IgdGhvc2UgY2FzZXMuCisKKyAgICAgICAgLVdo
ZW4gdGVzdGluZyBtdWx0aXBsZSByZWdpc3RlcnMgZm9yIFJFWCByZXF1aXJlbWVudHMsCisgICAg
ICAgICB3ZSBoYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgICAgICBieXRlUmVnUmVx
dWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0pCisgICAgICAgICAgICAgcmVn
UmVxdWlyZXNSZXgoaW5kZXgpIHx8IHJlZ1JlcXVpcmVzUmV4KGJhc2UpCisgICAgICAgICBUaG9z
ZSB3ZXJlIHByb2R1Y2luZyBtdWx0aXBsZSB0ZXN0LWFuZC1icmFuY2guIFRob3NlIGJyYW5jaGVz
CisgICAgICAgICBhcmUgZWZmZWN0aXZlbHkgcmFuZG9tIHNvIHdlIGRvbid0IGhhdmUgdG8gY2Fy
ZSBhYm91dCBpbmRpdmlkdWFsCisgICAgICAgICBicmFuY2hlcyBiZWluZyBwcmVkaWN0YWJsZS4K
KworICAgICAgICAgVGhlIG5ldyBjb2RlIGVmZmVjdGl2ZWx5IGRvZXM6CisgICAgICAgICAgICAg
Ynl0ZVJlZ1JlcXVpcmVzUmV4KHJlZyB8IHJtKQorICAgICAgICAgICAgIHJlZ1JlcXVpcmVzUmV4
KGluZGV4IHwgYmFzZSkKKworICAgICAgICAtQ2hhbmdlICJNb2RSbU1vZGUiIHRvIGhhdmUgdGhl
IHZhbHVlIHdlIGNhbiBPUiBkaXJlY3RseQorICAgICAgICAgdG8gdGhlIGdlbmVyYXRlZCBNb2RS
bS4KKyAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBNb2RSTSBjb2RlIGlz
IHNvIGxhcmdlCisgICAgICAgICB0aGF0IGlzIGdvZXMgb3V0IG9mIGxpbmU7CisKKyAgICAgICAg
LUZpbmFsbHksIGEgYmlnIGNoYW5nZSBvbiBob3cgd2Ugd3JpdGUgdG8gdGhlIEFzc2VtYmxlckJ1
ZmZlci4KKworICAgICAgICAgUHJldmlvdXNseSwgaW5zdHJ1Y3Rpb25zIHdlcmUgd3JpdHRlbiBi
eXRlIGJ5IGJ5dGUgaW50bworICAgICAgICAgdGhlIGFzc2VtYmxlciBidWZmZXIgb2YgdGhlIE1h
Y3JvQXNzZW1ibGVyLgorCisgICAgICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMgdGhlIGNv
bXBpbGVyIGNhbm5vdCBwcm92ZSB0aGF0CisgICAgICAgICB0aGUgYnVmZmVyIHBvaW50ZXIgYW5k
IHRoZSBBc3NlbWJsZXJCdWZmZXIgYXJlIG5vdCBwb2ludGluZworICAgICAgICAgdG8gdGhlIHNh
bWUgbWVtb3J5LgorCisgICAgICAgICBCZWNhdXNlIG9mIHRoYXQsIGJlZm9yZSBhbnkgd3JpdGUs
IGFsbCB0aGUgbG9jYWwgcmVnaXN0ZXIKKyAgICAgICAgIHdlcmUgcHVzaGVkIGJhY2sgdG8gdGhl
IEFzc2VtYmxlckJ1ZmZlciBtZW1vcnksIHRoZW4gZXZlcnl0aGluZworICAgICAgICAgd2FzIHJl
YWQgYmFjayBhZnRlciB0aGUgd3JpdGUgdG8gY29tcHV0ZSB0aGUgbmV4dCB3cml0ZS4KKworICAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSAicmVzdHJpY3QiIGtleXdvcmQgYW5kIHdyYXBw
ZXIgdHlwZXMKKyAgICAgICAgIHRvIGhlbHAgQ2xhbmcgd2l0aCB0aGF0IGJ1dCBub3RoaW5nIHdv
cmtlZC4KKworICAgICAgICAgVGhlIGN1cnJlbnQgc29sdXRpb24gaXMgdG8ga2VlcCBhIGxvY2Fs
IGNvcHkgb2YgdGhlIGluZGV4CisgICAgICAgICBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGluIHRo
ZSBzY29wZSBvZiBlYWNoIGluc3RydWN0aW9uLgorICAgICAgICAgVGhhdCBpcyBkb25lIGJ5IEFz
c2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIuCisKKyAgICAgICAgIFNpbmNlIExvY2FsV3JpdGVy
IG9ubHkgZXhpc3RzIGxvY2FsbHksIGl0IHN0YXlzIGluCisgICAgICAgICByZWdpc3RlciBhbmQg
d2UgZG9uJ3QgaGF2ZSBhbGwgdGhlIG1lbW9yeSBjaHVybiBiZXR3ZWVuCisgICAgICAgICBlYWNo
IGJ5dGUgd3JpdGluZy4gVGhpcyBhbHNvIGFsbG93cyBjbGFuZyB0byBjb21iaW5lCisgICAgICAg
ICBvYnZpb3VzIGNhc2VzIHNpbmNlIHRoZXJlIGFyZSBubyBsb25nZXIgb2JzZXJ2YWJsZSBzaWRl
CisgICAgICAgICBlZmZlY3RzIGJldHdlZW4gYnl0ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZWR1Y2VzIHRoZSBiaW5hcnkgc2l6ZSBieSA2NmsuIEl0IGlzIGEgc21hbGwKKyAgICAgICAgc3Bl
ZWR1cCBvbiBTdW5zcGlkZXIuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6ZW5zdXJlU3BhY2UpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpMb2NhbFdyaXRlcik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6On5Mb2NhbFdyaXRlcik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6OnB1dEJ5dGVVbmNoZWNr
ZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpwdXRTaG9y
dFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6
OnB1dEludFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxX
cml0ZXI6OnB1dEludDY0VW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVy
OjpMb2NhbFdyaXRlcjo6cHV0SW50ZWdyYWxVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJsZXJCdWZmZXI6OnB1dEludGVncmFsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVy
OjpvdXRPZkxpbmVHcm93KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OmJ5dGVSZWdSZXF1aXJl
c1JleCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0
ZXI6OnJlZ1JlcXVpcmVzUmV4KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9j
YWxCdWZmZXJXcml0ZXI6OmVtaXRSZXgpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4
Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6ZW1pdFJleFcpOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2NhbEJ1
ZmZlcldyaXRlcjo6ZW1pdFJleElmKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhJZk5lZWRlZCk6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Okxv
Y2FsQnVmZmVyV3JpdGVyOjpwdXRNb2RSbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpwdXRNb2RSbVNpYik6
CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Okxv
Y2FsQnVmZmVyV3JpdGVyOjpyZWdpc3Rlck1vZFJNKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6Om1lbW9yeU1v
ZFJNKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRl
cjo6b25lQnl0ZU9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wX2Rpc3AzMik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcF9k
aXNwOCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rp
b25Gb3JtYXR0ZXI6OnR3b0J5dGVPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OnRocmVlQnl0ZU9wKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0
ZU9wNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0
aW9uRm9ybWF0dGVyOjpvbmVCeXRlT3A2NF9kaXNwMzIpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpvbmVCeXRlT3A2NF9kaXNw
OCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25G
b3JtYXR0ZXI6OnR3b0J5dGVPcDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wOCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OnR3b0J5dGVP
cDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjplbWl0UmV4KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJleFcpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjplbWl0UmV4SWYpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0
dGVyOjplbWl0UmV4SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpwdXRNb2RSbSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OnB1dE1vZFJtU2li
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6cmVnaXN0ZXJNb2RSTSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om1lbW9yeU1vZFJNKTogRGVsZXRlZC4KKwog
MjAxNi0wMy0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAg
ICAgICAgRml4ZWQgY29tcGlsYXRpb24gd2l0aCBHQ0MgNC44LgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKaW5kZXggZDk1NDY5MzFkODU1
MDgyN2EzNDU4OTM3ZjE3ZmE3ODNiMGM2MjlmMC4uMmFlNTUwZWFjMWE1NjY3NzIwYmNjNmE0MmU1
NDYzN2Y4NDA4ZTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9Bc3NlbWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fzc2VtYmxlckJ1ZmZlci5oCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBpc0F2YWlsYWJsZShpbnQgc3Bh
Y2UpCisgICAgICAgIGJvb2wgaXNBdmFpbGFibGUodW5zaWduZWQgc3BhY2UpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICsgc3BhY2UgPD0gbV9zdG9yYWdlLmNhcGFjaXR5
KCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVuc3VyZVNwYWNlKGludCBzcGFjZSkKKyAg
ICAgICAgdm9pZCBlbnN1cmVTcGFjZSh1bnNpZ25lZCBzcGFjZSkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFpc0F2YWlsYWJsZShzcGFjZSkpCi0gICAgICAgICAgICAgICAgZ3JvdygpOwor
ICAgICAgICAgICAgICAgIG91dE9mTGluZUdyb3coKTsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaXNBbGlnbmVkKGludCBhbGlnbm1lbnQpIGNvbnN0CkBAIC0xNjUsMTMgKzE2NSw2MyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBc3NlbWJsZXJEYXRhIHJlbGVhc2VBc3NlbWJsZXJE
YXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX3N0b3JhZ2UpOyB9CiAKKyAgICAgICAgLy8gTG9jYWxX
cml0ZXIgaXMgYSB0cmljayB0byBrZWVwIHRoZSBzdG9yYWdlIGJ1ZmZlciBhbmQgdGhlIGluZGV4
CisgICAgICAgIC8vIGluIG1lbW9yeSB3aGlsZSBpc3N1aW5nIG11bHRpcGxlIFN0b3Jlcy4KKyAg
ICAgICAgLy8gSXQgaXMgY3JlYXRlZCBpbiBhIGJsb2NrIHNjb3BlIGFuZCBpdHMgYXR0cmlidXRl
IGNhbiBzdGF5IGxpdmUKKyAgICAgICAgLy8gYmV0d2VlbiB3cml0ZXMuCisgICAgICAgIC8vCisg
ICAgICAgIC8vIExvY2FsV3JpdGVyICpDQU5OT1QqIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMg
YWNjZXNzIHRvIEFzc2VtYmxlckJ1ZmZlci4KKyAgICAgICAgLy8gQXNzZW1ibGVyQnVmZmVyIGNh
bm5vdCBiZSB1c2VkIHVudGlsIGl0cyBMb2NhbFdyaXR0ZXIgZ29lcyBvdXQgb2Ygc2NvcGUuCisg
ICAgICAgIGNsYXNzIExvY2FsV3JpdGVyIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAg
TG9jYWxXcml0ZXIoQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIHJlcXVpcmVkU3Bh
Y2UpCisgICAgICAgICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYnVmZmVyLmVuc3VyZVNwYWNlKHJlcXVpcmVkU3BhY2UpOworICAgICAg
ICAgICAgICAgIG1fc3RvcnJhZ2VCdWZmZXIgPSBidWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpOwor
ICAgICAgICAgICAgICAgIG1faW5kZXggPSBidWZmZXIubV9pbmRleDsKKyNpZiAhZGVmaW5lZChO
REVCVUcpCisgICAgICAgICAgICAgICAgbV9pbml0aWFsSW5kZXggPSBtX2luZGV4OworICAgICAg
ICAgICAgICAgIG1fcmVxdWlyZWRTcGFjZSA9IHJlcXVpcmVkU3BhY2U7CisjZW5kaWYKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgfkxvY2FsV3JpdGVyKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQobV9pbmRleCAtIG1faW5pdGlhbEluZGV4IDw9IG1fcmVxdWly
ZWRTcGFjZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyLm1faW5kZXggPT0gbV9p
bml0aWFsSW5kZXgpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0b3JyYWdlQnVmZmVyID09
IG1fYnVmZmVyLm1fc3RvcmFnZS5idWZmZXIoKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIu
bV9pbmRleCA9IG1faW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZvaWQgcHV0
Qnl0ZVVuY2hlY2tlZChpbnQ4X3QgdmFsdWUpIHsgcHV0SW50ZWdyYWxVbmNoZWNrZWQodmFsdWUp
OyB9CisgICAgICAgICAgICB2b2lkIHB1dFNob3J0VW5jaGVja2VkKGludDE2X3QgdmFsdWUpIHsg
cHV0SW50ZWdyYWxVbmNoZWNrZWQodmFsdWUpOyB9CisgICAgICAgICAgICB2b2lkIHB1dEludFVu
Y2hlY2tlZChpbnQzMl90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQor
ICAgICAgICAgICAgdm9pZCBwdXRJbnQ2NFVuY2hlY2tlZChpbnQ2NF90IHZhbHVlKSB7IHB1dElu
dGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQorICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgorICAgICAgICAgICAgdm9pZCBwdXRJbnRl
Z3JhbFVuY2hlY2tlZChJbnRlZ3JhbFR5cGUgdmFsdWUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1faW5kZXggKyBzaXplb2YoSW50ZWdyYWxUeXBlKSA8PSBtX2J1ZmZl
ci5tX3N0b3JhZ2UuY2FwYWNpdHkoKSk7CisgICAgICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEludGVncmFsVHlwZSo+KG1fc3RvcnJhZ2VCdWZmZXIgKyBtX2luZGV4KSA9IHZhbHVl
OworICAgICAgICAgICAgICAgIG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBBc3NlbWJsZXJCdWZmZXImIG1fYnVmZmVyOworICAgICAg
ICAgICAgY2hhciogbV9zdG9ycmFnZUJ1ZmZlcjsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1faW5k
ZXg7CisjaWYgIWRlZmluZWQoTkRFQlVHKQorICAgICAgICAgICAgdW5zaWduZWQgbV9pbml0aWFs
SW5kZXg7CisgICAgICAgICAgICB1bnNpZ25lZCBtX3JlcXVpcmVkU3BhY2U7CisjZW5kaWYKKyAg
ICAgICAgfTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50
ZWdyYWxUeXBlPgogICAgICAgICB2b2lkIHB1dEludGVncmFsKEludGVncmFsVHlwZSB2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgbmV4dEluZGV4ID0gbV9pbmRleCArIHNp
emVvZihJbnRlZ3JhbFR5cGUpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG5leHRJbmRleCA+
IG1fc3RvcmFnZS5jYXBhY2l0eSgpKSkKLSAgICAgICAgICAgICAgICBncm93KCk7CisgICAgICAg
ICAgICAgICAgb3V0T2ZMaW5lR3JvdygpOwogICAgICAgICAgICAgQVNTRVJUKGlzQXZhaWxhYmxl
KHNpemVvZihJbnRlZ3JhbFR5cGUpKSk7CiAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdF9w
dHI8SW50ZWdyYWxUeXBlKj4obV9zdG9yYWdlLmJ1ZmZlcigpICsgbV9pbmRleCkgPSB2YWx1ZTsK
ICAgICAgICAgICAgIG1faW5kZXggPSBuZXh0SW5kZXg7CkBAIC0xOTksNyArMjQ5LDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9zdG9yYWdlLmdyb3coZXh0cmFDYXBhY2l0eSk7
CiAgICAgICAgIH0KIAorICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBvdXRPZkxpbmVHcm93KCkK
KyAgICAgICAgeworICAgICAgICAgICAgbV9zdG9yYWdlLmdyb3coKTsKKyAgICAgICAgfQorCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIExvY2FsV3JpdGVyOworCiAgICAgICAgIEFzc2Vt
YmxlckRhdGEgbV9zdG9yYWdlOwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKaW5kZXggNDBlNDhkMDEzMjVlZTUzOWZmNjk3Y2QzYzk3ZGI5MmUzY2Ew
YjAwZC4uNjhjYjgwOTNhMGE1OWUzNGNhYjVmMzMwM2E2MTcyNzZhOGUwMzdlOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaApAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAg
ICBtX2Fzc2VtYmxlci5sZWFsX21yKGluZGV4Lm9mZnNldCwgaW5kZXguYmFzZSwgaW5kZXguaW5k
ZXgsIGluZGV4LnNjYWxlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGFuZDMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsX3JyKHNyYywgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAppbmRleCA4NTdkMjJiYTYyNDY0NzUxZmM1ZGJlODU4NzhmMTJmMmY2
MDNmYTg5Li4zM2M4NGEzZmU5YzM1NDFlOWUyMjUyOGM0NmYxNTk3YTYyYmE2ODUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI4NTIs
MTYgKzI4NTIsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBjbGFzcyBYODZJbnN0cnVjdGlv
bkZvcm1hdHRlciB7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhJbnN0cnVjdGlvblNp
emUgPSAxNjsKIAogICAgIHB1YmxpYzoKLQogICAgICAgICBlbnVtIE1vZFJtTW9kZSB7Ci0gICAg
ICAgICAgICBNb2RSbU1lbW9yeU5vRGlzcCwKLSAgICAgICAgICAgIE1vZFJtTWVtb3J5RGlzcDgs
Ci0gICAgICAgICAgICBNb2RSbU1lbW9yeURpc3AzMiwKLSAgICAgICAgICAgIE1vZFJtUmVnaXN0
ZXIsCisgICAgICAgICAgICBNb2RSbU1lbW9yeU5vRGlzcCA9IDAsCisgICAgICAgICAgICBNb2RS
bU1lbW9yeURpc3A4ID0gMSA8PCA2LAorICAgICAgICAgICAgTW9kUm1NZW1vcnlEaXNwMzIgPSAy
IDw8IDYsCisgICAgICAgICAgICBNb2RSbVJlZ2lzdGVyID0gMyA8PCA2LAogICAgICAgICB9Owog
CiAgICAgICAgIC8vIExlZ2FjeSBwcmVmaXggYnl0ZXM6CkBAIC0yODczLDYgKzI4NzEsMjA1IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlKHByZSk7CiAgICAgICAgIH0K
IAorI2lmIENQVShYODZfNjQpCisgICAgICAgIC8vIEJ5dGUgb3BlcmFuZCByZWdpc3RlciBzcGwg
JiBhYm92ZSByZXF1aXJlIGEgUkVYIHByZWZpeCAodG8gcHJldmVudCB0aGUgJ0gnIHJlZ2lzdGVy
cyBiZSBhY2Nlc3NlZCkuCisgICAgICAgIGlubGluZSBzdGF0aWMgYm9vbCBieXRlUmVnUmVxdWly
ZXNSZXgoaW50IHJlZykKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChYODZS
ZWdpc3RlcnM6OmVzcCA9PSA0LCAiTmVjZXNzYXJ5IGNvbmRpdGlvbiBmb3IgT1ItbWFza2luZyIp
OworICAgICAgICAgICAgcmV0dXJuIChyZWcgPj0gWDg2UmVnaXN0ZXJzOjplc3ApOworICAgICAg
ICB9CisgICAgICAgIGlubGluZSBzdGF0aWMgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50IGEs
IGludCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYnl0ZVJlZ1JlcXVpcmVzUmV4
KGEgfCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlZ2lzdGVycyByOCAmIGFib3ZlIHJl
cXVpcmUgYSBSRVggcHJlZml4ZS4KKyAgICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVp
cmVzUmV4KGludCByZWcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoWDg2
UmVnaXN0ZXJzOjpyOCA9PSA4LCAiTmVjZXNzYXJ5IGNvbmRpdGlvbiBmb3IgT1ItbWFza2luZyIp
OworICAgICAgICAgICAgcmV0dXJuIChyZWcgPj0gWDg2UmVnaXN0ZXJzOjpyOCk7CisgICAgICAg
IH0KKyAgICAgICAgaW5saW5lIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQg
YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlZ1JlcXVpcmVzUmV4KGEgfCBiKTsK
KyAgICAgICAgfQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgcmVnUmVxdWlyZXNSZXgoaW50
IGEsIGludCBiLCBpbnQgYykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlZ1JlcXVp
cmVzUmV4KGEgfCBiIHwgYyk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGlubGluZSBzdGF0
aWMgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICBpbmxpbmUgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCwgaW50KSB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgcmVnUmVxdWlyZXNSZXgoaW50
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBpbmxpbmUgc3RhdGljIGJvb2wgcmVnUmVxdWly
ZXNSZXgoaW50LCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIGlubGluZSBzdGF0aWMg
Ym9vbCByZWdSZXF1aXJlc1JleChpbnQsIGludCwgaW50KSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCisKKyAgICAgICAgY2xhc3MgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgOiBwdWJs
aWMgQXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlciB7CisgICAgICAgIHB1YmxpYzoKKyAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyKEFzc2VtYmxlckJ1ZmZlciYgYnVm
ZmVyKQorICAgICAgICAgICAgICAgIDogQXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcihidWZm
ZXIsIG1heEluc3RydWN0aW9uU2l6ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gSW50ZXJuYWxzOyBNb2RSbSBhbmQgUkVYIGZvcm1hdHRlcnMuCisKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG5vQmFzZSA9IFg4NlJlZ2lzdGVyczo6
ZWJwOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaGFzU2liID0gWDg2UmVn
aXN0ZXJzOjplc3A7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0luZGV4
ID0gWDg2UmVnaXN0ZXJzOjplc3A7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgbm9CYXNlMiA9IFg4NlJlZ2lzdGVyczo6cjEzOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaGFzU2liMiA9IFg4NlJlZ2lzdGVyczo6cjEy
OworCisgICAgICAgICAgICAvLyBGb3JtYXQgYSBSRVggcHJlZml4IGJ5dGUuCisgICAgICAgICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZW1pdFJleChib29sIHcsIGludCByLCBpbnQgeCwgaW50IGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHIgPj0gMCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHggPj0gMCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGIgPj0gMCk7
CisgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZChQUkVfUkVYIHwgKChpbnQpdyA8PCAz
KSB8ICgocj4+Myk8PDIpIHwgKCh4Pj4zKTw8MSkgfCAoYj4+MykpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBVc2VkIHRvIHBsYW50IGEgUkVYIGJ5dGUgd2l0aCBSRVgudyBzZXQg
KGZvciA2NC1iaXQgb3BlcmF0aW9ucykuCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZW1pdFJleFcoaW50IHIsIGludCB4LCBpbnQgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBlbWl0UmV4KHRydWUsIHIsIHgsIGIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBVc2VkIGZvciBvcGVyYXRpb25zIHdpdGggYnl0ZSBvcGVyYW5kcyAtIHVzZSBieXRlUmVn
UmVxdWlyZXNSZXgoKSB0byBjaGVjayByZWdpc3RlciBvcGVyYW5kcywKKyAgICAgICAgICAgIC8v
IHJlZ1JlcXVpcmVzUmV4KCkgdG8gY2hlY2sgb3RoZXIgcmVnaXN0ZXJzIChpLmUuIGFkZHJlc3Mg
YmFzZSAmIGluZGV4KS4KKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbWl0UmV4SWYo
Ym9vbCBjb25kaXRpb24sIGludCByLCBpbnQgeCwgaW50IGIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgZW1pdFJleChm
YWxzZSwgciwgeCwgYik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFVzZWQgZm9y
IHdvcmQgc2l6ZWQgb3BlcmF0aW9ucywgd2lsbCBwbGFudCBhIFJFWCBwcmVmaXggaWYgbmVjZXNz
YXJ5IChpZiBhbnkgcmVnaXN0ZXIgaXMgcjggb3IgYWJvdmUpLgorICAgICAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIGVtaXRSZXhJZk5lZWRlZChpbnQgciwgaW50IHgsIGludCBiKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGVtaXRSZXhJZihyZWdSZXF1aXJlc1JleChyLCB4LCBi
KSwgciwgeCwgYik7CisgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgLy8gTm8gUkVY
IHByZWZpeCBieXRlcyBvbiAzMi1iaXQgeDg2LgorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGVtaXRSZXhJZihib29sLCBpbnQsIGludCwgaW50KSB7IH0KKyAgICAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBlbWl0UmV4SWZOZWVkZWQoaW50LCBpbnQsIGludCkgeyB9CisjZW5kaWYK
KworICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHB1dE1vZFJtKE1vZFJtTW9kZSBtb2Rl
LCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHB1dEJ5dGVVbmNoZWNrZWQobW9kZSB8ICgocmVnICYgNykgPDwgMykgfCAocm0gJiA3KSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRNb2RSbVNp
YihNb2RSbU1vZGUgbW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1v
ZGUgIT0gTW9kUm1SZWdpc3Rlcik7CisKKyAgICAgICAgICAgICAgICBwdXRNb2RSbShtb2RlLCBy
ZWcsIGhhc1NpYik7CisgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZCgoc2NhbGUgPDwg
NikgfCAoKGluZGV4ICYgNykgPDwgMykgfCAoYmFzZSAmIDcpKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlZ2lzdGVyTW9kUk0oaW50IHJlZywgUmVn
aXN0ZXJJRCBybSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RS
bVJlZ2lzdGVyLCByZWcsIHJtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9m
ZnNldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9y
IHIxMiB3b3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBu
byBpbmRleCAmIHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4KKyNpZiBDUFUoWDg2XzY0KQorICAgICAg
ICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7Cisj
ZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlID09IGhhc1NpYikgeworI2VuZGlmCisgICAg
ICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0KSAvLyBObyBuZWVkIHRvIGNoZWNrIGlmIHRoZSBi
YXNlIGlzIG5vQmFzZSwgc2luY2Ugd2Uga25vdyBpdCBpcyBoYXNTaWIhCisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBiYXNlLCBub0lu
ZGV4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIob2Zmc2V0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1N
ZW1vcnlEaXNwOCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMy
LCByZWcsIGJhc2UsIG5vSW5kZXgsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0SW50
VW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICAgICAgICAgIGlmICghb2Zm
c2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCisjZWxzZQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpKQorI2VuZGlm
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeU5vRGlzcCwgcmVn
LCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIob2Zmc2V0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1v
cnlEaXNwOCwgcmVnLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNo
ZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0SW50VW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTV9kaXNwOChpbnQgcmVnLCBSZWdpc3Rl
cklEIGJhc2UsIGludCBvZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
QSBiYXNlIG9mIGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZv
cmNlIGEgc2liIHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCisgICAgICAg
ICAgICAgICAgQVNTRVJUKENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpOworI2lmIENQVShY
ODZfNjQpCisgICAgICAgICAgICAgICAgaWYgKChiYXNlID09IGhhc1NpYikgfHwgKGJhc2UgPT0g
aGFzU2liMikpIHsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gaGFzU2liKSB7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNw
OCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVu
Y2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7CisgICAgICAgICAg
ICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RS
TV9kaXNwMzIoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIC8vIEEgYmFzZSBvZiBlc3Agb3IgcjEyIHdvdWxkIGJlIGlu
dGVycHJldGVkIGFzIGEgc2liLCBzbyBmb3JjZSBhIHNpYiB3aXRoIG5vIGluZGV4ICYgcHV0IHRo
ZSBiYXNlIGluIHRoZXJlLgorI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICAgICAgaWYgKChi
YXNlID09IGhhc1NpYikgfHwgKGJhc2UgPT0gaGFzU2liMikpIHsKKyNlbHNlCisgICAgICAgICAg
ICAgICAgaWYgKGJhc2UgPT0gaGFzU2liKSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAg
cHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlz
cDMyLCByZWcsIGJhc2UpOworICAgICAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQob2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleCAhPSBub0luZGV4KTsKKworI2lmIENQ
VShYODZfNjQpCisgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNl
KSAmJiAoYmFzZSAhPSBub0Jhc2UyKSkKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKCFvZmZz
ZXQgJiYgKGJhc2UgIT0gbm9CYXNlKSkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBwdXRN
b2RSbVNpYihNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwOCwgcmVnLCBiYXNl
LCBpbmRleCwgc2NhbGUpOworICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9m
ZnNldCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHV0
TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHV0SW50VW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisjaWYgIUNQVShYODZfNjQpCisgICAgICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9kUk0oaW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBub0Jhc2UgKyBNb2RSbU1lbW9yeU5v
RGlzcCBtZWFucyBub0Jhc2UgKyBNb2RSbU1lbW9yeURpc3AzMiEKKyAgICAgICAgICAgICAgICBw
dXRNb2RSbShNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBub0Jhc2UpOworICAgICAgICAgICAgICAg
IHB1dEludFVuY2hlY2tlZChyZWludGVycHJldF9jYXN0PGludDMyX3Q+KGFkZHJlc3MpKTsKKyAg
ICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9OworCiAgICAgICAgIC8vIFdvcmQtc2l6ZWQg
b3BlcmFuZHMgLyBubyBvcGVyYW5kIGluc3RydWN0aW9uIGZvcm1hdHRlcnMuCiAgICAgICAgIC8v
CiAgICAgICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBvcGNvZGUsIHRoZSBmb2xsb3dpbmcgb3Bl
cmFuZCBwZXJtdXRhdGlvbnMgYXJlIHN1cHBvcnRlZDoKQEAgLTI4ODksMTM2ICszMDg2LDEzNiBA
QCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBvcGNv
ZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3Ry
dWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9i
dWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUs
IFJlZ2lzdGVySUQgcmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKDAs
IDAsIHJlZyk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSAr
IChyZWcgJiA3KSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZCgwLCAw
LCByZWcpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJl
ZyAmIDcpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wKE9uZUJ5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAg
ICBlbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0p
OworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBybSk7Cisg
ICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAg
d3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJh
c2UsIGludCBvZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNw
YWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4SWZOZWVkZWQocmVn
LCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1l
bW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
b25lQnl0ZU9wX2Rpc3AzMihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3Rl
cklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVu
c3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4SWZOZWVk
ZWQocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3AzMihyZWcsIGJhc2UsIG9mZnNl
dCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9i
dWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2Up
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTV9kaXNwMzIocmVnLCBiYXNlLCBvZmZzZXQpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcF9kaXNwOChPbmVCeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7
Ci0gICAgICAgICAgICBlbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1v
ZFJNX2Rpc3A4KHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0
aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1p
dFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNX2Rpc3A4KHJl
ZywgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wKE9u
ZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleElmTmVlZGVkKHJlZywgaW5kZXgsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJ
Zk5lZWRlZChyZWcsIGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0KIAogI2lmICFDUFUoWDg2XzY0KQog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBj
b25zdCB2b2lkKiBhZGRyZXNzKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1
ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAg
ICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9u
U2l6ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VT
Q0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Cisg
ICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIp
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVn
LCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJl
ZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllU
RV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
OwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIFNpbmds
ZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3
cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1
dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShy
ZWcsIHJtKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKICAgICAg
ICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXpl
KTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5
TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tl
ZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zm
c2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJ
RCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVk
KHJlZywgaW5kZXgsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tl
ZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tl
ZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcs
IGluZGV4LCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJC
WVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
OworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOwogICAgICAgICB9CiAKICNpZiAhQ1BVKFg4Nl82NCkKICAgICAgICAgdm9pZCB0
d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgY29uc3Qgdm9pZCogYWRk
cmVzcykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5z
dHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1Bf
MkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CisgICAgICAgICAg
ICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBhZGRyZXNzKTsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAg
dm9pZCB0aHJlZUJ5dGVPcChUd29CeXRlT3Bjb2RlSUQgdHdvQnl0ZVByZWZpeCwgVGhyZWVCeXRl
T3Bjb2RlSUQgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZCh0d29CeXRlUHJlZml4KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChP
UF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdv
Qnl0ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcChUd29CeXRlT3Bjb2RlSUQg
dHdvQnl0ZVByZWZpeCwgVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3Rl
cklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJ
bnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgcm0p
OwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUp
OwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29CeXRlUHJlZml4KTsK
LSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAg
ICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRS
ZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tl
ZCh0d29CeXRlUHJlZml4KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0ZU9wY29kZUlEIHR3b0J5dGVQ
cmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNl
LCBpbnQgZGlzcGxhY2VtZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVk
KHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9Q
XzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKHR3
b0J5dGVQcmVmaXgpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBkaXNwbGFjZW1lbnQpOwor
ICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVy
KTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29CeXRlUHJlZml4KTsKKyAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBkaXNwbGFjZW1lbnQpOwogICAgICAgICB9CiAKICNpZiBD
UFUoWDg2XzY0KQpAQCAtMzAzMCw4MyArMzIyNyw4MyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZv
aWQgb25lQnl0ZU9wNjQoT25lQnl0ZU9wY29kZUlEIG9wY29kZSkKICAgICAgICAgewotICAgICAg
ICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAg
ICAgIGVtaXRSZXhXKDAsIDAsIDApOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VygwLCAwLCAwKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lz
dGVySUQgcmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZSht
YXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFcoMCwgMCwgcmVnKTsKLSAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcoMCwgMCwgcmVnKTsKKyAgICAgICAgICAg
IHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChyZWcgJiA3KSk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCBy
ZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3Vy
ZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VyhyZWcsIDAs
IHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAg
ICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVy
LmVtaXRSZXhXKHJlZywgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bj
b2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAg
ICAgICAgICBlbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNl
LCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3Jp
dGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIGJhc2Up
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0X2Rpc3AzMihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAg
ICBlbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk1fZGlzcDMyKHJlZywgYmFz
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNl
KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAg
ICAgICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDMyKHJlZywgYmFzZSwgb2Zmc2V0KTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NF9kaXNwOChPbmVCeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6
ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk1f
ZGlzcDgocmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
VyhyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTV9kaXNwOChyZWcsIGJhc2UsIG9m
ZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVPcGNv
ZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5l
bnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFcocmVn
LCBpbmRleCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRl
cihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCBpbmRleCwgYmFz
ZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAg
ICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleFcocmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAg
ICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAg
ICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5w
dXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0o
cmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0KFR3b0J5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKICAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25T
aXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RS
TShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJl
ZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllU
RV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsK
KyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUs
IGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBp
bnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZSht
YXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFcocmVnLCBpbmRleCwgYmFz
ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQ
RSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAg
ICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7
CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAg
ICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5t
ZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQog
I2VuZGlmCiAKQEAgLTMxMzcsNTIgKzMzMzQsNTIgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IG9uZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgR3JvdXBPcGNvZGVJRCBncm91cE9w
LCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVT
cGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVV
bmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0p
OworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVm
ZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJt
KSwgMCwgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKGdyb3VwT3AsIHJtKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wOChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5l
bnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5
dGVSZWdSZXF1aXJlc1JleChyZWcpIHx8IGJ5dGVSZWdSZXF1aXJlc1JleChybSksIHJlZywgMCwg
cm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAg
ICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIu
ZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIHJtKSwgcmVnLCAwLCBybSk7CisgICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3Jp
dGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9u
ZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNl
LCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdSZXF1
aXJlc1JleChyZWcpIHx8IGJ5dGVSZWdSZXF1aXJlc1JleChiYXNlKSwgcmVnLCAwLCBiYXNlKTsK
LSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAg
ICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2Up
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0
aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZykg
fHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgpIHx8IHJlZ1JlcXVpcmVzUmV4KGJhc2UpLCByZWcsIGlu
ZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4
KHJlZykgfHwgcmVnUmVxdWlyZXNSZXgoaW5kZXgsIGJhc2UpLCByZWcsIGluZGV4LCBiYXNlKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29k
ZSwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBl
bWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZyl8Ynl0ZVJlZ1JlcXVpcmVzUmV4KHJtKSwg
cmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJC
WVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAgICAgU2lu
Z2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAg
IHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgcm0pLCByZWcsIDAsIHJt
KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAg
ICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgR3JvdXBPcGNvZGVJRCBncm91
cE9wLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVS
ZWdSZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwg
cm0pOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4
KHJtKSwgMCwgMCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1Bf
MkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29k
ZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBybSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBJbW1lZGlhdGVzOgpAQCAtMzIyNSwxNzcgKzM0MjIsNiBAQCBw
cml2YXRlOgogCiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZm
ZXIuZGVidWdPZmZzZXQoKTsgfQogCi0gICAgcHJpdmF0ZToKLQotICAgICAgICAvLyBJbnRlcm5h
bHM7IE1vZFJtIGFuZCBSRVggZm9ybWF0dGVycy4KLQotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBub0Jhc2UgPSBYODZSZWdpc3RlcnM6OmVicDsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgaGFzU2liID0gWDg2UmVnaXN0ZXJzOjplc3A7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIG5vSW5kZXggPSBYODZSZWdpc3RlcnM6OmVzcDsKLSNpZiBDUFUoWDg2
XzY0KQotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0Jhc2UyID0gWDg2UmVnaXN0
ZXJzOjpyMTM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYjIgPSBYODZS
ZWdpc3RlcnM6OnIxMjsKLQotICAgICAgICAvLyBSZWdpc3RlcnMgcjggJiBhYm92ZSByZXF1aXJl
IGEgUkVYIHByZWZpeGUuCi0gICAgICAgIGlubGluZSBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBy
ZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6
cjgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQnl0ZSBvcGVyYW5kIHJlZ2lzdGVyIHNwbCAm
IGFib3ZlIHJlcXVpcmUgYSBSRVggcHJlZml4ICh0byBwcmV2ZW50IHRoZSAnSCcgcmVnaXN0ZXJz
IGJlIGFjY2Vzc2VkKS4KLSAgICAgICAgaW5saW5lIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGlu
dCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVy
czo6ZXNwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcm1hdCBhIFJFWCBwcmVmaXggYnl0
ZS4KLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleChib29sIHcsIGludCByLCBpbnQgeCwgaW50
IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyID49IDApOwotICAgICAgICAgICAg
QVNTRVJUKHggPj0gMCk7Ci0gICAgICAgICAgICBBU1NFUlQoYiA+PSAwKTsKLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoUFJFX1JFWCB8ICgoaW50KXcgPDwgMykgfCAoKHI+
PjMpPDwyKSB8ICgoeD4+Myk8PDEpIHwgKGI+PjMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFVzZWQgdG8gcGxhbnQgYSBSRVggYnl0ZSB3aXRoIFJFWC53IHNldCAoZm9yIDY0LWJpdCBvcGVy
YXRpb25zKS4KLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleFcoaW50IHIsIGludCB4LCBpbnQg
YikKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdFJleCh0cnVlLCByLCB4LCBiKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIFVzZWQgZm9yIG9wZXJhdGlvbnMgd2l0aCBieXRlIG9wZXJhbmRz
IC0gdXNlIGJ5dGVSZWdSZXF1aXJlc1JleCgpIHRvIGNoZWNrIHJlZ2lzdGVyIG9wZXJhbmRzLAot
ICAgICAgICAvLyByZWdSZXF1aXJlc1JleCgpIHRvIGNoZWNrIG90aGVyIHJlZ2lzdGVycyAoaS5l
LiBhZGRyZXNzIGJhc2UgJiBpbmRleCkuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhJZihi
b29sIGNvbmRpdGlvbiwgaW50IHIsIGludCB4LCBpbnQgYikKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGNvbmRpdGlvbikgZW1pdFJleChmYWxzZSwgciwgeCwgYik7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBVc2VkIGZvciB3b3JkIHNpemVkIG9wZXJhdGlvbnMsIHdpbGwgcGxhbnQgYSBS
RVggcHJlZml4IGlmIG5lY2Vzc2FyeSAoaWYgYW55IHJlZ2lzdGVyIGlzIHI4IG9yIGFib3ZlKS4K
LSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleElmTmVlZGVkKGludCByLCBpbnQgeCwgaW50IGIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRSZXhJZihyZWdSZXF1aXJlc1JleChyKSB8fCBy
ZWdSZXF1aXJlc1JleCh4KSB8fCByZWdSZXF1aXJlc1JleChiKSwgciwgeCwgYik7Ci0gICAgICAg
IH0KLSNlbHNlCi0gICAgICAgIC8vIE5vIFJFWCBwcmVmaXggYnl0ZXMgb24gMzItYml0IHg4Ni4K
LSAgICAgICAgaW5saW5lIGJvb2wgcmVnUmVxdWlyZXNSZXgoaW50KSB7IHJldHVybiBmYWxzZTsg
fQotICAgICAgICBpbmxpbmUgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50KSB7IHJldHVybiBm
YWxzZTsgfQotICAgICAgICBpbmxpbmUgdm9pZCBlbWl0UmV4SWYoYm9vbCwgaW50LCBpbnQsIGlu
dCkge30KLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleElmTmVlZGVkKGludCwgaW50LCBpbnQp
IHt9Ci0jZW5kaWYKLQotICAgICAgICB2b2lkIHB1dE1vZFJtKE1vZFJtTW9kZSBtb2RlLCBpbnQg
cmVnLCBSZWdpc3RlcklEIHJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRC
eXRlVW5jaGVja2VkKChtb2RlIDw8IDYpIHwgKChyZWcgJiA3KSA8PCAzKSB8IChybSAmIDcpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHV0TW9kUm1TaWIoTW9kUm1Nb2RlIG1vZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobW9kZSAhPSBNb2RSbVJlZ2lzdGVyKTsKLQotICAg
ICAgICAgICAgcHV0TW9kUm0obW9kZSwgcmVnLCBoYXNTaWIpOwotICAgICAgICAgICAgbV9idWZm
ZXIucHV0Qnl0ZVVuY2hlY2tlZCgoc2NhbGUgPDwgNikgfCAoKGluZGV4ICYgNykgPDwgMykgfCAo
YmFzZSAmIDcpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcmVnaXN0ZXJNb2RSTShpbnQg
cmVnLCBSZWdpc3RlcklEIHJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdXRNb2RSbShNb2RS
bVJlZ2lzdGVyLCByZWcsIHJtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWVtb3J5TW9k
Uk0oaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3VsZCBiZSBpbnRlcnByZXRlZCBhcyBh
IHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAmIHB1dCB0aGUgYmFzZSBpbiB0aGVy
ZS4KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgaWYgKChiYXNlID09IGhhc1NpYikgfHwg
KGJhc2UgPT0gaGFzU2liMikpIHsKLSNlbHNlCi0gICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNT
aWIpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0KSAvLyBObyBuZWVkIHRv
IGNoZWNrIGlmIHRoZSBiYXNlIGlzIG5vQmFzZSwgc2luY2Ugd2Uga25vdyBpdCBpcyBoYXNTaWIh
Ci0gICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5Tm9EaXNwLCByZWcs
IGJhc2UsIG5vSW5kZXgsIDApOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VY
VEVORF84XzMyKG9mZnNldCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9k
Um1NZW1vcnlEaXNwOCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMy
LCByZWcsIGJhc2UsIG5vSW5kZXgsIDApOwotICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgewotI2lmIENQVShYODZfNjQpCi0gICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYg
KGJhc2UgIT0gbm9CYXNlKSAmJiAoYmFzZSAhPSBub0Jhc2UyKSkKLSNlbHNlCi0gICAgICAgICAg
ICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNlKSkKLSNlbmRpZgotICAgICAgICAg
ICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBiYXNlKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RS
bU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50VW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtZW1vcnlNb2RSTV9kaXNwOChpbnQgcmVnLCBS
ZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEEg
YmFzZSBvZiBlc3Agb3IgcjEyIHdvdWxkIGJlIGludGVycHJldGVkIGFzIGEgc2liLCBzbyBmb3Jj
ZSBhIHNpYiB3aXRoIG5vIGluZGV4ICYgcHV0IHRoZSBiYXNlIGluIHRoZXJlLgotICAgICAgICAg
ICAgQVNTRVJUKENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpOwotI2lmIENQVShYODZfNjQp
Ci0gICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFzU2liKSB8fCAoYmFzZSA9PSBoYXNTaWIyKSkg
ewotI2Vsc2UKLSAgICAgICAgICAgIGlmIChiYXNlID09IGhhc1NpYikgewotI2VuZGlmCi0gICAg
ICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwOCwgcmVnLCBiYXNlLCBub0lu
ZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9mZnNl
dCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJt
TWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBtZW1vcnlNb2RSTV9kaXNwMzIoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zm
c2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3Vs
ZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAm
IHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgaWYg
KChiYXNlID09IGhhc1NpYikgfHwgKGJhc2UgPT0gaGFzU2liMikpIHsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAoYmFzZSA9PSBoYXNTaWIpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHB1dE1v
ZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UsIG5vSW5kZXgsIDApOwotICAgICAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3AzMiwgcmVn
LCBiYXNlKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQob2Zmc2V0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIAotICAgICAgICB2b2lkIG1lbW9yeU1v
ZFJNKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm9J
bmRleCk7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJh
c2UgIT0gbm9CYXNlKSAmJiAoYmFzZSAhPSBub0Jhc2UyKSkKLSNlbHNlCi0gICAgICAgICAgICBp
ZiAoIW9mZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpKQotI2VuZGlmCi0gICAgICAgICAgICAgICAg
cHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsKLSAg
ICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UsIGlu
ZGV4LCBzY2FsZSk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChv
ZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXRNb2RSbVNp
YihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOwotICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSNpZiAhQ1BVKFg4Nl82NCkKLSAgICAgICAgdm9pZCBtZW1vcnlNb2RSTShp
bnQgcmVnLCBjb25zdCB2b2lkKiBhZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBu
b0Jhc2UgKyBNb2RSbU1lbW9yeU5vRGlzcCBtZWFucyBub0Jhc2UgKyBNb2RSbU1lbW9yeURpc3Az
MiEKLSAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5Tm9EaXNwLCByZWcsIG5vQmFzZSk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRfY2FzdDxp
bnQzMl90PihhZGRyZXNzKSk7Ci0gICAgICAgIH0KLSNlbmRpZgotCiAgICAgcHVibGljOgogICAg
ICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CiAgICAgfSBtX2Zvcm1hdHRlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274965</attachid>
            <date>2016-03-25 19:01:41 -0700</date>
            <delta_ts>2016-03-25 20:47:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155683-20160325190143.patch</filename>
            <type>text/plain</type>
            <size>44464</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmU3NzFhNmM0MGQ2OGIxMzliZThmNTkzNzc3YmEwNmY5MDk2MGY4Li40MTc1YTBhYzA0NmY0NzFj
NWJiMTE1N2M4OWY4NzFjOWZmNWM3N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTYtMDMtMjUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHV0IHRoZSB4ODYgQXNzZW1ibGVyIG9uIGEgYmluYXJ5
IGRpZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NTY4MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoZSBN
YWNyb0Fzc2VtYmxlcnMgYXJlIGhlYXZpbHkgaW5saW5lZC4gVGhpcyBpcyB1bmZvcnR1bmF0ZWx5
CisgICAgICAgIGltcG9ydGFudCBmb3IgYmFzZWxpbmUgSklUIHdoZXJlIG1hbnkgYnJhbmNoZXMg
Y2FuIGJlIGVsaW1pbmF0ZWQKKyAgICAgICAgYXQgY29tcGlsZSB0aW1lLgorCisgICAgICAgIFRo
aXMgaW5saW5pbmcgY2F1c2VzIGEgbG90IG9mIGJpbmFyeSBibG9hdC4gVGhlIHBoYXNlcworICAg
ICAgICBsb3dlcmluZyB0byBBU00gYXJlIG1hc3NpdmVseSBsYXJnZS4KKworICAgICAgICBUaGlz
IHBhdGNoIGltcHJvdmVzIHRoZSBzaXR1YXRpb24gYSBiaXQgZm9yIHg4NiB0aHJvdWdoCisgICAg
ICAgIG1hbnkgc21hbGwgaW1wcm92ZW1lbnRzOgorCisgICAgICAgIC1FdmVyeSBpbnN0cnVjdGlv
biBzdGFydHMgd2l0aCBlbnN1cmVTcGFjZSgpLiBUaGUgc2xvdworICAgICAgICAgcGF0aCByZWFs
bG9jIHRoZSBidWZmZXIuCisgICAgICAgICBGcm9tIHRoYXQgc2xvdyBwYXRoLCBvbmx5IGZhc3RS
ZWFsbG9jKCkgd2FzIGEgZnVuY3Rpb24KKyAgICAgICAgIGNhbGwuIFdoYXQgaXMgYXJvdW5kIGRv
ZXMgbm90IG5lZWQgdG8gYmUgZmFzdCwgSSBtb3ZlZAorICAgICAgICAgdGhlIHdob2xlIGdyb3co
KSBmdW5jdGlvbiBvdXQgb2YgbGluZSBmb3IgdGhvc2UgY2FzZXMuCisKKyAgICAgICAgLVdoZW4g
dGVzdGluZyBtdWx0aXBsZSByZWdpc3RlcnMgZm9yIFJFWCByZXF1aXJlbWVudHMsCisgICAgICAg
ICB3ZSBoYWQgc29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgICAgICBieXRlUmVnUmVxdWly
ZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0pCisgICAgICAgICAgICAgcmVnUmVx
dWlyZXNSZXgoaW5kZXgpIHx8IHJlZ1JlcXVpcmVzUmV4KGJhc2UpCisgICAgICAgICBUaG9zZSB3
ZXJlIHByb2R1Y2luZyBtdWx0aXBsZSB0ZXN0LWFuZC1icmFuY2guIFRob3NlIGJyYW5jaGVzCisg
ICAgICAgICBhcmUgZWZmZWN0aXZlbHkgcmFuZG9tIHNvIHdlIGRvbid0IGhhdmUgdG8gY2FyZSBh
Ym91dCBpbmRpdmlkdWFsCisgICAgICAgICBicmFuY2hlcyBiZWluZyBwcmVkaWN0YWJsZS4KKwor
ICAgICAgICAgVGhlIG5ldyBjb2RlIGVmZmVjdGl2ZWx5IGRvZXM6CisgICAgICAgICAgICAgYnl0
ZVJlZ1JlcXVpcmVzUmV4KHJlZyB8IHJtKQorICAgICAgICAgICAgIHJlZ1JlcXVpcmVzUmV4KGlu
ZGV4IHwgYmFzZSkKKworICAgICAgICAtQ2hhbmdlICJNb2RSbU1vZGUiIHRvIGhhdmUgdGhlIHZh
bHVlIHdlIGNhbiBPUiBkaXJlY3RseQorICAgICAgICAgdG8gdGhlIGdlbmVyYXRlZCBNb2RSbS4K
KyAgICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBNb2RSTSBjb2RlIGlzIHNv
IGxhcmdlCisgICAgICAgICB0aGF0IGlzIGdvZXMgb3V0IG9mIGxpbmU7CisKKyAgICAgICAgLUZp
bmFsbHksIGEgYmlnIGNoYW5nZSBvbiBob3cgd2Ugd3JpdGUgdG8gdGhlIEFzc2VtYmxlckJ1ZmZl
ci4KKworICAgICAgICAgUHJldmlvdXNseSwgaW5zdHJ1Y3Rpb25zIHdlcmUgd3JpdHRlbiBieXRl
IGJ5IGJ5dGUgaW50bworICAgICAgICAgdGhlIGFzc2VtYmxlciBidWZmZXIgb2YgdGhlIE1hY3Jv
QXNzZW1ibGVyLgorCisgICAgICAgICBUaGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMgdGhlIGNvbXBp
bGVyIGNhbm5vdCBwcm92ZSB0aGF0CisgICAgICAgICB0aGUgYnVmZmVyIHBvaW50ZXIgYW5kIHRo
ZSBBc3NlbWJsZXJCdWZmZXIgYXJlIG5vdCBwb2ludGluZworICAgICAgICAgdG8gdGhlIHNhbWUg
bWVtb3J5LgorCisgICAgICAgICBCZWNhdXNlIG9mIHRoYXQsIGJlZm9yZSBhbnkgd3JpdGUsIGFs
bCB0aGUgbG9jYWwgcmVnaXN0ZXIKKyAgICAgICAgIHdlcmUgcHVzaGVkIGJhY2sgdG8gdGhlIEFz
c2VtYmxlckJ1ZmZlciBtZW1vcnksIHRoZW4gZXZlcnl0aGluZworICAgICAgICAgd2FzIHJlYWQg
YmFjayBhZnRlciB0aGUgd3JpdGUgdG8gY29tcHV0ZSB0aGUgbmV4dCB3cml0ZS4KKworICAgICAg
ICAgSSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSAicmVzdHJpY3QiIGtleXdvcmQgYW5kIHdyYXBwZXIg
dHlwZXMKKyAgICAgICAgIHRvIGhlbHAgQ2xhbmcgd2l0aCB0aGF0IGJ1dCBub3RoaW5nIHdvcmtl
ZC4KKworICAgICAgICAgVGhlIGN1cnJlbnQgc29sdXRpb24gaXMgdG8ga2VlcCBhIGxvY2FsIGNv
cHkgb2YgdGhlIGluZGV4CisgICAgICAgICBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGluIHRoZSBz
Y29wZSBvZiBlYWNoIGluc3RydWN0aW9uLgorICAgICAgICAgVGhhdCBpcyBkb25lIGJ5IEFzc2Vt
YmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIuCisKKyAgICAgICAgIFNpbmNlIExvY2FsV3JpdGVyIG9u
bHkgZXhpc3RzIGxvY2FsbHksIGl0IHN0YXlzIGluCisgICAgICAgICByZWdpc3RlciBhbmQgd2Ug
ZG9uJ3QgaGF2ZSBhbGwgdGhlIG1lbW9yeSBjaHVybiBiZXR3ZWVuCisgICAgICAgICBlYWNoIGJ5
dGUgd3JpdGluZy4gVGhpcyBhbHNvIGFsbG93cyBjbGFuZyB0byBjb21iaW5lCisgICAgICAgICBv
YnZpb3VzIGNhc2VzIHNpbmNlIHRoZXJlIGFyZSBubyBsb25nZXIgb2JzZXJ2YWJsZSBzaWRlCisg
ICAgICAgICBlZmZlY3RzIGJldHdlZW4gYnl0ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWR1
Y2VzIHRoZSBiaW5hcnkgc2l6ZSBieSA2NmsuIEl0IGlzIGEgc21hbGwKKyAgICAgICAgc3BlZWQt
dXAgb24gU3Vuc3BpZGVyLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
OgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OmVuc3VyZVNwYWNlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6TG9jYWxXcml0ZXIpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjp+TG9jYWxXcml0ZXIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpwdXRCeXRlVW5jaGVja2Vk
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjpMb2NhbFdyaXRlcjo6cHV0U2hvcnRV
bmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpw
dXRJbnRVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3Jp
dGVyOjpwdXRJbnQ2NFVuY2hlY2tlZCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6
TG9jYWxXcml0ZXI6OnB1dEludGVncmFsVW5jaGVja2VkKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bGVyQnVmZmVyOjpwdXRJbnRlZ3JhbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6
b3V0T2ZMaW5lR3Jvdyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmg6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpieXRlUmVnUmVxdWlyZXNS
ZXgpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVy
OjpyZWdSZXF1aXJlc1JleCk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1
Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjpMb2NhbEJ1ZmZlcldyaXRlcik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2Fs
QnVmZmVyV3JpdGVyOjplbWl0UmV4KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJ
bnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZmZXJXcml0ZXI6OmVtaXRSZXhXKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TG9jYWxCdWZm
ZXJXcml0ZXI6OmVtaXRSZXhJZik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5z
dHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjplbWl0UmV4SWZOZWVkZWQpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2Nh
bEJ1ZmZlcldyaXRlcjo6cHV0TW9kUm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4
Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2NhbEJ1ZmZlcldyaXRlcjo6cHV0TW9kUm1TaWIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpMb2Nh
bEJ1ZmZlcldyaXRlcjo6cmVnaXN0ZXJNb2RSTSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OkxvY2FsQnVmZmVyV3JpdGVyOjptZW1vcnlNb2RS
TSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6
Om9uZUJ5dGVPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5z
dHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcF9kaXNwMzIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpvbmVCeXRlT3BfZGlz
cDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9u
Rm9ybWF0dGVyOjp0d29CeXRlT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0aHJlZUJ5dGVPcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVP
cDY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlv
bkZvcm1hdHRlcjo6b25lQnl0ZU9wNjRfZGlzcDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6b25lQnl0ZU9wNjRfZGlzcDgp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9y
bWF0dGVyOjp0d29CeXRlT3A2NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6Om9uZUJ5dGVPcDgpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjp0d29CeXRlT3A4
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZv
cm1hdHRlcjo6ZW1pdFJleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OmVtaXRSZXhXKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6ZW1pdFJleElmKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRl
cjo6ZW1pdFJleElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6cHV0TW9kUm0pOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpwdXRNb2RSbVNpYik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3Jt
YXR0ZXI6OnJlZ2lzdGVyTW9kUk0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjptZW1vcnlNb2RSTSk6IERlbGV0ZWQuCisKIDIw
MTYtMDMtMjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVTNidz
IHRocm93aW5nIG9mIFR5cGVFcnJvcnMgb24gYWNjZXNzIG9mIFJlZ0V4cC5wcm90b3R5cGUgZmxh
ZyBwcm9wZXJ0aWVzIGJyZWFrcyB3ZWJzaXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCmluZGV4IGQ5NTQ2OTMxZDg1NTA4MjdhMzQ1
ODkzN2YxN2ZhNzgzYjBjNjI5ZjAuLjlkMWY0ZWY5MGUyNTg1OGI3MzI1OWY4OTVmNzA3Y2QxZjJk
MzhkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuaApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgaXNBdmFpbGFibGUoaW50IHNwYWNlKQorICAg
ICAgICBib29sIGlzQXZhaWxhYmxlKHVuc2lnbmVkIHNwYWNlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9pbmRleCArIHNwYWNlIDw9IG1fc3RvcmFnZS5jYXBhY2l0eSgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBlbnN1cmVTcGFjZShpbnQgc3BhY2UpCisgICAgICAgIHZv
aWQgZW5zdXJlU3BhY2UodW5zaWduZWQgc3BhY2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghaXNBdmFpbGFibGUoc3BhY2UpKQotICAgICAgICAgICAgICAgIGdyb3coKTsKKyAgICAgICAg
ICAgICAgICBvdXRPZkxpbmVHcm93KCk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzQWxp
Z25lZChpbnQgYWxpZ25tZW50KSBjb25zdApAQCAtMTY1LDEzICsxNjUsNjMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgQXNzZW1ibGVyRGF0YSByZWxlYXNlQXNzZW1ibGVyRGF0YSgpIHsg
cmV0dXJuIFdURk1vdmUobV9zdG9yYWdlKTsgfQogCisgICAgICAgIC8vIExvY2FsV3JpdGVyIGlz
IGEgdHJpY2sgdG8ga2VlcCB0aGUgc3RvcmFnZSBidWZmZXIgYW5kIHRoZSBpbmRleAorICAgICAg
ICAvLyBpbiBtZW1vcnkgd2hpbGUgaXNzdWluZyBtdWx0aXBsZSBTdG9yZXMuCisgICAgICAgIC8v
IEl0IGlzIGNyZWF0ZWQgaW4gYSBibG9jayBzY29wZSBhbmQgaXRzIGF0dHJpYnV0ZSBjYW4gc3Rh
eSBsaXZlCisgICAgICAgIC8vIGJldHdlZW4gd3JpdGVzLgorICAgICAgICAvLworICAgICAgICAv
LyBMb2NhbFdyaXRlciAqQ0FOTk9UKiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzIG9mIGFjY2Vz
cyB0byBBc3NlbWJsZXJCdWZmZXIuCisgICAgICAgIC8vIEFzc2VtYmxlckJ1ZmZlciBjYW5ub3Qg
YmUgdXNlZCB1bnRpbCBpdHMgTG9jYWxXcml0ZXIgZ29lcyBvdXQgb2Ygc2NvcGUuCisgICAgICAg
IGNsYXNzIExvY2FsV3JpdGVyIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgTG9jYWxX
cml0ZXIoQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIHJlcXVpcmVkU3BhY2UpCisg
ICAgICAgICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgYnVmZmVyLmVuc3VyZVNwYWNlKHJlcXVpcmVkU3BhY2UpOworICAgICAgICAgICAg
ICAgIG1fc3RvcmFnZUJ1ZmZlciA9IGJ1ZmZlci5tX3N0b3JhZ2UuYnVmZmVyKCk7CisgICAgICAg
ICAgICAgICAgbV9pbmRleCA9IGJ1ZmZlci5tX2luZGV4OworI2lmICFkZWZpbmVkKE5ERUJVRykK
KyAgICAgICAgICAgICAgICBtX2luaXRpYWxJbmRleCA9IG1faW5kZXg7CisgICAgICAgICAgICAg
ICAgbV9yZXF1aXJlZFNwYWNlID0gcmVxdWlyZWRTcGFjZTsKKyNlbmRpZgorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB+TG9jYWxXcml0ZXIoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2luZGV4IC0gbV9pbml0aWFsSW5kZXggPD0gbV9yZXF1aXJlZFNwYWNl
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXIubV9pbmRleCA9PSBtX2luaXRpYWxJ
bmRleCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fc3RvcmFnZUJ1ZmZlciA9PSBtX2J1ZmZl
ci5tX3N0b3JhZ2UuYnVmZmVyKCkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyLm1faW5kZXgg
PSBtX2luZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2b2lkIHB1dEJ5dGVVbmNo
ZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQorICAg
ICAgICAgICAgdm9pZCBwdXRTaG9ydFVuY2hlY2tlZChpbnQxNl90IHZhbHVlKSB7IHB1dEludGVn
cmFsVW5jaGVja2VkKHZhbHVlKTsgfQorICAgICAgICAgICAgdm9pZCBwdXRJbnRVbmNoZWNrZWQo
aW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAgICAg
ICAgIHZvaWQgcHV0SW50NjRVbmNoZWNrZWQoaW50NjRfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVu
Y2hlY2tlZCh2YWx1ZSk7IH0KKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEludGVncmFsVHlwZT4KKyAgICAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWxVbmNo
ZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFTU0VSVChtX2luZGV4ICsgc2l6ZW9mKEludGVncmFsVHlwZSkgPD0gbV9idWZmZXIubV9zdG9y
YWdlLmNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0X3B0cjxJ
bnRlZ3JhbFR5cGUqPihtX3N0b3JhZ2VCdWZmZXIgKyBtX2luZGV4KSA9IHZhbHVlOworICAgICAg
ICAgICAgICAgIG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlwZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBc3NlbWJsZXJCdWZmZXImIG1fYnVmZmVyOworICAgICAgICAgICAgY2hh
ciogbV9zdG9yYWdlQnVmZmVyOworICAgICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKKyNpZiAh
ZGVmaW5lZChOREVCVUcpCisgICAgICAgICAgICB1bnNpZ25lZCBtX2luaXRpYWxJbmRleDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG1fcmVxdWlyZWRTcGFjZTsKKyNlbmRpZgorICAgICAgICB9Owor
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+
CiAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWwoSW50ZWdyYWxUeXBlIHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSBtX2luZGV4ICsgc2l6ZW9mKEludGVn
cmFsVHlwZSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobmV4dEluZGV4ID4gbV9zdG9yYWdl
LmNhcGFjaXR5KCkpKQotICAgICAgICAgICAgICAgIGdyb3coKTsKKyAgICAgICAgICAgICAgICBv
dXRPZkxpbmVHcm93KCk7CiAgICAgICAgICAgICBBU1NFUlQoaXNBdmFpbGFibGUoc2l6ZW9mKElu
dGVncmFsVHlwZSkpKTsKICAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0X3B0cjxJbnRlZ3Jh
bFR5cGUqPihtX3N0b3JhZ2UuYnVmZmVyKCkgKyBtX2luZGV4KSA9IHZhbHVlOwogICAgICAgICAg
ICAgbV9pbmRleCA9IG5leHRJbmRleDsKQEAgLTIwMCw2ICsyNTAsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lk
IG91dE9mTGluZUdyb3coKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0b3JhZ2UuZ3Jvdygp
OworICAgICAgICB9CisKKyAgICAgICAgZnJpZW5kIExvY2FsV3JpdGVyOworCiAgICAgICAgIEFz
c2VtYmxlckRhdGEgbV9zdG9yYWdlOwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNDBlNDhkMDEzMjVlZTUzOWZmNjk3Y2QzYzk3ZGI5MmUz
Y2EwYjAwZC4uNjhjYjgwOTNhMGE1OWUzNGNhYjVmMzMwM2E2MTcyNzZhOGUwMzdlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaApAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
ICAgICBtX2Fzc2VtYmxlci5sZWFsX21yKGluZGV4Lm9mZnNldCwgaW5kZXguYmFzZSwgaW5kZXgu
aW5kZXgsIGluZGV4LnNjYWxlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGFuZDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRsX3JyKHNyYywgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaAppbmRleCA4NTdkMjJiYTYyNDY0NzUxZmM1ZGJlODU4NzhmMTJm
MmY2MDNmYTg5Li41ZWJmMGE2NTEwZjUzMzUwMTQwNDExNDZmNWI3NzQzNzdmMDFjN2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI4
NTIsMTYgKzI4NTIsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBjbGFzcyBYODZJbnN0cnVj
dGlvbkZvcm1hdHRlciB7Ci0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhJbnN0cnVjdGlv
blNpemUgPSAxNjsKIAogICAgIHB1YmxpYzoKLQogICAgICAgICBlbnVtIE1vZFJtTW9kZSB7Ci0g
ICAgICAgICAgICBNb2RSbU1lbW9yeU5vRGlzcCwKLSAgICAgICAgICAgIE1vZFJtTWVtb3J5RGlz
cDgsCi0gICAgICAgICAgICBNb2RSbU1lbW9yeURpc3AzMiwKLSAgICAgICAgICAgIE1vZFJtUmVn
aXN0ZXIsCisgICAgICAgICAgICBNb2RSbU1lbW9yeU5vRGlzcCA9IDAsCisgICAgICAgICAgICBN
b2RSbU1lbW9yeURpc3A4ID0gMSA8PCA2LAorICAgICAgICAgICAgTW9kUm1NZW1vcnlEaXNwMzIg
PSAyIDw8IDYsCisgICAgICAgICAgICBNb2RSbVJlZ2lzdGVyID0gMyA8PCA2LAogICAgICAgICB9
OwogCiAgICAgICAgIC8vIExlZ2FjeSBwcmVmaXggYnl0ZXM6CkBAIC0yODczLDYgKzI4NzEsMjA1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlKHByZSk7CiAgICAgICAg
IH0KIAorI2lmIENQVShYODZfNjQpCisgICAgICAgIC8vIEJ5dGUgb3BlcmFuZCByZWdpc3RlciBz
cGwgJiBhYm92ZSByZXF1aXJlIGEgUkVYIHByZWZpeCAodG8gcHJldmVudCB0aGUgJ0gnIHJlZ2lz
dGVycyBiZSBhY2Nlc3NlZCkuCisgICAgICAgIHN0YXRpYyBib29sIGJ5dGVSZWdSZXF1aXJlc1Jl
eChpbnQgcmVnKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KFg4NlJlZ2lz
dGVyczo6ZXNwID09IDQsICJOZWNlc3NhcnkgY29uZGl0aW9uIGZvciBPUi1tYXNraW5nIik7Cisg
ICAgICAgICAgICByZXR1cm4gKHJlZyA+PSBYODZSZWdpc3RlcnM6OmVzcCk7CisgICAgICAgIH0K
KyAgICAgICAgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVSZWdSZXF1aXJlc1JleChhIHwgYik7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlcnMgcjggJiBhYm92ZSByZXF1aXJlIGEgUkVY
IHByZWZpeGUuCisgICAgICAgIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCByZWcpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoWDg2UmVnaXN0ZXJzOjpyOCA9PSA4
LCAiTmVjZXNzYXJ5IGNvbmRpdGlvbiBmb3IgT1ItbWFza2luZyIpOworICAgICAgICAgICAgcmV0
dXJuIChyZWcgPj0gWDg2UmVnaXN0ZXJzOjpyOCk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGlj
IGJvb2wgcmVnUmVxdWlyZXNSZXgoaW50IGEsIGludCBiKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gcmVnUmVxdWlyZXNSZXgoYSB8IGIpOworICAgICAgICB9CisgICAgICAgIHN0YXRp
YyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYiwgaW50IGMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiByZWdSZXF1aXJlc1JleChhIHwgYiB8IGMpOworICAgICAgICB9Cisj
ZWxzZQorICAgICAgICBzdGF0aWMgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50KSB7IHJldHVy
biBmYWxzZTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50LCBp
bnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4
KGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgcmVnUmVxdWlyZXNS
ZXgoaW50LCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHN0YXRpYyBib29sIHJlZ1Jl
cXVpcmVzUmV4KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworICAg
ICAgICBjbGFzcyBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciA6IHB1YmxpYyBBc3NlbWJs
ZXJCdWZmZXI6OkxvY2FsV3JpdGVyIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgU2lu
Z2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIoQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIpCisgICAg
ICAgICAgICAgICAgOiBBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyKGJ1ZmZlciwgbWF4SW5z
dHJ1Y3Rpb25TaXplKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBJbnRlcm5hbHM7IE1vZFJtIGFuZCBSRVggZm9ybWF0dGVycy4KKworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIG5vQmFzZSA9IFg4NlJlZ2lzdGVyczo6ZWJwOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGhhc1NpYiA9IFg4NlJlZ2lz
dGVyczo6ZXNwOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIG5vSW5k
ZXggPSBYODZSZWdpc3RlcnM6OmVzcDsKKworI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbm9CYXNlMiA9IFg4NlJlZ2lzdGVyczo6cjEzOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGhhc1NpYjIgPSBYODZSZWdp
c3RlcnM6OnIxMjsKKworICAgICAgICAgICAgLy8gRm9ybWF0IGEgUkVYIHByZWZpeCBieXRlLgor
ICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGVtaXRSZXgoYm9vbCB3LCBpbnQgciwgaW50
IHgsIGludCBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChyID49IDAp
OworICAgICAgICAgICAgICAgIEFTU0VSVCh4ID49IDApOworICAgICAgICAgICAgICAgIEFTU0VS
VChiID49IDApOworICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQoUFJFX1JFWCB8ICgo
aW50KXcgPDwgMykgfCAoKHI+PjMpPDwyKSB8ICgoeD4+Myk8PDEpIHwgKGI+PjMpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVXNlZCB0byBwbGFudCBhIFJFWCBieXRlIHdpdGgg
UkVYLncgc2V0IChmb3IgNjQtYml0IG9wZXJhdGlvbnMpLgorICAgICAgICAgICAgQUxXQVlTX0lO
TElORSB2b2lkIGVtaXRSZXhXKGludCByLCBpbnQgeCwgaW50IGIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZW1pdFJleCh0cnVlLCByLCB4LCBiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVXNlZCBmb3Igb3BlcmF0aW9ucyB3aXRoIGJ5dGUgb3BlcmFuZHMgLSB1
c2UgYnl0ZVJlZ1JlcXVpcmVzUmV4KCkgdG8gY2hlY2sgcmVnaXN0ZXIgb3BlcmFuZHMsCisgICAg
ICAgICAgICAvLyByZWdSZXF1aXJlc1JleCgpIHRvIGNoZWNrIG90aGVyIHJlZ2lzdGVycyAoaS5l
LiBhZGRyZXNzIGJhc2UgJiBpbmRleCkuCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZW1pdFJleElmKGJvb2wgY29uZGl0aW9uLCBpbnQgciwgaW50IHgsIGludCBiKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24pCisgICAgICAgICAgICAgICAgICAg
IGVtaXRSZXgoZmFsc2UsIHIsIHgsIGIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBVc2VkIGZvciB3b3JkIHNpemVkIG9wZXJhdGlvbnMsIHdpbGwgcGxhbnQgYSBSRVggcHJlZml4
IGlmIG5lY2Vzc2FyeSAoaWYgYW55IHJlZ2lzdGVyIGlzIHI4IG9yIGFib3ZlKS4KKyAgICAgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlbWl0UmV4SWZOZWVkZWQoaW50IHIsIGludCB4LCBpbnQg
YikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbWl0UmV4SWYocmVnUmVxdWlyZXNS
ZXgociwgeCwgYiksIHIsIHgsIGIpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAg
IC8vIE5vIFJFWCBwcmVmaXggYnl0ZXMgb24gMzItYml0IHg4Ni4KKyAgICAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBlbWl0UmV4SWYoYm9vbCwgaW50LCBpbnQsIGludCkgeyB9CisgICAgICAg
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZW1pdFJleElmTmVlZGVkKGludCwgaW50LCBpbnQpIHsg
fQorI2VuZGlmCisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRNb2RSbShNb2RS
bU1vZGUgbW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG1vZGUgfCAoKHJlZyAmIDcpIDw8IDMpIHwgKHJt
ICYgNykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cHV0TW9kUm1TaWIoTW9kUm1Nb2RlIG1vZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFTU0VSVChtb2RlICE9IE1vZFJtUmVnaXN0ZXIpOworCisgICAgICAgICAgICAgICAgcHV0TW9k
Um0obW9kZSwgcmVnLCBoYXNTaWIpOworICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQo
KHNjYWxlIDw8IDYpIHwgKChpbmRleCAmIDcpIDw8IDMpIHwgKGJhc2UgJiA3KSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZWdpc3Rlck1vZFJNKGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHV0
TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklEIGJh
c2UsIGludCBvZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQSBiYXNl
IG9mIGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEg
c2liIHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFzU2liKSB8fCAoYmFzZSA9PSBoYXNT
aWIyKSkgeworI2Vsc2UKKyAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNTaWIpIHsKKyNl
bmRpZgorICAgICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCkgLy8gTm8gbmVlZCB0byBjaGVj
ayBpZiB0aGUgYmFzZSBpcyBub0Jhc2UsIHNpbmNlIHdlIGtub3cgaXQgaXMgaGFzU2liIQorICAg
ICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywg
YmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJt
U2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1l
bW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIW9mZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpICYmIChiYXNlICE9IG5vQmFzZTIpKQor
I2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNl
KSkKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlO
b0Rpc3AsIHJlZywgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJt
KE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBw
dXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBi
YXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDgoaW50IHJl
ZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIC8vIEEgYmFzZSBvZiBlc3Agb3IgcjEyIHdvdWxkIGJlIGludGVycHJldGVkIGFzIGEg
c2liLCBzbyBmb3JjZSBhIHNpYiB3aXRoIG5vIGluZGV4ICYgcHV0IHRoZSBiYXNlIGluIHRoZXJl
LgorICAgICAgICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKTsK
KyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8
IChiYXNlID09IGhhc1NpYjIpKSB7CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChiYXNlID09
IGhhc1NpYikgeworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJt
TWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7CisgICAgICAgICAgICAgICAgICAg
IHB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UpOwor
ICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bWVtb3J5TW9kUk1fZGlzcDMyKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3
b3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNpYiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRl
eCAmIHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4KKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAg
ICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7CisjZWxzZQor
ICAgICAgICAgICAgICAgIGlmIChiYXNlID09IGhhc1NpYikgeworI2VuZGlmCisgICAgICAgICAg
ICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UsIG5vSW5k
ZXgsIDApOworICAgICAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RS
bU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0SW50VW5j
aGVja2VkKG9mZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm9JbmRleCk7
CisKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNl
ICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCisjZWxzZQorICAgICAgICAgICAgICAg
IGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkpCisjZW5kaWYKKyAgICAgICAgICAgICAg
ICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwgaW5kZXgsIHNj
YWxlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZz
ZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgs
IHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVu
Y2hlY2tlZChvZmZzZXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDMyLCByZWcsIGJhc2UsIGluZGV4LCBz
Y2FsZSk7CisgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZzZXQpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworI2lmICFDUFUoWDg2XzY0KQorICAgICAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCByZWcsIGNvbnN0IHZvaWQq
IGFkZHJlc3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gbm9CYXNlICsgTW9k
Um1NZW1vcnlOb0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1vcnlEaXNwMzIhCisgICAgICAg
ICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgbm9CYXNlKTsKKyAgICAg
ICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihhZGRy
ZXNzKSk7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfTsKKwogICAgICAgICAvLyBX
b3JkLXNpemVkIG9wZXJhbmRzIC8gbm8gb3BlcmFuZCBpbnN0cnVjdGlvbiBmb3JtYXR0ZXJzLgog
ICAgICAgICAvLwogICAgICAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgb3Bjb2RlLCB0aGUgZm9s
bG93aW5nIG9wZXJhbmQgcGVybXV0YXRpb25zIGFyZSBzdXBwb3J0ZWQ6CkBAIC0yODg5LDEzNiAr
MzA4NiwxMzYgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bj
b2RlSUQgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFj
ZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBSZWdpc3RlcklEIHJlZykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJ
Zk5lZWRlZCgwLCAwLCByZWcpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tl
ZChvcGNvZGUgKyAocmVnICYgNykpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZO
ZWVkZWQoMCwgMCwgcmVnKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSArIChyZWcgJiA3KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcChP
bmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwot
ICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RS
TShyZWcsIHJtKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywg
MCwgcm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAg
ICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVn
aXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElm
TmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7
CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwor
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAg
IHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIG9uZUJ5dGVPcF9kaXNwMzIoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1p
dFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRl
VW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTV9kaXNwMzIocmVnLCBi
YXNlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVn
LCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDMyKHJlZywgYmFzZSwgb2Zmc2V0
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBvbmVCeXRlT3BfZGlzcDgoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVj
dGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAg
ICBtZW1vcnlNb2RSTV9kaXNwOChyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5n
bGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAg
d3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RS
TV9kaXNwOChyZWcsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9u
ZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAg
ICAgICAgIGVtaXRSZXhJZk5lZWRlZChyZWcsIGluZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5z
dHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRl
ci5lbWl0UmV4SWZOZWVkZWQocmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIu
cHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICNpZiAhQ1BV
KFg4Nl82NCkKICAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwg
aW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJl
ZywgYWRkcmVzcyk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGFkZHJlc3MpOwogICAg
ICAgICB9CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQg
b3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJ
bnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChP
UF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVy
KG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRF
X0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3AoVHdvQnl0ZU9wY29kZUlEIG9wY29k
ZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJ
Zk5lZWRlZChyZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAg
ICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAg
ICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIDAsIHJtKTsKKyAgICAgICAgICAg
IHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lz
dGVyTW9kUk0ocmVnLCBybSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChU
d29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZz
ZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3Ry
dWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsK
LSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsK
LSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAg
ICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcs
IGJhc2UsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29C
eXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRS
ZXhJZk5lZWRlZChyZWcsIGluZGV4LCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5
dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZO
ZWVkZWQocmVnLCBpbmRleCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAjaWYgIUNQVShYODZfNjQpCiAgICAg
ICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIGNvbnN0
IHZvaWQqIGFkZHJlc3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNw
YWNlKG1heEluc3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGFkZHJlc3MpOwor
ICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVy
KTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAg
ICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KICNlbmRpZgog
CiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0ZU9wY29kZUlEIHR3b0J5dGVQcmVmaXgs
IFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5w
dXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKHR3b0J5dGVQcmVmaXgpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQob3Bjb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0
ZU9wY29kZUlEIHR3b0J5dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJl
ZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJl
U3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZk5lZWRlZChy
ZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0
ZVByZWZpeCk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAgICAgU2luZ2xl
SW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdy
aXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBy
bSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJ
RCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lz
dGVySUQgYmFzZSwgaW50IGRpc3BsYWNlbWVudCkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRS
ZXhJZk5lZWRlZChyZWcsIDAsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZCh0d29CeXRlUHJlZml4KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNo
ZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNKHJlZywgYmFzZSwgZGlzcGxh
Y2VtZW50KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRl
cihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwg
YmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NB
UEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZpeCk7
CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAg
ICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgZGlzcGxhY2VtZW50KTsKICAgICAgICAg
fQogCiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTMwMzAsODMgKzMyMjcsODMgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSk7
Ci0gICAgICAgICAgICBlbWl0UmV4VygwLCAwLCAwKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVm
ZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFco
MCwgMCwgMCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bj
b2RlLCBSZWdpc3RlcklEIHJlZykKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5z
dXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKDAsIDAs
IHJlZyk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChy
ZWcgJiA3KSk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0
ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKDAsIDAsIHJlZyk7Cisg
ICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykpOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bj
b2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJl
eFcocmVnLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKHJlZywgcm0pOworICAgICAgICAgICAg
U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAg
ICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShy
ZWcsIHJtKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjQoT25lQnl0ZU9w
Y29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNp
emUpOwotICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJN
KHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVy
V3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVn
LCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NF9kaXNwMzIoT25lQnl0ZU9wY29kZUlE
IG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwot
ICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1lbW9yeU1vZFJNX2Rpc3Az
MihyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZl
cldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJl
ZywgMCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
OworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNX2Rpc3AzMihyZWcsIGJhc2UsIG9mZnNl
dCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgb25lQnl0ZU9wNjRfZGlzcDgo
T25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zm
c2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0
cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKLSAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIG1l
bW9yeU1vZFJNX2Rpc3A4KHJlZywgYmFzZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0
ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1fZGlzcDgocmVn
LCBiYXNlLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChP
bmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAg
bV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVt
aXRSZXhXKHJlZywgaW5kZXgsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldy
aXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywg
aW5kZXgsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2Rl
KTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wNjQoVHdvQnl0
ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAg
ICAgICAgIGVtaXRSZXhXKHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0
ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsK
KyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZl
cik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBybSk7CisgICAgICAgICAg
ICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOworICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAgICAgICAgIHdyaXRlci5yZWdp
c3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A2
NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBv
ZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heElu
c3RydWN0aW9uU2l6ZSk7Ci0gICAgICAgICAgICBlbWl0UmV4VyhyZWcsIDAsIGJhc2UpOwotICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOwotICAg
ICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAg
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgU2luZ2xlSW5zdHJ1
Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci5l
bWl0UmV4VyhyZWcsIDAsIGJhc2UpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNr
ZWQoT1BfMkJZVEVfRVNDQVBFKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2Vk
KG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZz
ZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5z
dXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhXKHJlZywg
aW5kZXgsIGJhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8y
QllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOwotICAgICAgICAgICAgbWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIo
bV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywgaW5kZXgsIGJhc2Up
OworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsK
KyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7CisgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAg
ICAgICAgIH0KICNlbmRpZgogCkBAIC0zMTM3LDUyICszMzM0LDUyIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIEdyb3VwT3Bjb2Rl
SUQgZ3JvdXBPcCwgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJ
ZihieXRlUmVnUmVxdWlyZXNSZXgocm0pLCAwLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJNKGdy
b3VwT3AsIHJtKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1
aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7CisgICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShncm91cE9wLCBy
bSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlE
IG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAg
bV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVt
aXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgocm0p
LCByZWcsIDAsIHJtKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7CisgICAgICAgICAgICBT
aW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAg
ICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBybSksIHJlZywgMCwg
cm0pOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsKKyAgICAg
ICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lz
dGVySUQgYmFzZSwgaW50IG9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
ZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRSZXhJZihi
eXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCBieXRlUmVnUmVxdWlyZXNSZXgoYmFzZSksIHJlZywg
MCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAg
ICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAg
ICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVn
LCAwLCBiYXNlKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOwogICAg
ICAgICB9CiAKICAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUs
IGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBp
bnQgb2Zmc2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZSht
YXhJbnN0cnVjdGlvblNpemUpOwotICAgICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJl
c1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4KSB8fCByZWdSZXF1aXJlc1JleChiYXNl
KSwgcmVnLCBpbmRleCwgYmFzZSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7Ci0gICAgICAgICAgICBtZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChyZWcpIHx8IHJlZ1JlcXVpcmVzUmV4KGluZGV4LCBiYXNlKSwgcmVnLCBpbmRl
eCwgYmFzZSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwor
ICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNv
ZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUpOwotICAg
ICAgICAgICAgZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcpfGJ5dGVSZWdSZXF1aXJl
c1JleChybSksIHJlZywgMCwgcm0pOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChPUF8yQllURV9FU0NBUEUpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOwotICAgICAgICAgICAgcmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsKKyAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7Cisg
ICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIHJtKSwg
cmVnLCAwLCBybSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllU
RV9FU0NBUEUpOworICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsK
KyAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rlck1vZFJNKHJlZywgcm0pOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCB0d29CeXRlT3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIEdyb3VwT3Bj
b2RlSUQgZ3JvdXBPcCwgUmVnaXN0ZXJJRCBybSkKICAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAgICAgIGVtaXRS
ZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocm0pLCAwLCAwLCBybSk7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICByZWdpc3Rlck1vZFJN
KGdyb3VwT3AsIHJtKTsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVSZWdS
ZXF1aXJlc1JleChybSksIDAsIDAsIHJtKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwg
cm0pOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSW1tZWRpYXRlczoKQEAgLTMyMjUsMTc3ICsz
NDIyLDYgQEAgcHJpdmF0ZToKIAogICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0
dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KIAotICAgIHByaXZhdGU6Ci0KLSAgICAgICAg
Ly8gSW50ZXJuYWxzOyBNb2RSbSBhbmQgUkVYIGZvcm1hdHRlcnMuCi0KLSAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgbm9CYXNlID0gWDg2UmVnaXN0ZXJzOjplYnA7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGhhc1NpYiA9IFg4NlJlZ2lzdGVyczo6ZXNwOwotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBub0luZGV4ID0gWDg2UmVnaXN0ZXJzOjplc3A7Ci0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9CYXNlMiA9
IFg4NlJlZ2lzdGVyczo6cjEzOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBoYXNT
aWIyID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0KLSAgICAgICAgLy8gUmVnaXN0ZXJzIHI4ICYgYWJv
dmUgcmVxdWlyZSBhIFJFWCBwcmVmaXhlLgotICAgICAgICBpbmxpbmUgYm9vbCByZWdSZXF1aXJl
c1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHJlZyA+PSBYODZS
ZWdpc3RlcnM6OnI4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEJ5dGUgb3BlcmFuZCByZWdp
c3RlciBzcGwgJiBhYm92ZSByZXF1aXJlIGEgUkVYIHByZWZpeCAodG8gcHJldmVudCB0aGUgJ0gn
IHJlZ2lzdGVycyBiZSBhY2Nlc3NlZCkuCi0gICAgICAgIGlubGluZSBib29sIGJ5dGVSZWdSZXF1
aXJlc1JleChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHJlZyA+PSBY
ODZSZWdpc3RlcnM6OmVzcCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JtYXQgYSBSRVgg
cHJlZml4IGJ5dGUuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXgoYm9vbCB3LCBpbnQgciwg
aW50IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQociA+PSAwKTsKLSAg
ICAgICAgICAgIEFTU0VSVCh4ID49IDApOwotICAgICAgICAgICAgQVNTRVJUKGIgPj0gMCk7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKFBSRV9SRVggfCAoKGludCl3IDw8
IDMpIHwgKChyPj4zKTw8MikgfCAoKHg+PjMpPDwxKSB8IChiPj4zKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBVc2VkIHRvIHBsYW50IGEgUkVYIGJ5dGUgd2l0aCBSRVgudyBzZXQgKGZvciA2
NC1iaXQgb3BlcmF0aW9ucykuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhXKGludCByLCBp
bnQgeCwgaW50IGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRSZXgodHJ1ZSwgciwgeCwg
Yik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2VkIGZvciBvcGVyYXRpb25zIHdpdGggYnl0
ZSBvcGVyYW5kcyAtIHVzZSBieXRlUmVnUmVxdWlyZXNSZXgoKSB0byBjaGVjayByZWdpc3RlciBv
cGVyYW5kcywKLSAgICAgICAgLy8gcmVnUmVxdWlyZXNSZXgoKSB0byBjaGVjayBvdGhlciByZWdp
c3RlcnMgKGkuZS4gYWRkcmVzcyBiYXNlICYgaW5kZXgpLgotICAgICAgICBpbmxpbmUgdm9pZCBl
bWl0UmV4SWYoYm9vbCBjb25kaXRpb24sIGludCByLCBpbnQgeCwgaW50IGIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChjb25kaXRpb24pIGVtaXRSZXgoZmFsc2UsIHIsIHgsIGIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gVXNlZCBmb3Igd29yZCBzaXplZCBvcGVyYXRpb25zLCB3aWxs
IHBsYW50IGEgUkVYIHByZWZpeCBpZiBuZWNlc3NhcnkgKGlmIGFueSByZWdpc3RlciBpcyByOCBv
ciBhYm92ZSkuCi0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhJZk5lZWRlZChpbnQgciwgaW50
IHgsIGludCBiKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0UmV4SWYocmVnUmVxdWlyZXNS
ZXgocikgfHwgcmVnUmVxdWlyZXNSZXgoeCkgfHwgcmVnUmVxdWlyZXNSZXgoYiksIHIsIHgsIGIp
OwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvLyBObyBSRVggcHJlZml4IGJ5dGVzIG9uIDMy
LWJpdCB4ODYuCi0gICAgICAgIGlubGluZSBib29sIHJlZ1JlcXVpcmVzUmV4KGludCkgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5lIGJvb2wgYnl0ZVJlZ1JlcXVpcmVzUmV4KGludCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdFJleElmKGJvb2wsIGlu
dCwgaW50LCBpbnQpIHt9Ci0gICAgICAgIGlubGluZSB2b2lkIGVtaXRSZXhJZk5lZWRlZChpbnQs
IGludCwgaW50KSB7fQotI2VuZGlmCi0KLSAgICAgICAgdm9pZCBwdXRNb2RSbShNb2RSbU1vZGUg
bW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIucHV0Qnl0ZVVuY2hlY2tlZCgobW9kZSA8PCA2KSB8ICgocmVnICYgNykgPDwgMykgfCAo
cm0gJiA3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHB1dE1vZFJtU2liKE1vZFJtTW9k
ZSBtb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1vZGUgIT0gTW9kUm1SZWdpc3Rl
cik7Ci0KLSAgICAgICAgICAgIHB1dE1vZFJtKG1vZGUsIHJlZywgaGFzU2liKTsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQoKHNjYWxlIDw8IDYpIHwgKChpbmRleCAmIDcp
IDw8IDMpIHwgKGJhc2UgJiA3KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJlZ2lzdGVy
TW9kUk0oaW50IHJlZywgUmVnaXN0ZXJJRCBybSkKLSAgICAgICAgewotICAgICAgICAgICAgcHV0
TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IG1lbW9yeU1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gQSBiYXNlIG9mIGVzcCBvciByMTIgd291bGQgYmUgaW50ZXJw
cmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2liIHdpdGggbm8gaW5kZXggJiBwdXQgdGhlIGJh
c2UgaW4gdGhlcmUuCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGlmICgoYmFzZSA9PSBo
YXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGJh
c2UgPT0gaGFzU2liKSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCkgLy8g
Tm8gbmVlZCB0byBjaGVjayBpZiB0aGUgYmFzZSBpcyBub0Jhc2UsIHNpbmNlIHdlIGtub3cgaXQg
aXMgaGFzU2liIQotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeU5v
RGlzcCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChD
QU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dE1v
ZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1l
bW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50VW5jaGVja2VkKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIHsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgICAgIGlmICgh
b2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCi0jZWxzZQot
ICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFzZSkpCi0jZW5kaWYK
LSAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFz
ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIob2Zmc2V0
KSkgewotICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcs
IGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRCeXRlVW5jaGVja2VkKG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHV0
TW9kUm0oTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZChvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDgo
aW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBBIGJhc2Ugb2YgZXNwIG9yIHIxMiB3b3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhIHNp
Yiwgc28gZm9yY2UgYSBzaWIgd2l0aCBubyBpbmRleCAmIHB1dCB0aGUgYmFzZSBpbiB0aGVyZS4K
LSAgICAgICAgICAgIEFTU0VSVChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKTsKLSNpZiBD
UFUoWDg2XzY0KQotICAgICAgICAgICAgaWYgKChiYXNlID09IGhhc1NpYikgfHwgKGJhc2UgPT0g
aGFzU2liMikpIHsKLSNlbHNlCi0gICAgICAgICAgICBpZiAoYmFzZSA9PSBoYXNTaWIpIHsKLSNl
bmRpZgotICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywg
YmFzZSwgbm9JbmRleCwgMCk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXRN
b2RSbShNb2RSbU1lbW9yeURpc3A4LCByZWcsIGJhc2UpOwotICAgICAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgbWVtb3J5TW9kUk1fZGlzcDMyKGludCByZWcsIFJlZ2lzdGVySUQgYmFz
ZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQSBiYXNlIG9mIGVzcCBv
ciByMTIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWIsIHNvIGZvcmNlIGEgc2liIHdpdGgg
bm8gaW5kZXggJiBwdXQgdGhlIGJhc2UgaW4gdGhlcmUuCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAg
ICAgICAgIGlmICgoYmFzZSA9PSBoYXNTaWIpIHx8IChiYXNlID09IGhhc1NpYjIpKSB7Ci0jZWxz
ZQotICAgICAgICAgICAgaWYgKGJhc2UgPT0gaGFzU2liKSB7Ci0jZW5kaWYKLSAgICAgICAgICAg
ICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBub0luZGV4LCAw
KTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlE
aXNwMzIsIHJlZywgYmFzZSk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVj
a2VkKG9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgdm9p
ZCBtZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgaW50IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlu
ZGV4ICE9IG5vSW5kZXgpOwotCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgICAgIGlmICghb2Zm
c2V0ICYmIChiYXNlICE9IG5vQmFzZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpCi0jZWxzZQotICAg
ICAgICAgICAgaWYgKCFvZmZzZXQgJiYgKGJhc2UgIT0gbm9CYXNlKSkKLSNlbmRpZgotICAgICAg
ICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5Tm9EaXNwLCByZWcsIGJhc2UsIGluZGV4
LCBzY2FsZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZz
ZXQpKSB7Ci0gICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwOCwgcmVn
LCBiYXNlLCBpbmRleCwgc2NhbGUpOwotICAgICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEJ5dGVV
bmNoZWNrZWQob2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsK
LSAgICAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0jaWYgIUNQVShYODZfNjQpCi0gICAgICAgIHZvaWQgbWVt
b3J5TW9kUk0oaW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlOb0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1N
ZW1vcnlEaXNwMzIhCi0gICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeU5vRGlzcCwgcmVn
LCBub0Jhc2UpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50VW5jaGVja2VkKHJlaW50ZXJw
cmV0X2Nhc3Q8aW50MzJfdD4oYWRkcmVzcykpOwotICAgICAgICB9Ci0jZW5kaWYKLQogICAgIHB1
YmxpYzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0
ZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>